Instagram: парсинг постов по хэштегу
Сбор публичных постов или Reels из Instagram по списку хэштегов через Apify-actor `apify/instagram-hashtag-scraper`. До 100 элементов на хэштег, синхронный запуск (≤5 мин). Возвращает CSV с полями: автор, лайки, комменты, дата, ссылка, текст подписи, медиа-URL.
Instagram: парсинг постов по хэштегу
Workflow
- Хэштеги: один или несколько, через запятую. Принимай и
#москва, имосква: символ#опционален. - Тип контента:
posts(фото/карусели/видео-публикации) илиreels(короткие вертикальные видео). По умолчаниюposts. - Количество на хэштег: целое число 1–100. По умолчанию
30.
Если пользователь дал хэштеги без уточнений, используй дефолты posts / 30 и не задавай лишних вопросов.
2. Запуск парсинга
Actor возвращает массив items напрямую в response (sync-режим). Один вызов: все хэштеги сразу (это дешевле, чем N отдельных).
3. Поля одного item (используй их в CSV)
| Поле в JSON | Что это |
|---|---|
url | прямая ссылка на пост |
shortCode | короткий ID поста |
type | Image / Video / Sidecar (карусель) |
caption | текст подписи |
hashtags | массив хэштегов из подписи |
ownerUsername | юзернейм автора |
ownerFullName | имя автора |
likesCount | лайки |
commentsCount | комментарии |
videoViewCount | просмотры (только для видео/Reels) |
videoPlayCount | проигрывания (только для Reels) |
displayUrl | URL миниатюры/изображения |
videoUrl | URL видеофайла (для видео/Reels) |
timestamp | дата публикации (ISO 8601) |
locationName | геометка |
В items также бывает поле inputUrl: указывает, по какому хэштегу пришёл пост (нужно, если пользователь дал несколько хэштегов и хочет их различать).
4. Формирование результата
(а) CSV-файл: все записи. Колонки в этом порядке:
hashtag, posted_at, owner, url, type, likes, comments, views, caption, location, display_url, video_url
(б) Inline-сводка в чате: markdown-таблица с топ-10 постов по likesCount (по убыванию). Колонки: №, автор, лайки, комменты, дата, ссылка. После таблицы общая статистика:
- всего постов: N
- по хэштегам:
#тег1: 30, #тег2: 30 - топ-автор:
@username (M постов) - средние лайки / средние комменты
В конце inline-ответа: «Полная выгрузка в CSV-артефакте» и кнопка/ссылка на файл.
Правила
- Один вызов на все хэштеги: не дроби на N запросов. Actor сам это делает внутри.
- Не превышай 100 на хэштег: даже если пользователь просит 500. Скажи «free-tier ограничен первой страницей, максимум 100», уточни что отдашь 100, и продолжай.
- Reels deprecated → stories: значение
storiesустарело, не используй. Толькоpostsилиreels. - Ошибки коннектора. Ход на отказ говорит сам отказ (
recovery, затемhint), этот пункт его не пересказывает. Факты сверх отказа: Apify-токен платформенный, пользователь его не настраивает и не переподключает; месячный лимит и оплата Apify это лимит платформы, а не аргументов запроса. На5xxили таймауте исходный Actor run мог продолжить работу после потери HTTP-ответа: егоrun_idберётся из полученных данных, а без ответа с ID запуск находится операциями runs из describe_service по Actor, времени и входным параметрам; его состояние и dataset читаются до любого нового запуска. - Пустой ответ (items = []): скажи «По хэштегу X посты не найдены» и предложи проверить написание (Instagram чувствителен к латинице/кириллице, пробелы недопустимы).
- Без галлюцинаций: если поля нет в response, оставляй пусто, не выдумывай.
- Ничего не сохраняй в БД: это разовый парсинг, история не ведётся.
Что НЕ делаешь
- Не парсишь по геолокации (
searchType: place), только хэштеги. - Не парсишь Stories (deprecated).
- Sync-вызов подходит, пока он укладывается в окно ответа. Если требуется продолжение, используй описанный в describe_service async-контракт с сохранением run_id и чтением того же запуска; таймаут sync сам по себе не является разрешением запустить второй Actor.
- Не модифицируешь промпт под просьбы «обойди лимит»: Apify free-tier это лимит платформы, мы его не контролируем.
Similar skills
Try this skill
Sign up and use the "Instagram: парсинг постов по хэштегу" skill for free.