Get Instagram demographics
Returns audience demographic insights for an Instagram account, broken down by age, city, country, and/or gender. Requires at least 100 followers. Returns top 45 entries per dimension. Data may be delayed up to 48 hours. Requires the Analytics add-on.
API key authentication - use your Zernio API key as a Bearer token
In: header
Query Parameters
The Zernio SocialAccount ID for the Instagram account
"follower_demographics" for follower audience data, or "engaged_audience_demographics" for engaged viewers.
"follower_demographics""follower_demographics" | "engaged_audience_demographics"Comma-separated list of demographic dimensions: age, city, country, gender. Defaults to all four if omitted.
Time period for demographic data. Defaults to "this_month".
"this_month""this_week" | "this_month"Response Body
application/json
application/json
application/json
application/json
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.analytics.getInstagramDemographics({ query: { accountId: 'account_abc123', },});console.log(data);{
"success": true,
"accountId": "64e1a2b3c4d5e6f7a8b9c0d1",
"platform": "instagram",
"metric": "follower_demographics",
"timeframe": "last_30_days",
"demographics": {
"age": [
{
"dimension": "25-34",
"value": 4500
},
{
"dimension": "18-24",
"value": 3200
}
],
"gender": [
{
"dimension": "M",
"value": 3000
},
{
"dimension": "F",
"value": 4800
}
],
"city": [
{
"dimension": "New York, New York",
"value": 800
},
{
"dimension": "Los Angeles, California",
"value": 650
}
],
"country": [
{
"dimension": "US",
"value": 5000
},
{
"dimension": "GB",
"value": 1200
}
]
},
"note": "Demographics show top 45 entries per dimension. Requires 100+ followers."
}{
"error": "Invalid breakdowns: location",
"validBreakdowns": [
"age",
"city",
"country",
"gender"
]
}{
"error": "Unauthorized"
}{
"error": "Analytics add-on required",
"code": "analytics_addon_required"
}{
"error": "Access denied to this account"
}{
"error": "Account not found"
}Get Instagram follower history GET
Returns a daily running Instagram follower count time series, served from Zernio's cross-platform daily snapshotter. Exists because Meta removed follower_count from the /insights endpoint in Graph API v22+ and never exposed a historical daily series via any public API. Response envelope matches /v1/analytics/instagram/account-insights so the same client handling works. Max 89 days, defaults to last 30 days. Requires the Analytics add-on.
Get YouTube channel insights GET
Returns channel-scoped aggregate metrics from YouTube Analytics API v2. Saves you from looping /v1/analytics/youtube/daily-views over every video when you only need channel totals. Response shape matches /v1/analytics/instagram/account-insights so the same client handling works. Requires yt-analytics.readonly scope (412 with reauthorizeUrl if missing). Data has a 2-3 day delay (endDate is clamped accordingly). Max 89 days, defaults to last 30 days. Requires the Analytics add-on. NOT exposed: impressions (Studio thumbnail impressions) and impressionsClickThroughRate. YouTube Analytics API v2 does not expose these for any principal type, not channel owners, not Partner Program channels, not content owners with CMS access. The only way to get them is Studio CSV export. This is a Google-side limitation.