Connector
Instagram, read the way the API actually works
Business and Creator accounts, connected through Instagram Login for Business. Profiles, every post and reel, and the insights behind them — captured daily, so the history exists whether or not you were watching.
What it looks like once a sync has run
The first screen answers the question the account was opened to answer — which content works, and when — before it shows a single row.
On reach, this account’s strongest format is Reels — 13.2K against 7.5K for a typical post, and the block that carries it is Mon evening.
Medians, never averages: one reel that travelled unusually far is not the account’s typical week. The grid is drawn on the publisher’s own clock — a post at half past ten at night in Mumbai is a 17:00 UTC row, and a grid built on the stored hour would report it as an afternoon habit.
Three resources, one schema
Accounts, media and metrics — each with a daily snapshot, so a number that moved can be traced to the day it moved.
Media
IMAGE, VIDEO and CAROUSEL_ALBUM, split by FEED or REELS — with the caption, permalink, thumbnail and the children of a carousel.
Media insights
- likes
- comments
- shares
- saves
- reach
- views
- engagements
- profile_visits
- follows
- profile_activity
- reels_skip_rate
Account insights, daily
- reach
- views
- accounts_engaged
- engagements
- likes
- comments
- shares
- saves
- replies
- profile_links_taps
Stories, within the day they ran
Instagram serves a story for 24 hours and then stops. There is no window to widen and no backfill to run later, so a story captured late is a story lost — the sync reads them on their own schedule and keeps the last figures it saw.
- reach
- views
- replies
- shares
- profile_visits
- follows
- navigation
- navigation_swipe_forward
- navigation_tap_forward
- navigation_tap_back
- navigation_tap_exit
$ curl "…/instagram/media?media_product_type=REELS&date_from=2026-09-01" \
-H "Authorization: Bearer pk_live_…"
{ "data": [ { "external_media_id": "1800…",
"media_type": "VIDEO",
"media_product_type": "REELS",
"permalink": "https://www.instagram.com/reel/…",
"published_at": "2026-09-08T10:12:00Z",
"like_count": 812,
"comments_count": 44 } ],
"pagination": { "page": 1, "limit": 50, "has_more": true } }What Meta no longer gives, and what we do about it
An integration that quietly returns zero for a deprecated metric is worse than one that says the metric is gone. These are the cases that catch people.
Impressions are gone
Meta removed impressions from Instagram media insights in April 2025 and replaced them with views. Pullsy does not synthesize a substitute, because there isn't one — views counts something different.
Personal accounts cannot connect
Instagram Login for Business serves Business and Creator accounts only. A personal account has no insights to give, so the connection is refused at the door rather than half-working.
Rate limits pause, they don't fail
When Meta throttles, the sync checkpoints and resumes on the next run instead of dropping the window. The job says it was throttled, so a short day is legible rather than mysterious.
The same data, graded
Reach, saves, link taps and story exits are also what an account is judged on. Pullsy scores them on seven pillars and publishes the result as a link a brand can open and recompute.
Running ads on Instagram as well?
Instagram ads do not live in this API. They sit in the same ad account as Facebook ads, which is what the Meta Ads connector reads — ask it for publisher_platform=instagram.
Further reading
Longer-form writing on this API, from the connector that reads it.
- Where your Instagram insights wentInstagram keeps account metrics for about 90 days, serves post insights only as a running total, and stops serving a story after 24 hours. What that costs you.5 min read
- Instagram story insights: navigation, forward, back and exits explainedWhat navigation, forward, back, next story and exits mean in your Instagram story insights, which ones are good news, and when the numbers appear and disappear.6 min read
- The engagement rate every tool quotes is the wrong oneEngagement rate by reach divides engagements by the people who actually saw the post. Here is the formula, why outside tools cannot compute it, and how to read it.5 min read
- Skip rate on Instagram Reels: what it means, and what counts as goodSkip rate is the share of viewers who swiped past your reel early — lower is better. What it means, why there is no universal good rate, and how to read yours.5 min read
- How to tell if someone bought followers or likes on InstagramOutside tools can only guess whether an Instagram account bought followers or likes. With the account’s own reach it is arithmetic. The signs, and how to check.4 min read
Connect a real Instagram account today
The trial includes one connection and thirty days of history — enough to see your own numbers come back in the schema.

