← Back to the blog

Social Media Analytics API: 7 Networks, 3 Count People

A social media analytics API returns the metrics a network already holds about your own posts. Reading seven of them against their own references turns up a problem most comparison pages skip: the networks do not count the same object, so the tidy cross-network engagement rate on your dashboard is an average of things that are not alike.

Key takeaways

  • Five networks limit your history five different ways, so the spans do not compare.
  • LinkedIn ships a people-count and then ignores it in its own rate.
  • Instagram withholds some metrics below 100 followers.
  • Meta removed Page Insights metrics on every API version at once, so pinning did not help.
  • Zilfu polls the last 90 days, which is its own version of this limit.

What does a social media analytics API actually return?

Whatever that network chose to count, under that network's name for it. There is no shared schema underneath, and the differences are not cosmetic. Pinterest surfaces SAVE and OUTBOUND_CLICK as ordinary organic metrics, while X's nearest equivalents, bookmark_count and url_link_clicks, sit in different tiers with different access rules. Threads reports quotes, which Pinterest has no analogue for at all.

The read surface is also gated differently from the write surface. Publishing is usually gated on an app audit, which you either pass or fail once. Analytics is gated on facts about the post and the account: who owns it, how old it is, and sometimes how big the account is. Meta states plainly that "Some metrics are not available on Instagram accounts with fewer than 100 followers" (Meta). No tool can lift that, whatever its own feature list says.

X splits its metrics into four sets rather than one. public_metrics carries retweet_count, quote_count, like_count, reply_count, impression_count and bookmark_count. organic_metrics and non_public_metrics add url_link_clicks, user_profile_clicks and engagements, and both need user-context auth on posts you own. A fourth set, promoted_metrics, covers paid activity (X).

Worth knowing: Zilfu sells one of the tools this page describes, so read it as an argument rather than a verdict. What we can do instead of asking for trust is quote each network's own reference and show the arithmetic, which is what the rest of this page does.

Which networks tell you how many people saw a post?

Three of the seven. Instagram and Facebook expose reach, and LinkedIn exposes uniqueImpressionsCount. The other four report appearances: X through impression_count, Threads through views, TikTok through view_count, and Pinterest through IMPRESSION (Pinterest, TikTok).

Two-column grid showing Instagram, Facebook and LinkedIn report a people-counting metric while X, Threads, TikTok and Pinterest report appearances only

Meta's definitions make the distinction explicit at media level: impressions are the "Total number of times the Business Account's media objects have been viewed" while reach is the "Total number of unique accounts that have seen the media object" (Meta). One counts events, the other counts accounts. Meta has since renamed the event-counting field, which now arrives as views, so the definition outlived the label.

This is why a single engagement-rate column across networks misleads. Divide interactions by an appearance count and you get interactions per appearance. Divide by a people count and you get something closer to interactions per person. Both are legitimate engagement metrics; averaging them together is not. On the four networks that report appearances only, a people-based rate cannot be computed at all, so a tool showing you one on those networks has substituted a different denominator, whether or not it says which.

Our finding: Zilfu shipped this bug. An earlier build presented a unified reach column that was really impressions on some networks and views on others. The fix was not a better average, it was deleting the unified column and showing each network in its own units, with a definition attached to every number.

Why does LinkedIn ignore its own best number?

Because its engagement field predates the useful denominator sitting next to it. LinkedIn's schema defines engagement as "Number of organic clicks, likes, comments, and shares over impressions" (LinkedIn).

That is checkable against the sample response LinkedIn publishes on the same page. Its totalShareStatistics object gives clickCount 109,276, likeCount 52, commentCount 70, shareCount 0, impressionCount 14,490,816 and uniqueImpressionsCount 9,327, with engagement stated as 0.007549471334119487. Summing the four interaction fields gives 109,398, and dividing by impressionCount reproduces the stated figure to every digit LinkedIn prints.

So the LinkedIn analytics API is the one that hands you a people-counting denominator and then does not use it. If you want a rate divided by people on LinkedIn, you compute it yourself from the two fields in the same object. That is a small thing to know and an easy thing to get wrong, because the field is already called engagement and looks finished.

Two smaller quirks live in the same schema. likeCount "can become negative when members who liked a sponsored share later unlike it", because the like was not organic but the unlike is. And the endpoint returns organic statistics only: "Sponsored activity is not counted in this endpoint."

How far back can you actually read?

Between 30 days and a floor in mid-2024. But the five spans are not five measurements of one quantity, because each network limits history through a different mechanism. That is the same disease as the denominators, one layer down.

Horizontal bar chart of how much history five analytics APIs serve, each labelled by mechanism: Threads 798 days from a guaranteed floor, Facebook 730 days of retention, LinkedIn a 365-day rolling window, Instagram 90-day storage, X a 30-day post-age rule

  • Facebook sets a retention period. "Only the last two years of insights data is available" (Meta).
  • LinkedIn sets a rolling query window. The endpoint "returns share data only within the past 12 months, using a rolling 12-month window" (LinkedIn).
  • Instagram sets a storage limit. "User Metrics data is stored for up to 90 days" (Meta).
  • X, whose Twitter analytics API heritage still shows in the field names, sets a post-age eligibility rule. Organic metrics are "only available for posts created" "within the last 30 days" (X).
  • Threads sets a guaranteed floor. Its parameters "do not work for dates before April 13, 2024", and insights are "not guaranteed to work before June 1, 2024" (Meta).

Dividing the longest of those by the shortest would produce a number about nothing, so we have not. A guaranteed floor also behaves unlike the others: Threads reached 798 days of guaranteed history on the day this was published and gains one a day, while Facebook's two years stays two years. Its parameters accept dates from April 13, 2024, which would be 847 days, but Meta guarantees only from June 1, so 798 is the number to build on. The youngest API here already serves the longest history.

The practical consequence survives the caveat. Year-over-year is out of reach on X, Instagram and LinkedIn through the API alone, because 30 days, 90 days and a rolling twelve months all fail to reach the same month last year. If you want that chart, something has to store the numbers as they arrive, and that storage is invisible on a feature checklist.

Metrics get retired on a date, not on an upgrade

Your integration breaks, and it breaks on every API version at once. Meta's Graph API reference states that "By June 15, 2026, a number of the Page Insights metrics will be deprecated for all API versions" (Meta).

That phrasing is the part worth reading twice. API versioning normally protects you: you pin a version and changes land in the next one. A deprecation applied to all versions removes that protection, so pinning does not help and the failure arrives on a date rather than on an upgrade. That date has now passed.

Our finding: Zilfu was on the wrong side of that deadline. Facebook post insights had been failing against the removed metrics, and the fix was not a new hardcoded list. Our drivers now probe rejected metrics one at a time, keep the survivors for the rest of the run, and flag only the keys actually lost, so a metric that disappears is reported as unavailable with a reason rather than shown as a zero.

LinkedIn runs the same pattern on its own clock, having sunset Marketing Version 202507 with a migration notice on the share-statistics page itself (LinkedIn). Two of the seven networks, then, removed analytics surface within a year. Anything reading a named metric field should treat that field as temporary.

What does each network's analytics API give you?

One table, seven networks, the three columns that decide most integrations, alongside the network: the people metric if there is one, the appearance metric, and how far the history reaches.

Analytics API People metric Appearance metric History
Instagram analytics API reach views 90 days stored
Facebook analytics API post reach see note 2 years retained
LinkedIn analytics API uniqueImpressionsCount impressionCount rolling 12 months
Threads analytics API none views guaranteed floor 2024-06-01
X (Twitter) analytics API none impression_count 30-day post-age rule
TikTok analytics API none view_count not published
Pinterest analytics API none IMPRESSION not published

Four rows carry a caveat. Facebook has no appearance metric we are willing to name. Its post-level reach arrives as post_total_media_view_unique, and the metric Zilfu lost in June 2026 was that field's predecessor, post_impressions_unique, which was also a people count. Meta's notice names no metrics, so whether a plain appearance count survived is not something its reference establishes, and we would rather send you to this note than print a guess in the cell. Instagram now returns its event count as views rather than impressions, the rename noted earlier. The TikTok analytics API is thin here because TikTok's Display API is a content-display surface rather than an analytics product, and it publishes no retention figure. And the Pinterest analytics API matches TikTok on history while being the richest on intent: SAVE and OUTBOUND_CLICK are first-class organic metrics, where X's comparable figures are split: bookmark_count sits in public_metrics, while url_link_clicks needs user-context auth on a post you own.

Which analytics API should you build against?

It depends on which of two jobs you have, and the split is the same one that governs posting APIs. If you are embedding analytics for end users who each connect their own accounts, you need breadth and a quota that scales with customers. Ayrshare is the incumbent shape here, advertising "715 documented fields across 12 networks" (Ayrshare), covering networks Zilfu does not read at all, including YouTube, Bluesky, Reddit and Telegram.

If instead you are a team reading your own accounts, breadth matters less than whether the numbers are honest and whether a human can open them. Four questions separate the tools better than any feature grid:

  1. Does it name the denominator? If a rate is on screen, you should be able to find out which field sits underneath it without opening a support ticket.
  2. Does it distinguish absent from zero? A metric the network never reported and a metric that came back as nothing are different facts, and conflating them quietly rewrites your history.
  3. How long does it keep data the network will stop serving? That is the year-over-year question, and a feature grid rarely answers it.
  4. What happens on a deprecation date? Probe, or break.

For the write side of this decision, our social media APIs comparison covers quotas, rate limits and pricing across eight vendors, and the Ayrshare alternatives breakdown works through the billing units in detail.

Where Zilfu fits, and where it does not

Zilfu reads seven networks: Facebook, Instagram, LinkedIn, Pinterest, Threads, TikTok and X. Analytics are on every plan including Free, which covers two connected accounts without a card, and the same numbers come back over REST and over the MCP server so an agent can read them.

Collection runs every four hours and the dashboard shows the last collection time, because the alternative is implying a freshness the networks do not provide. Each network keeps its own units, with a plain-English definition on every metric, which is the direct result of the mislabelling described above.

Three honest limits, and the first one is the same limit this page has been describing. Zilfu polls the last 90 days of posts, so it inherits a version of the problem rather than solving it outright: snapshots accumulate from the day you connect, but posts older than that window are not being re-read. If your reason for buying is a year-over-year chart, ask exactly that question of any vendor, including this one.

The second is coverage. Zilfu does not read YouTube or Bluesky, so if either is central, the tools built for breadth serve you better. The third is shape: Zilfu cannot let a third party authorise their own account through the API, because account connection happens in the browser. That rules out the multi-tenant embedding case entirely. For a team reading its own accounts it is irrelevant; for a product embedding analytics for thousands of end users it is disqualifying, and it is better said here than discovered later.

If you want the numbers with their definitions attached, see what Zilfu reports per network.

Sources

  • Meta, Instagram Platform Insights, retrieved 2026-08-08, https://developers.facebook.com/docs/instagram-platform/insights/
  • Meta, Threads Insights, retrieved 2026-08-08, https://developers.facebook.com/docs/threads/insights
  • Meta, Graph API Insights reference, retrieved 2026-08-08, https://developers.facebook.com/docs/graph-api/reference/v23.0/insights
  • LinkedIn, Organization Share Statistics, retrieved 2026-08-08, https://learn.microsoft.com/en-us/linkedin/marketing/community-management/organizations/share-statistics
  • X, X API fundamentals: metrics, retrieved 2026-08-08, https://docs.x.com/x-api/fundamentals/metrics
  • TikTok, Display API get started, retrieved 2026-08-08, https://developers.tiktok.com/doc/display-api-get-started
  • Ayrshare, Social Media Analytics API, retrieved 2026-08-08, https://www.ayrshare.com/social-media-analytics-api/
  • Pinterest, API v5 reference, retrieved 2026-08-08, https://developers.pinterest.com/docs/api/v5/

Frequently asked questions

What is a social media analytics API?

It is an HTTP interface that returns the metrics a network already collected about your own posts. It is a read surface, not a write one, and it is gated differently: publishing is usually gated on an app audit, while analytics is gated on who owns the post, how old it is, and how many followers the account has. Instagram withholds some metrics below 100 followers; X returns organic metrics only for posts from the last 30 days.

Which social networks report how many people saw a post?

Three of the seven Zilfu reads. Instagram and Facebook expose reach, and LinkedIn exposes uniqueImpressionsCount. X, Threads, TikTok and Pinterest report appearances only, through impression_count, views, view_count and IMPRESSION. That matters because an engagement rate divided by an appearance count is not the same statistic as one divided by a people count, and the two are not comparable.

Does LinkedIn's engagement field divide by people or by impressions?

By impressions. LinkedIn's own schema defines engagement as "Number of organic clicks, likes, comments, and shares over impressions", and its published sample response confirms it: clicks 109,276 plus likes 52 plus comments 70 plus shares 0, over impressionCount 14,490,816, matches the stated 0.007549471334119487 digit for digit. uniqueImpressionsCount sits in the same object and goes unused.

How far back can a social media analytics API read?

From 30 days to a floor in mid-2024, through five different mechanisms that do not compare directly. Facebook sets a retention period of "the last two years"; LinkedIn a rolling query window of "the past 12 months"; Instagram a storage limit of "up to 90 days"; X a post-age rule covering "posts created within the last 30 days"; Threads a guaranteed floor at June 1, 2024, which grows daily and had reached 798 days by August 2026 (its parameters reach back to April 13, but Meta guarantees only the later date).

Can you get Instagram analytics through the API on a small account?

Partly. Meta's own insights page states "Some metrics are not available on Instagram accounts with fewer than 100 followers", so a new or small account gets a thinner response than the documentation implies. Meta also stores user metrics for up to 90 days, so anything older has to have been recorded by a tool as it arrived. Continuous collection is what escapes that cap, not a bigger API request.

Do social media analytics APIs ever remove metrics?

Yes, and on a schedule. Meta's Graph API reference states that "By June 15, 2026, a number of the Page Insights metrics will be deprecated for all API versions", which applies to every version at once rather than only the newest. LinkedIn separately sunset its Marketing Version 202507. Anything you build against a named metric needs to survive that metric disappearing.

What does Threads report, and what is missing?

Threads media insights return views, likes, replies, reposts, quotes and shares, and user insights add clicks, followers_count and follower_demographics, the only audience demographics any of the seven expose here. There is no reach metric, so no people-counting denominator exists on Threads at all. Its history also has a floor: the parameters "do not work for dates before April 13, 2024", and Meta guarantees insights only from June 1, 2024, which is the date to build on.

Is there a free social media analytics API?

Zilfu ships analytics on its Free plan, which covers 2 connected accounts with no credit card, and exposes them over REST and MCP. Ayrshare's analytics API advertises "715 documented fields across 12 networks" but publishes no price on the analytics page itself. Free tiers are common on the posting side and rarer on the reading side, so check which surface a free plan actually opens.

How often should analytics data refresh?

Less often than people expect, because the underlying numbers move slowly and the networks throttle reads. Zilfu collects every four hours and shows the last collection time rather than implying live data. A tool claiming real-time organic analytics is usually reporting a cached figure with a fresher label on it.

Can one API give you the same metrics across every network?

Not honestly. The networks do not collect the same things, so a unified schema either drops what does not fit everywhere or relabels different objects under one name. Pinterest surfaces saves and outbound clicks as ordinary organic metrics while X splits its equivalents across access tiers; Threads reports quotes that Pinterest has no analogue for. The useful design is one that keeps each network in its own units and says so.

Schedule once. Post everywhere.

Free forever, no credit card. Connect your accounts and ship your first post in under a minute.