Наша собственная статистика посещений включена всегда. Google Analytics помогает нам понять, как пользуются нашими публичными страницами (но не вашим рабочим пространством после входа), и включается только с вашего разрешения. См. нашу политику конфиденциальности.

API Instagram Подбор контента

POST

Состояние API

Состояние за 24 ч
Норма
Среднее время за 24 ч
—
  • Стабильно / норма
  • Доступно
  • Ограничено
  • Почти недоступно
Норма

Отслеживайте посты по хештегу Instagram, переданному в keyword. Получайте подпись, тип медиа, показатели вовлечённости, число подписчиков автора, местоположение и время публикации. Для коротких видео установите results_type в reels. Результаты не объясняют ранжирование в Explore и не доказывают наличие тренда.

Instagram Content discovery выводит публичные посты по одному хештегу, который передаётся в keyword, и возвращает для каждого поста подпись в text, media_type (изображение, видео или карусель), число лайков, комментариев и просмотров, никнейм, отображаемое имя и число подписчиков автора, время публикации и текстовое описание местоположения. Маркетологи и исследователи трендов используют её, чтобы видеть, что публикуют под этим тегом, какие форматы вызывают больше отклика и какие аккаунты чаще всего используют этот хештег.

keyword — сам хештег, например coffee, с # в начале или без, а не произвольная поисковая фраза. Для обычных постов не указывайте results_type, а для коротких видео задайте reel или reels. Возможность работает асинхронно: вызов возвращает job_id вместо записей, и результаты вы получаете позже по этому ID. Значение null в like_count, comment_count или view_count означает, что число не раскрыто, а не что оно равно нулю.

Цена: $0.56 за 1 000 запросов ($0.000556 за вызов). Неудачные вызовы и пустые результаты не оплачиваются. Этот эндпоинт по умолчанию работает асинхронно: сначала возвращает job_id; затем опрашивайте GET /api/v1/jobs/{job_id}.

Промпт для ИИ

Помогите мне написать скрипт для сбора данных через эндпоинт EveryInfra Instagram Подбор контента (instagram/discover).

Как работает эндпоинт:
- Запрос: POST https://api.everyinfra.com/api/v1/social с заголовком Authorization: Bearer <API key>. Читайте ключ из переменной окружения EVERYINFRA_API_KEY и никогда не прописывайте его в коде.
- В теле запроса укажите platform: instagram и action: discover, а параметры передайте в params.
- Обязательные параметры:
  - keyword: Хештег для действия discover; ведущие символы # удаляются автоматически. Параметр ищет по хештегам, а не выполняет общий полнотекстовый поиск, и отличается от параметра tag в действии hashtag.
- Необязательные параметры:
  - results_type: Выбирает тип контента для discover и hashtag: для обычных публикаций не передавайте параметр, для коротких видео передайте reel или reels. Явно передать posts нельзя, любое другое значение возвращает 422. (допустимые значения: reel / reels)
  - limit: Максимальное число записей в этом вызове, целое число от 1 до 200. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. (по умолчанию: 30)
- Возвращает список записей. Основные поля каждой записи: post_id, url, text, media_type, like_count, comment_count, view_count, author_username, author_name, posted_at, location, id; всего полей: 21, полный список: https://api.everyinfra.com/api/v1/social/catalog?platform=instagram.
- Пример тела запроса:
{
  "platform": "instagram",
  "action": "discover",
  "params": {
    "keyword": "coffee"
  }
}
- Цена: $0.56 за 1 000 запросов; неудачные и пустые результаты не оплачиваются.
- Этот эндпоинт по умолчанию асинхронный: он возвращает 202 и job_id, после чего опрашивайте GET https://api.everyinfra.com/api/v1/jobs/{job_id}, пока статус не станет succeeded или failed.
- При ответе 422 исправьте запрос, используя предложенные в ошибке имена параметров и допустимые значения; при ответе 429 или 503 подождите указанное в Retry-After время и повторите попытку.

Прежде чем писать код, спросите меня, какие цели мне нужны, сколько их будет, какие поля мне нужны и в каком формате вывести результат; затем согласуйте со мной план и примерную стоимость.

Параметры запроса

ИмяРасположениеТипОбязательныйПо умолчаниюОписание
AuthorizationheaderstringДа-Укажите Bearer, а после него — ваш API-ключ. Создайте ключ в консоли; никогда не указывайте его в URL и не храните в репозитории кода.
platformbodystringДаinstagramИдентификатор платформы, фиксированное значение.
actionbodystringДаdiscoverИдентификатор возможности, фиксированное значение.
keywordbody.paramsstringДа-Хештег для действия discover; ведущие символы # удаляются автоматически. Параметр ищет по хештегам, а не выполняет общий полнотекстовый поиск, и отличается от параметра tag в действии hashtag.
results_typebody.paramsstring (enum)Нет-Выбирает тип контента для discover и hashtag: для обычных публикаций не передавайте параметр, для коротких видео передайте reel или reels. Явно передать posts нельзя, любое другое значение возвращает 422. Формат файла ответа этот параметр не выбирает.Допустимые значенияreelreels
limitbody.paramsinteger (1–200)Нет30Максимальное число записей в этом вызове, целое число от 1 до 200. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. При значениях выше максимума эндпоинт возвращает ошибку 422 до списания средств.

Примеры кода

bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "instagram",
  "action": "discover",
  "params": {
    "keyword": "coffee"
  }
}'

Спецификация OpenAPI (JSON)Примеры читают ключ из переменной окружения EVERYINFRA_API_KEY; скопированный код никогда не содержит ваш ключ.

Пример ответа

Реальный ответ

Получено October 24, 2026 at 18:28 (UTC) вызовом этого API с параметрами из примера кода выше. results и count — реальный ответ этого вызова, из которого удалены персональные данные (имена, никнеймы, аватары, ссылки на профили, контакты); в списке оставлены первые 2. id, billing и quota меняются при каждом вызове, поэтому показана только их структура.

json
{
  "id": "req_…",
  "platform": "instagram",
  "action": "discover",
  "results": [
    {
      "post_id": "De4za3DANzi",
      "url": "https://www.instagram.com/p/De4za3DANzi/",
      "text": "Some days I wake up a baddie, and some days I wake up a saddie.\n.\n.\n.\n.\n.\n.\n#fyp #instamood #burberry #coffee #cafe @••• @••• @••• @••• @•••",
      "media_type": "image",
      "like_count": -1,
      "comment_count": 0,
      "author_username": "•••",
      "author_name": "•••",
      "posted_at": "2026-10-24T18:43:18+00:00",
      "id": "•••",
      "image_url": "https://scontent-cph2-1.cdninstagram.com/v/t51.82787-15/865668555_18501136627099477_1202278696858241993_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2.08_tt6&_nc_cat=102&ig_cache_key=NDAxNTE4NDU5MzExMTA0MDM5MQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU…",
      "author_id": "•••",
      "width": 2479,
      "height": 3305,
      "hashtags": [
        "fyp",
        "instamood",
        "burberry"
      ]
    },
    {
      "post_id": "De4zXldkb3j",
      "url": "https://www.instagram.com/p/De4zXldkb3j/",
      "text": "♥️🌎🌎👌🏻👌🏻.\n.\n.\n.\n.\n.\n.\n.\n.\n.\n.\n.\n#لايك #الكحلي #coffee #flowers #venezuela",
      "media_type": "image",
      "like_count": 1,
      "comment_count": 0,
      "author_username": "•••",
      "author_name": "•••",
      "posted_at": "2026-10-24T18:42:51+00:00",
      "id": "•••",
      "image_url": "https://scontent-cph2-1.cdninstagram.com/v/t51.82787-15/863292678_17970790107172812_3863795868010461481_n.webp?stp=dst-webp_p1080x1080_sh2.08&_nc_cat=102&ig_cache_key=NDAxNTE4NDUzNjc5NDMwNjU5MQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBp…",
      "author_id": "•••",
      "width": 1440,
      "height": 1920,
      "hashtags": [
        "لايك",
        "الكحلي",
        "coffee"
      ]
    }
  ],
  "count": 18,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

Поля ответа

Бизнес-данные находятся в results. В таблице перечислены поля, которые может содержать запись; значения, которые платформа не показывает, никогда не выдумываются.

ПолеЗначение
post_idТрактуется так же, как на самой платформе
urlСсылка на запись на платформе.
textОсновной текст без HTML возвращается полностью и никогда не обрезается (на нескольких платформах результаты списковых запросов содержат только фрагмент; это указано в примечаниях к полям платформы).
media_typeТрактуется так же, как на самой платформе
like_countЛайки. null означает, что платформа или эта возможность не раскрывает значение; это не 0.
comment_countКомментарии. null означает, что значение не раскрыто, а не 0.
view_countПросмотры или воспроизведения. null означает, что значение не раскрыто, а не 0.
author_usernameИмя пользователя автора (@handle), обычно подходит для URL.
author_nameОтображаемое имя автора.
posted_atВремя публикации в ISO 8601, UTC (например, 2026-08-07T12:34:56+00:00). Нестандартные строки платформы передаются как есть, поэтому учитывайте это при разборе. null означает, что платформа его не раскрывает.
locationОписание местоположения передаётся как есть; формат зависит от платформы.
idУникальный ID записи на платформе. Уникален только в пределах одной платформы; на разных платформах ID могут повторяться.
image_urlСсылка на изображение. Возможности с несколькими изображениями могут возвращать массив image_urls.
video_urlТрактуется так же, как на самой платформе
author_idУникальный ID автора на платформе.
widthТрактуется так же, как на самой платформе
heightТрактуется так же, как на самой платформе
is_comments_disabledТрактуется так же, как на самой платформе
author_follower_countЧисло подписчиков автора. null означает, что значение не раскрыто.
hashtagsХештеги в тексте в порядке появления; поле отсутствует, если их нет.
top_commentsТрактуется так же, как на самой платформе

FAQ

Как получить результаты асинхронного вызова Content discovery?

Instagram Content discovery работает асинхронно, поэтому в ответ на вызов приходит job_id, а не записи. Сохраните этот ID и используйте его, чтобы получить результаты позже. Ваш код выполняет два шага: отправку хештега и получение записей. Храните отправленные keyword и results_type рядом с job_id, чтобы каждый набор результатов оставался связан со своим запросом.

keyword — это полнотекстовый поиск?

Нет. В Instagram Content discovery keyword — это хештег: # в начале удаляется и ищется сам тег, поэтому coffee и #coffee дают одинаковый запрос. Слова, которые встречаются только в подписях, не ищутся. Возможность Instagram Hashtag тоже выдаёт посты или Reels по тегу, но синхронно и с другим названием параметра.

Как получить Reels вместо обычных постов?

Установите для results_type значение reel или reels: оба переключают Instagram Content discovery на короткие видео. Для обычных постов не указывайте параметр: posts не является допустимым значением, а любое другое значение отклоняется с ошибкой 422 при проверке параметров. Параметр выбирает тип контента, а не формат вывода, например JSON или CSV.

Ошибки и оплата

401
Ключ отсутствует или недействителен.
402
Недостаточно средств на балансе. Сначала пополните баланс.
422
Недопустимое имя или значение параметра. Исправьте запрос по подсказкам в сообщении об ошибке. Без списания.
429
Достигнут лимит запросов в минуту. Подождите указанное в Retry-After время, затем повторите попытку.
503
Не удалось выполнить. Зарезервированная сумма возвращается на баланс. Если результат неизвестен, проверьте его перед повторной попыткой.
200 (пусто)
Нет данных. Без списания.

Ошибки