Статистика Instagram через API: аккаунт и публикации
Статистика Instagram в API доступна на двух уровнях: аккаунт (GET /{ig-user-id}/insights) и публикация (GET /{ig-media-id}/insights). В 2025 году Meta отключила метрики impressions и plays и ввела вместо них views. API работает только с аккаунтами Business и Creator, данные могут запаздывать до 48 часов, а демография возвращает только 45 самых крупных значений.
Обновлено:
Коротко: как получить статистику Instagram через API
Для метрик аккаунта отправляете запрос к /{ig-user-id}/insights с metric, period=day и metric_type=total_value, для метрик публикации — к /{ig-media-id}/insights. Разрешение зависит от способа входа: при входе через Instagram — instagram_business_manage_insights, через Facebook — instagram_manage_insights. Личные аккаунты не поддерживаются — только Business или Creator.
Если в запросе аккаунта не указать since и until, API смотрит последние 24 часа. Когда данных нет, API возвращает не 0, а пустой набор — не записывайте это в отчёт как ноль.
Способ входа: хост и разрешения
| Вход через Instagram | Вход через Facebook | |
|---|---|---|
| Хост | graph.instagram.com | graph.facebook.com |
| Страница Facebook | Не нужна | Instagram-аккаунт должен быть привязан к странице |
| Разрешения | instagram_business_basic, instagram_business_manage_insights | instagram_basic, instagram_manage_insights, pages_read_engagement |
| Суммы вместе с рекламой | Нет | total_likes, total_comments, total_views |
| Socialift SDK | Instagram(app_id=..., app_secret=...) | Instagram.via_facebook(app_secret=...) и ig_user_id |
При входе через Facebook, если роль пользователя на странице выдана через Business Manager, документация Meta дополнительно указывает разрешения ads_management и ads_read.
Метрики уровня аккаунта
Список из актуального справочника Meta. Обычные метрики запрашиваются с period=day.
| Метрика | Что измеряет | Breakdown |
|---|---|---|
views | Сколько раз контент (reels, посты, stories) воспроизводился или показывался | follower_type, media_product_type |
reach | Уникальные аккаунты, видевшие контент хотя бы раз, включая рекламу | media_product_type, follow_type |
accounts_engaged | Аккаунты, взаимодействовавшие с контентом, включая рекламу | нет |
total_interactions | Все взаимодействия с постами, stories, reels, видео и эфирами | media_product_type |
likes, comments, saves, shares | Отдельные типы взаимодействий | media_product_type |
replies, reposts | Ответы и репосты | нет |
follows_and_unfollows | Подписки и отписки | follow_type |
profile_links_taps | Нажатия на адрес, звонок, email и сообщение | contact_button_type |
follower_demographics, engaged_audience_demographics | Демография подписчиков и вовлечённой аудитории | age, city, country, gender |
естьнет
Все метрики работают с metric_type=total_value, reach поддерживает ещё и time_series. Демография запрашивается с period=lifetime и timeframe.
Метрики публикаций по типам контента
Набор зависит от media_product_type. Если запросить неподходящую метрику, Graph API отклонит весь запрос.
| Метрика | FEED | REELS | STORY |
|---|---|---|---|
views | есть | есть | есть |
reach | есть | есть | есть |
total_interactions | есть | есть | есть |
shares, reposts | есть | есть | есть |
likes, comments | есть | есть | нет |
saved | есть | есть | нет |
profile_visits, profile_activity, follows | есть | нет | есть |
ig_reels_avg_watch_time | нет | есть | нет |
navigation, replies, link_clicks | нет | нет | есть |
естьнетТаблицу можно прокрутить вбок
likes и comments считают только органику. При входе через Facebook есть total_likes, total_comments и total_views, которые включают взаимодействия с рекламой.
Изменения 2024–2025: что отключили и что добавили
Именно поэтому код из старых туториалов перестал работать.
| Метрика | Что произошло | Когда |
|---|---|---|
impressions (аккаунт и публикации) | Отключена, замена — views | В v22.0 с 21 января 2025, во всех версиях с 21 апреля 2025 |
plays, clips_replays_count, ig_reels_aggregated_all_plays_count (публикации) | Отключены, замена — views | Те же даты |
video_views (публикации) | Отключена | В v21.0 со 2 октября 2024, во всех версиях с 8 января 2025 |
profile_views, website_clicks, email_contacts, phone_call_clicks, text_message_clicks, get_direction_clicks (аккаунт, time series) | Отключены | Те же даты (v21.0) |
last_14_days, last_30_days, last_90_days, prev_month (timeframe демографии аудитории) | Отключены | Во всех версиях с 19 августа 2024 |
views (аккаунт и публикации) | Добавлена | 21 января 2025 |
reposts, reels_skip_rate, facebook_views, crossposted_views | Добавлены | 3 декабря 2025 |
Для публикаций, созданных после 2 июля 2024 года, impressions перестала работать ещё раньше.
Демография: кто подписан и кто вовлечён
follower_demographics (подписчики) и engaged_audience_demographics (взаимодействовавшие с контентом) запрашиваются с period=lifetime, metric_type=total_value, breakdown (age, city, country или gender) и timeframe. timeframe имеет приоритет над since/until; безопасные значения — this_week и this_month.
Meta возвращает только 45 самых крупных значений. Учитывайте это при расчёте долей: например, города за пределами топ-45 в ответ просто не попадут.
У небольших аккаунтов есть ограничения: для аккаунтов с менее чем 100 подписчиками Meta не отдаёт follower_count и online_followers, а демография может прийти пустой. Метод ig.demographics в SDK Socialift в таком случае не выбрасывает исключение: для этого разреза вернётся available: False с причиной от Meta, остальные разрезы придут как обычно.
Период, задержка и срок хранения данных
Данные могут запаздывать до 48 часов: если вчерашняя цифра завтра изменилась, это не ошибка. Перезагружайте последние два дня при каждой синхронизации.
Метрики публикаций хранятся до 2 лет. Метрики stories доступны только 24 часа — собирайте их, пока история жива. Метрики stories со значением меньше 5 возвращают ошибку с кодом 10, а для отдельных элементов внутри альбома статистики нет вовсе.
Для отчётов за длинный период надёжнее всего каждый день снимать снапшот и хранить в своей базе. Метод ig.insights в SDK Socialift ограничивает период 30 днями и не пускает until в будущее — длинные периоды запрашивайте кусками по 30 дней.
Как настроить сбор статистики: 5 шагов
Проверьте тип аккаунта
Аккаунт Instagram должен быть Business или Creator. Для входа через Facebook он привязывается к странице Facebook.
Запросите разрешения на статистику
Вход через Instagram:
instagram_business_basicиinstagram_business_manage_insights. Через Facebook:instagram_basic,instagram_manage_insights,pages_read_engagement. Для чужих аккаунтов они требуют App Review.Собирайте метрики аккаунта ежедневно
Запрашивайте
views,reach,accounts_engaged,total_interactionsи другие сperiod=dayи сохраняйте каждый день.Метрики публикаций — по типу контента
Сначала узнайте
media_product_type(FEED, REELS, STORY), затем запросите подходящий набор. Stories собирайте в течение 24 часов.Демографию — раз в неделю или месяц
Запрашивайте
follower_demographicsсtimeframe=this_monthотдельно для каждогоbreakdownи сохраняйте результат с датой.
Python: аккаунт, публикации и демография
Вход через Facebook: токен страницы и ID Instagram-аккаунта.
import asyncio, os
from datetime import date, timedelta
from socialift import Instagram
async def main() -> None:
token = os.environ["PAGE_TOKEN"]
ig_user_id = os.environ["IG_USER_ID"]
async with Instagram.via_facebook(app_secret=os.environ["FACEBOOK_APP_SECRET"]) as ig:
week = await ig.insights(
token, ig_user_id=ig_user_id, since=date.today() - timedelta(days=7), until=date.today()
)
print(week["since"], week["until"], week["metrics"])
for post in await ig.media(token, ig_user_id=ig_user_id, limit=5):
print(post["id"], post["media_type"], await ig.media_insights(post["id"], token))
demo = await ig.demographics(token, ig_user_id=ig_user_id)
for cut, data in demo.items():
print(cut, data["values"] if data["available"] else data["reason"])
asyncio.run(main())При входе через Instagram клиент создаётся через Instagram.from_env(), токен — пользовательский токен Instagram, а ig_user_id необязателен.
Если у публикации нет статистики (старый пост или истёкшая история), media_insights не бросает исключение, а возвращает пустой словарь.
Что именно запрашивает SDK Socialift
Важно знать, какие метрики запрашивают методы, чтобы правильно строить отчёт.
| Метод | Запрос к Graph API | Возвращает |
|---|---|---|
ig.insights | /{ig-user-id}/insights: reach, profile_views, website_clicks, accounts_engaged, total_interactions; period=day, metric_type=total_value. По умолчанию последние 30 дней, период не больше 30 дней | since, until и словарь metrics |
ig.media_insights | Сначала media_type и media_product_type, затем подходящий набор. Фото: reach, likes, comments, saved, shares, total_interactions, profile_visits. Видео и Reels: те же + views (без profile_visits). Карусель: reach, likes, comments, saved, shares, total_interactions. Story: reach, replies, navigation, total_interactions | {метрика: значение} или пустой словарь |
ig.demographics | follower_demographics, period=lifetime, timeframe=this_month; разрезы отдельными запросами: age,gender, city, country | Для каждого разреза available и values или reason |
Примечания и ограничения
Внимание: в актуальном списке метрик аккаунта Meta нет profile_views и website_clicks (их time series отключили в январе 2025). Если ig.insights вернёт ошибку метрики, причина, вероятно, в этом.
Советы для системы отчётности
- Используйте
viewsвместоimpressionsиplays— обновите старые дашборды. - Не записывайте пустой ответ как
0: это «нет данных». - Ежедневно перезагружайте последние 48 часов — цифры могут быть не финальными.
- Собирайте статистику stories в течение 24 часов.
- Храните ежедневные снапшоты у себя, длинные периоды запрашивайте частями.
- Отдельно обрабатывайте нехватку разрешений (
PermissionError) и проблемы с токеном (AuthError).
Частые вопросы
Почему в Instagram API не работает impressions?
Meta отключила impressions в v22.0 с 21 января 2025 года, а во всех версиях — с 21 апреля 2025 года. Используйте метрику views: она есть и для аккаунта, и для публикаций.
Чем views отличается от reach?
views — сколько раз контент воспроизводился или показывался (один человек может посчитаться несколько раз). reach — число уникальных аккаунтов, видевших контент хотя бы раз.
Можно ли получить статистику личного аккаунта Instagram через API?
Нет. Insights API работает только с аккаунтами Business и Creator. Переключите аккаунт на профессиональный в настройках приложения Instagram.
Почему демография приходит пустой?
Чаще всего аккаунт слишком маленький или выбран неподдерживаемый timeframe. Используйте this_week или this_month, запрашивайте каждый breakdown отдельно и помните, что в ответе максимум 45 значений.
Можно ли получить статистику stories позже?
Нет, метрики stories доступны только 24 часа. Запланируйте сбор в момент публикации истории и сохраняйте результат в свою базу.
За какой период можно получить статистику?
Метрики публикаций Meta хранит до 2 лет. Для длинных периодов на уровне аккаунта надёжнее ежедневно снимать и хранить собственные снапшоты.