Skip to content
Social media APIs
Analytics APIsFigures checked 15 min read

Social media analytics APIs: what every network exposes, what it costs, and what it quietly deleted

There is no single social media analytics API. There are eight networks with eight different ideas of what a “view” is, three of which renamed the metric in the last eighteen months. This is the map you need before designing a schema — who is allowed to call each API, what comes back, what it costs per call, and which fields will return an error next year.

8
Networks with a documented metrics surface

Seven official APIs plus Bluesky’s open protocol

$0.005
Per post read on the X API

The only network charging per metric read

21 Apr 2025
Instagram removed “impressions”

Replaced by “views” across all API versions

15 Jun 2026
Facebook Page impressions gone everywhere

Deprecation began 15 Nov 2025

200 / hr
Instagram calls per user token

Business Use Case rate limit

Partner-only
LinkedIn page analytics access

Community Management API approval required

On this page+
  1. The map
  2. Impressions are being deleted, one network at a time
  3. Rate limits and quotas, network by network
  4. Normalising the metrics without lying
  5. Reading each API: the minimum viable calls
  6. Access: who gets a token, and how long it takes
  7. Where PostMCP fits

The map

One row per network. “Who” is who can obtain a token that returns the metrics; “Cost” is the network’s charge for the API itself, not for any tool built on it.

NetworkAPIWho can use itKey metricsCostThe gotcha
YouTubeYouTube Analytics API (reports.query) and Reporting APIAny Google Cloud project, OAuth from the channel ownerViews, estimated minutes watched, average view duration, subscribers gained, likes, shares, traffic sources, demographics; revenue for ownersFree; own quota separate from the Data APIReports are by date and dimension, not per video in real time — a per-video call is a filtered report
InstagramInstagram Platform insights (/{ig-user-id}/insights, /{media-id}/insights)Professional (Business or Creator) accounts, via Instagram Login or Facebook LoginAccount: reach, views, follower_count, profile_views, accounts_engaged. Media: views, reach, likes, comments, saved, shares, total_interactionsFreeimpressions and plays removed 21 April 2025; account insights are limited to 30-day ranges per call
Facebook PagesPage Insights (/{page-id}/insights)Page admins, Page access tokenpage_media_view, post_media_view, page_follows, engagement, video views, clicksFreepage_impressions, page_fans and post_impressions deprecated from 15 November 2025; gone from every version by 15 June 2026
ThreadsThreads Insights API (/{threads-user-id}/threads_insights, /{media-id}/insights)Any Threads account that authorises threads_manage_insightsPer post: views, likes, replies, reposts, quotes, shares. Account: views, followers_count, follower demographicsFreeDemographics need 100 followers on a personal account; the API launched in June 2024, so there is no history before that
XX API v2 public_metrics, non_public_metrics, organic_metricsAny developer with pay-per-use credits; non-public metrics need the author’s OAuth 2.0 user contextImpressions, likes, reposts, replies, quotes, bookmarks, url_link_clicks, user_profile_clicks$0.005 per post read, capped at 2M a month; legacy Basic $200 closedNon-public metrics are only available for the last 30 days of posts
LinkedInCommunity Management API (organization share, follower and page statistics; memberCreatorVideoAnalytics)Approved partners, Development tier for test pages then Standard for productionImpressions, clicks, likes, comments, shares, engagement per share; follower gains by demographic; page viewsFree once approvedPersonal-profile analytics are essentially unavailable; approval is a review, not a form
TikTokDisplay API (own account); Research API (academic); Business API (ads)Display: any approved app with the user’s Login Kit consent. Research: academic and non-profit institutions in the US, EEA, UK, Switzerland, BrazilDisplay: view_count, like_count, comment_count, share_count per video, follower and likes counts per profileFreeNothing about other accounts is available commercially; watch time and retention are not exposed at all
BlueskyAT Protocol (app.bsky.feed.getPosts, getPostThread, getLikes, getRepostedBy)Anyone — public endpoints need no tokenlikeCount, repostCount, replyCount, quoteCount per post; followersCount per profileFreeNo impressions, reach or views exist at all; counts are public and identical for every caller

Impressions are being deleted, one network at a time

The single most consequential change for anyone storing social metrics is that Meta is replacing “impressions” with “views” everywhere, and doing it through hard deprecations that return errors rather than zeros.

NetworkRemovedReplaced byEffective
Instagramimpressions on media and account insights; plays, replays, initial plays on Reelsviews (which now includes replays); profile_views; story views21 April 2025, all API versions from v22.0
Facebook Pagespage_impressions*, post_impressions*, page_fans*page_media_view, post_media_view, page_followsFrom 15 November 2025; every version by 15 June 2026
ThreadsNever had impressionsviews from launchJune 2024

The definitions differ, which is the trap. An Instagram impression counted a piece of content appearing on a screen; a view counts a piece of content being seen or played, and Reels views include replays. Historical impressions and new views are not the same series, and a chart that stitches them together lies at the seam. Store the metric name and the API version alongside every value.

Rate limits and quotas, network by network

Only X bills per call. Everyone else throttles. These are the published ceilings you design a polling schedule around:

NetworkLimitScopeReset
YouTube Analytics APIIts own daily quota, separate from the Data API’s 10,000 unitsPer Google Cloud projectMidnight Pacific
YouTube Data API10,000 units a day; a videos.list with statistics costs 1 unit per callPer projectMidnight Pacific
Instagram Platform200 calls per hour per app-user pair (Business Use Case)Per connected accountRolling hour
Facebook Pages4,800 × the number of engaged users in the last 24 hours, per app-user pairPer Page tokenRolling 24 hours
Threads APIPublished per-account daily caps on publishing; reads throttle under a shared Business Use Case limitPer Threads accountRolling 24 hours
X APIPay-per-use credits; hard cap of 2 million post reads a monthPer developer accountMonthly
LinkedInPer-endpoint daily limits shown in the Developer Portal’s Analytics tab; not published in docsPer app and per memberMidnight UTC
TikTok Display APIPer-app daily quotas set at approvalPer appDaily
Bluesky3,000 requests per 5 minutes per IP on public endpointsPer IPRolling 5 minutes

The polling schedule that follows from those numbers: read Instagram and Facebook insights once a day per post for the first week and weekly after that, because 200 calls an hour per account is generous for daily reads and hopeless for anything real-time. Poll X metrics on a budget you set in dollars, not requests. Read Bluesky as often as you like. Prefer webhooks where they exist — Meta and Threads fire them for comments and mentions, not for metric changes, so metrics remain a pull.

Normalising the metrics without lying

A unified analytics layer has to decide what “engagement” means across networks that count different actions. There are two defensible approaches and one common mistake.

  • Union of actions. Engagement = every action the network reports (likes, comments, shares, saves, clicks, quotes, bookmarks). Honest but incomparable — X counts profile clicks, Instagram does not.
  • Common core. Engagement = likes + comments + shares only, because every network reports those three. Comparable, and it undercounts the networks where saves or clicks dominate.
  • The mistake is a single “engagement rate” column whose denominator changes by network. TikTok divides by views, Instagram by reach or followers, X by impressions, Bluesky has no denominator at all. Store the numerator and the denominator separately and name the denominator.

Time windows also disagree. Instagram account insights accept at most 30 days per request. X non-public metrics exist only for posts from the last 30 days. TikTok’s Display API has no time dimension at all — it returns the current counts. YouTube Analytics is the only one that will give you a per-day series for a video published two years ago. Design the ingest to snapshot current counts on a schedule rather than expecting any network to give you history on request.

Reading each API: the minimum viable calls

The calls that return the headline numbers, so you can see how differently they are shaped:

analytics-calls.sh
# YouTube — a per-video daily series (Analytics API, OAuth with yt-analytics.readonly)
GET https://youtubeanalytics.googleapis.com/v2/reports
  ?ids=channel==MINE&startDate=2026-08-01&endDate=2026-08-31
  &metrics=views,estimatedMinutesWatched,averageViewDuration,subscribersGained
  &dimensions=day&filters=video==VIDEO_ID

# Instagram — media insights (Instagram Login path)
GET https://graph.instagram.com/v26.0/{media-id}/insights
  ?metric=views,reach,likes,comments,saved,shares,total_interactions

# Facebook Page — post-level media views (the replacement for post_impressions)
GET https://graph.facebook.com/v26.0/{post-id}/insights
  ?metric=post_media_view,post_clicks,post_reactions_by_type_total

# Threads — per-post insights
GET https://graph.threads.net/v1.0/{media-id}/insights
  ?metric=views,likes,replies,reposts,quotes,shares

# X — public metrics on up to 100 posts per call (each post read is billed)
GET https://api.x.com/2/tweets?ids=ID1,ID2&tweet.fields=public_metrics,non_public_metrics

# Bluesky — public counts, no token
GET https://public.api.bsky.app/xrpc/app.bsky.feed.getPosts?uris=at://did:plc:.../app.bsky.feed.post/...

Two shapes stand out. YouTube is a reporting query with dimensions and filters — a small SQL. Everything else is a per-object fetch. A unified layer ends up with two ingest paths whatever it does.

Access: who gets a token, and how long it takes

NetworkApproval neededTypical timeNotes
YouTubeNone to start; OAuth consent screen verification for productionDays for verificationSensitive scopes trigger a Google review of your privacy policy and demo video
Instagram / Facebook / ThreadsMeta App Review for Advanced Access on each permission; Business Verification for business appsDays to weeksStandard Access works for accounts with a role on your app, which is enough to build against
XDeveloper account plus loaded creditsSame dayThe cost is the gate, not the review
LinkedInCommunity Management API partner applicationWeeks to months; many applications are declinedDevelopment tier lets you build against test pages before Standard is granted
TikTokApp review for Display API scopesDays to weeksResearch API requires institutional eligibility, not a review
BlueskyNoneImmediatePublic endpoints; authenticated ones need an app password or OAuth

Where PostMCP fits

PostMCP is the publishing half of this picture, not the analytics half. Its API creates, schedules and publishes posts to LinkedIn, X, Facebook, Instagram, Threads, Bluesky and YouTube, and get_post returns the per-profile delivery state and live permalink for every post — the ids you feed into the insights calls above. It does not expose analytics endpoints, and this page exists because the people integrating the publishing API keep asking where the metrics come from. The honest answer is: from each network’s own insights API, on the account owner’s token, under the limits in the tables above. Pair the two and you have the loop; pretend one covers the other and you have a schema that breaks next April.

Frequently asked questions

Is there a single API for social media analytics across all networks?+

Not from the networks themselves. Each exposes its own insights API with its own metric names, limits and access process. Third-party unified APIs exist and are essentially a normalisation layer over the eight APIs on this page, with the cost of X reads and the LinkedIn partner approval passed through to you one way or another.

Which social media analytics APIs are free?+

YouTube Analytics, Instagram and Facebook insights, Threads insights, TikTok’s Display API and Bluesky’s public endpoints charge nothing per call; they rate-limit instead. LinkedIn’s Community Management API is free once you are approved as a partner. X is the exception, at $0.005 per post read since February 2026.

Why does the Instagram API return an error for impressions?+

Meta removed the impressions metric from media and account insights on 21 April 2025 across all API versions, along with plays on Reels, and replaced them with views. Requests for impressions on media published after the cut-off return an invalid-metric error rather than zero.

What replaced page_impressions in the Facebook Page Insights API?+

page_media_view and post_media_view, with page_follows replacing page_fans. Deprecation began on 15 November 2025 for new versions and applies to every version by 15 June 2026. The new metrics count content being seen rather than a page appearing in a feed, so the series are not continuous.

Can I get LinkedIn analytics through the API?+

Only for organization pages, and only as an approved Community Management API partner, which is a review that takes weeks to months. Personal-profile analytics are not available through the API; a member video analytics endpoint arrived in the 202506 version for partners. Most teams end up with LinkedIn’s own page analytics export instead.

Does the TikTok API provide analytics?+

For your own account, yes: the Display API returns view, like, comment and share counts per video and follower counts per profile, after the user signs in through Login Kit. There is no watch-time or retention data, and no commercial way to read other accounts. The Research API is restricted to academic and non-profit institutions.

Does PostMCP have an analytics API?+

No. PostMCP’s API publishes and schedules posts and returns each post’s delivery state and live URL per profile. Analytics come from each network’s own insights API on the account owner’s token; this page maps those so the two can be paired.

Sources, checked September 6, 2026

  1. 01Meta for Developers — Page Insights API updates (August 2025)
  2. 02Meta for Developers — Page insights reference
  3. 03Meta for Developers — Graph API rate limiting
  4. 04Emplifi — Instagram insights metrics deprecation, 21 April 2025
  5. 05Google for Developers — YouTube Analytics API data model
  6. 06Microsoft Learn — LinkedIn Community Management overview
  7. 07TikTok for Developers — Research API access and eligibility
  8. 08Postproxy — X API pricing 2026

Limits, prices and metric names on this page are the vendors’ own at the date above. When one moves upstream we update the figure and the date together.

The publishing half, ready to pair

One REST call or MCP tool publishes to seven networks and hands back the live post ids your analytics calls need. 20 posts a month free.