Social media analytics API: the metrics you can actually pull, per platform
Every platform exposes different metrics, over different windows, with different definitions. Instagram gives reach and views, TikTok gives no reach, YouTube returns lifetime totals, LinkedIn keeps 12 months. A social media analytics API is mostly the work of reconciling that. Here is what each platform actually returns, checked on October 21, 2026.
What an analytics API returns, and what it never will
Three things are true of every platform API in this list. They return counts, not reasons. They return your own content, not your competitor's. And they return what the platform decided to compute, which is rarely what you would have computed.
The last point is the one that wastes weeks. There is no shared definition of a view, an impression or reach across these APIs. Instagram labels reach and accounts_engaged as estimated. YouTube has no metric called impressions at all, only adImpressions for advertising plus annotation and card impressions. LinkedIn gives you impressionCount and uniqueImpressionsCount, which are two different ideas with similar names. Any cross-platform total you build is an opinion, and you should write that opinion down somewhere your future self will find it.
Instagram analytics API: impressions is gone, views took its place
If you are porting an old integration, this is the breaking change. In the Instagram user insights reference, impressions is marked deprecated, for v22.0 and then for all versions as of April 21, 2025. The metric that carries the same intent now is views, described as the number of times your content was played or displayed.
What the account-level endpoint gives you today: views, reach, accounts_engaged, total_interactions, likes, comments, shares, saves, replies, reposts, follows_and_unfollows, profile_links_taps, plus follower_demographics and engaged_audience_demographics by age, city, country or gender.
The limits matter more than the list:
- Omit
sinceanduntiland you get the last 24 hours, not everything. - Demographic metrics use
timeframe, for examplelast_90_days, which overridessinceanduntil. online_followersonly covers the last 30 days.- Data can lag up to 48 hours, and insights take roughly 24 hours to settle, so a number you read an hour after publishing will change.
- Several metrics are simply unavailable for accounts under 100 followers, and unavailable means an empty data set, not a zero.
- Account metric data is retained for about 90 days.
That last pair is why your charts have holes rather than flat lines. For the rest of the Instagram surface, see the Instagram Graph API in 2026.
What each platform exposes
Platform capabilities below are the ones PlugKit's collector reads, verified on docs.plugkit.co on October 21, 2026, cross-checked against each platform's own reference where it is public.
| Platform | Post metrics available | Reach or impressions | Follower history | Catches posts published elsewhere |
|---|---|---|---|---|
| views, likes, comments, shares, saves | reach (estimated) | yes | yes | |
| impressions, clicks, likes, comments, shares | impressions and reach | yes | yes | |
| TikTok | views, likes, comments, shares | no reach | yes | yes |
| YouTube | views, likes, comments | no impressions metric | yes | yes |
| X | likes, replies, reposts | impressions | yes | no |
| clicks, likes, comments, shares | impressionCount and uniqueImpressionsCount | yes | yes | |
| WhatsApp, Telegram | none, there are no posts | none | none | none |
Four details hide behind that table.
YouTube returns lifetime totals, not a daily series. The YouTube Analytics metrics list is long, with estimatedMinutesWatched, averageViewDuration, audienceWatchRatio and revenue metrics, but getting the daily breakdown means a separate Google audit. Without it, you get a cumulative number and have to difference it yourself.
TikTok needs scopes that are not applied retroactively. video.list and user.info.stats are required, and an account connected before you asked for them shows empty charts until the user reconnects.
LinkedIn keeps a rolling 12 months and organic only. The organization share statistics endpoint returns data within the past 12 months, at DAY or MONTH granularity, and counts no sponsored activity. Lifetime stats come from omitting timeIntervals; per-share queries do not support time-bound stats at all. One scheduling note: Marketing version 202511 is announced for sunset on November 16, 2026, so pin a current version.
X charges per read. It is the one platform here where pulling analytics has a line item. PlugKit passes the calls through at cost, $0.005 to read a post and $0.010 to read a user, with a default spend cap of $20 a month on every account until you set your own. Their docs put an hourly-polled X account at up to $360 a month, which is the right order of magnitude to have in mind before you build a minute-by-minute dashboard. The rate limits behind all of this are collected on social media API rate limits.
Why two tools never show the same number
- Snapshot timing. Stored metrics are readings taken at a moment. Two tools polling at different times on a settling metric disagree honestly.
- Settling. Instagram insights take about 24 hours to finalize. Early numbers are not wrong, they are early.
- Estimation.
reachandaccounts_engagedare estimated by Instagram itself. Estimates get revised. - Null is not zero. TikTok has no reach, YouTube has no impressions. A pipeline that coerces missing to
0invents a decline that never happened. PlugKit returnsnullfor these and marks a clamped window with"clamped": true, which is the behaviour you want from anything you build too.
Cross platform analytics API: build or buy
Building it means one OAuth flow and one metric vocabulary per platform, a poller per content age, a store, and a backfill story you cannot actually deliver, because follower history starts the day an account is connected and cannot be backfilled by anyone.
Buying it means accepting someone else's collection cadence. PlugKit's is published, which is the part worth copying: new posts discovered every 6 hours on Creator and every 90 minutes on Pro; posts under 48 hours old refreshed hourly on Creator, every 30 minutes on Pro; posts under 30 days every 6 hours or hourly; older posts weekly; follower counts daily; anything past 180 days frozen at its last reading. Readable history is 90 days on Creator and 550 on Pro, and because data is recorded regardless of plan, upgrading reveals history you already had.
The read endpoints are /v1/analytics/summary, /posts, /timeseries, /platforms, /best-times, /accumulation and /followers, and none of them calls a platform at request time. Every response carries lastSyncAt and nextSyncAt, so you can show data age instead of pretending to be live. POST /v1/analytics/sync forces a refresh, and repeat calls on the same account inside 15 seconds are ignored.
Analytics are included on every plan and on the 7 days free with no card, one connected account during the trial. Paid X calls stay locked during the trial, which is the sane default. PlugKit is $49 a month for 5 connected accounts, cancel anytime. If you only need publishing and no numbers, the comparison in the social media API guide is the better starting point, and if what you actually want is DMs and comments in one place, that is a social media inbox, not an analytics API.
FAQ
Is there a single API for all social media analytics?
Not from the platforms. Each one runs its own API, metric names and windows. A unified analytics API is always a layer on top that normalizes those differences, and the normalization is a judgement call you should be able to inspect.
Does the Instagram analytics API still return impressions?
No. impressions is deprecated, for v22.0 and then for all versions as of April 21, 2025. Use views. Reach is still there and is labelled estimated by Instagram.
How far back can I pull social media metrics?
It depends on the platform and the tool. LinkedIn share statistics cover a rolling 12 months. Instagram account insights are retained about 90 days. Follower history can only start the day an account was connected, so connect accounts before you need the history.
Why do my API numbers differ from the numbers in the app?
Because they were read at a different time, and because some metrics settle for about 24 hours after publishing. Check the sync timestamp on the response before treating a gap as a bug.
Can an AI agent read these metrics directly?
Yes, if you give it the tools. Through an MCP server the analytics reads become tools the agent calls, so a question like best posting time per account is answered from the same endpoints. The trade-off between handing an agent MCP tools or a REST API is in MCP or REST API for your agent.
One plug for every platform your agent touches
$49 a month for 5 connected accounts, cancel anytime. Every feature in every plan.
Get your API key →