Audience breakdown
GET /accounts/{username}/audience returns the account’s audience by country,
age bucket, and gender.
as_of with an ISO timestamp to read the breakdown as it stood then.
Snapshots are append-only, so an older reading stays available after a newer
one arrives.
Shares are basis points, and they do not sum to 10000
share_bps is hundredths of a percent. 4120 is 41.20%.
Instagram reports only an account’s top countries, so the shares routinely sum
to less than 10000. The remainder is real: it is audience whose country was
never reported.
Bucket labels are passed through exactly as Instagram reports them, such as
18-24, F, and U.
availability is its own answer
“No data” is not an empty breakdown. Keep the two apart in your own storage,
or an account Instagram cannot describe becomes indistinguishable from one with
no audience.
Daily account insights
GET /accounts/{username}/insights returns one point per day, with views,
reach, profile_views, and followers_count. Narrow it with since and
until.
Any of the metrics can be null for a day. As everywhere in this API, null
means Instagram did not report it, and 0 is a real reading.
Media demographics
GET /submissions can include a demographics block per tracked media.
This is the connected account’s audience over the media’s first days, not
the audience of the media itself. Instagram reports demographics per
account, not per post. The block carries window_start, window_end, and snapshot_count, so
you can see the real span that was averaged and the divisor used.
Access and history
Analytics has two separate gates, and both apply. Current access. When analytics is disabled, the dedicated endpoints answer403 with the code analytics_not_enabled, and analytics fields are omitted
from other responses entirely. Basic account identity stays visible.
Entitled intervals. When analytics is enabled, you see observations from
every interval you were entitled to, including a trial and any payment grace.
Observations collected while analytics was off stay hidden, even after a later
purchase.
Collection is separate from access. Background collection continues without
analytics purchased, so enabling it later starts showing data from the
moment entitlement began, not from every reading ever taken.