LinkedIn Post Analytics API: Pages and Personal Profiles

By Nick ReyesPublished 8 min read

The short answer

LinkedIn post analytics come from the Community Management API. For a company Page, call organizationalEntityShareStatistics with the rw_organization_admin scope. For a personal profile, call memberCreatorPostAnalytics with r_member_postAnalytics, one metric per request. Page post stats are organic only and cover the past 12 months. Adeli returns impressions, reactions, comments, clicks, and shares for both through one social media API.

The LinkedIn post analytics API is two endpoints in LinkedIn's Community Management API: organizationalEntityShareStatistics for posts on a company Page, and memberCreatorPostAnalytics for posts on a member's personal profile. They take different scopes, different URN formats, and different date formats, and many failed calls in developer forums come from mixing the two up.

That mix-up shows in the forum threads: developers get a 403 asking for one post's numbers when the Page totals worked fine, or a 404 for a post they published minutes earlier. This guide covers both endpoints, the requests that work, and the errors developers hit, with every rule checked against LinkedIn's docs on Microsoft Learn.

Which LinkedIn API returns post analytics?

LinkedIn post analytics come from the Community Management API, one of the products in LinkedIn's Marketing API program. The Community Management overview lists Page Analytics and Member Analytics as approved use cases, and both sit in the same product your app uses to post.

One result on the first page of Google says share statistics come through the Marketing API instead of Community Management. Both names fit, because LinkedIn's Marketing API is the umbrella and Community Management is a product inside it. The share statistics reference sits in the Community Management docs and needs only rw_organization_admin, a scope the Community Management API grants. You don't need the Advertising API for organic post numbers.

What you want Endpoint Scope the member grants
Page post stats (impressions, clicks, likes, comments, shares) organizationalEntityShareStatistics rw_organization_admin
Page views and button clicks organizationPageStatistics rw_organization_admin
Page follower gains and demographics organizationalEntityFollowerStatistics rw_organization_admin
Personal profile post stats memberCreatorPostAnalytics r_member_postAnalytics
Personal profile followers memberFollowersCount r_member_profileAnalytics
Sponsored post results Ad Analytics (Advertising API) r_ads_reporting

What do you need before you start?

  • A LinkedIn developer app with the Community Management API approved. LinkedIn vets the request and starts every app on Development tier.
  • The right member. For Page analytics, the member who authorizes your app must hold the ADMINISTRATOR role on that Page. For personal analytics, the member reads only their own posts.
  • The scopes in your OAuth request: rw_organization_admin for Pages, and r_member_postAnalytics plus r_member_profileAnalytics for profiles.
  • A Linkedin-Version header in YYYYMM form and X-Restli-Protocol-Version: 2.0.0 on every call.
  • The post URN from when you published it: urn:li:share:… or urn:li:ugcPost:….

Step 1: Get Page post analytics with the LinkedIn Page analytics API

The LinkedIn Page analytics API for posts is organizationalEntityShareStatistics, called with the Page's organization URN. Leave out timeIntervals and it returns lifetime totals for the Page's posts:

curl "https://api.linkedin.com/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn%3Ali%3Aorganization%3A2414183" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Linkedin-Version: 202610" \
  -H "X-Restli-Protocol-Version: 2.0.0"

Each element carries a totalShareStatistics object with impressionCount, uniqueImpressionsCount, clickCount, likeCount, commentCount, shareCount, and engagement.

To get specific posts, add them as a list. Use shares for urn:li:share URNs and ugcPosts for urn:li:ugcPost URNs:

curl "https://api.linkedin.com/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn%3Ali%3Aorganization%3A2414183&shares=List(urn%3Ali%3Ashare%3A7132564752928563200,urn%3Ali%3Ashare%3A7132402731377438720)" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Linkedin-Version: 202610" \
  -H "X-Restli-Protocol-Version: 2.0.0"

Four rules from LinkedIn's reference that catch people:

  • Organic only. Sponsored activity isn't counted. Paid numbers come from Ad Analytics.
  • 12 months back. The endpoint returns share data only within a rolling 12-month window.
  • No daily breakdown per post. Time-bound statistics aren't supported for specific share or UGC post queries. Daily numbers come only at the Page level.
  • Missing means zero. A post with no impressions or actions is left out of the response, and LinkedIn says to treat it as zero for every metric.

Step 2: Get daily Page numbers with timeIntervals

Daily or monthly Page numbers come from adding timeIntervals to the same call, with timestamps in milliseconds since the epoch. The granularity is DAY or MONTH. With protocol version 2.0.0, the parameter is one Rest.li object:

curl "https://api.linkedin.com/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn%3Ali%3Aorganization%3A2414183&timeIntervals=(timeRange:(start:1790812800000,end:1791417600000),timeGranularityType:DAY)" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Linkedin-Version: 202610" \
  -H "X-Restli-Protocol-Version: 2.0.0"

Each element gets a timeRange and the totals for that day. Two related Page endpoints take the same timeIntervals shape:

  • organizationPageStatistics returns Page views and clicks, split by desktop and mobile and by section (overview, careers, jobs, life).
  • organizationalEntityFollowerStatistics returns follower gains, organic and paid. Without timeIntervals it returns lifetime counts by seniority, industry, function, country, and company size. LinkedIn's follower statistics page says the time-bound version runs from 12 months before the request date to 2 days before it.

The shareCount in daily results won't add up to the lifetime number. LinkedIn notes that time-bound data leaves out instant reposts.

Step 3: Get personal profile analytics with the LinkedIn member post analytics API

The LinkedIn member post analytics API is memberCreatorPostAnalytics, and it returns one metric per request for the authenticated member's own posts. LinkedIn opened it to third-party tools on July 8, 2025. The entity finder reads one post; the URN goes inside a wrapper that names its type:

curl "https://api.linkedin.com/rest/memberCreatorPostAnalytics?q=entity&entity=(share:urn%3Ali%3Ashare%3A7325786486870552578)&queryType=IMPRESSION&aggregation=TOTAL" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Linkedin-Version: 202610" \
  -H "X-Restli-Protocol-Version: 2.0.0"

For a urn:li:ugcPost, the wrapper is (ugc:urn%3Ali%3AugcPost%3A…). The me finder (q=me) totals the same metric across all of the member's posts.

Setting Values, from LinkedIn's member post statistics reference
queryType IMPRESSION, MEMBERS_REACHED, RESHARE, REACTION, COMMENT; from version 202604 also POST_SAVE, POST_SEND, LINK_CLICKS, PREMIUM_CTA_CLICKS, FOLLOWER_GAINED_FROM_CONTENT, PROFILE_VIEW_FROM_CONTENT
aggregation TOTAL (default) or DAILY; DAILY isn't supported for MEMBERS_REACHED, LINK_CLICKS, FOLLOWER_GAINED_FROM_CONTENT, or PROFILE_VIEW_FROM_CONTENT
dateRange (start:(day:4,month:5,year:2024),end:(day:6,month:5,year:2024)), start inclusive, end exclusive; omit it for the post's lifetime

Two behaviors to plan for:

  • One metric per call. A post card that shows impressions, reactions, comments, and reshares is four requests. On Development tier that's four of a member's 100 daily calls.
  • Best-effort counts. LinkedIn says the data shouldn't be used for billing, and that RESHARE, REACTION, and COMMENT from the me finder aren't consistent with the LinkedIn UI.

LinkedIn's director of creator products, Sam Corrao Clanon, explained the purpose to Digiday at launch:

"What this will do on the creator side … is give a more complete picture of what their reach looks like across platforms, from whatever tool they use."

Sam Corrao Clanon, director of creator products at LinkedIn, in Digiday, July 2025

If your product reports on customers' LinkedIn posts, this endpoint means they stop exporting numbers from LinkedIn by hand.

Step 4: Add the LinkedIn profile analytics API for followers

The LinkedIn profile analytics API for followers is memberFollowersCount, which needs the r_member_profileAnalytics scope. q=me returns the lifetime count; q=dateRange returns a daily series:

curl "https://api.linkedin.com/rest/memberFollowersCount?q=dateRange&dateRange=(start:(year:2026,month:10,day:1),end:(year:2026,month:10,day:29))" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Linkedin-Version: 202610" \
  -H "X-Restli-Protocol-Version: 2.0.0"

LinkedIn's scope description for r_member_profileAnalytics also names profile viewers and search appearances. The Community Management overview, though, lists only three member analytics endpoints: follower statistics, post statistics, and video analytics.

What errors do developers hit with LinkedIn post analytics?

Most LinkedIn post analytics errors come from the member's role, the URN type, or or the date format. These are from public developer threads.

"…when I ask for a concrete share created in this organization I get a 403…"

jordi on Microsoft Q&A, July 2023

"I found out that I wasn't admin of the organization after all, only of the corresponding developer app."

Christian Kaul on Stack Overflow, April 2024

"…every post has the same result for each day (i.e. days 1 through 7 have the same data for each post, but I expect different data for each day for each post)."

A developer on Stack Overflow, March 2026

"End time must be greater than start time by at least one multiple of the granularity type"

Avedis Maroukian on Stack Overflow, March 2023

"…consistently receive a 404 Resource not found response, despite successful OAuth and post creation."

Meenakshi Joshi on Stack Overflow, January 2026

"LinkedIn doesn't allow access to analytics for personal (member) posts through their public APIs."

A reply on the Make Community forum, December 2025

Each one maps to a rule above:

Symptom Likely cause Fix
403 on specific posts, 200 on Page totals The member isn't an ADMINISTRATOR of the Page, or a ugcPost URN went in shares Check the role with organizationAcls; match shares to urn:li:share and ugcPosts to urn:li:ugcPost
Same numbers every day for one post Time-bound stats aren't supported for specific posts Read daily numbers at the Page level, or store lifetime totals daily and subtract
"End time must be greater than start time…" Timestamps in seconds, or a range over 12 months Use milliseconds and stay inside the rolling 12-month window
404 from memberCreatorPostAnalytics The URN isn't wrapped by type, or the post isn't the member's own Send entity=(share:…) or entity=(ugc:…) with the author's token
"No analytics for personal posts" Advice from before July 2025 Request r_member_postAnalytics and use memberCreatorPostAnalytics

Is there a LinkedIn analytics API documentation page for all of this?

LinkedIn's analytics API documentation lives on Microsoft Learn, split into one page per endpoint under Community Management. These are the pages to bookmark:

Each page has a version picker. Read the version that matches your Linkedin-Version header, because metrics such as POST_SAVE only exist from 202604.

Is there a faster way to get LinkedIn post analytics?

Adeli returns LinkedIn post analytics for Pages and personal profiles through one social media API, so your product doesn't need its own Community Management approval, scope handling, or per-metric calls. Your users connect a Page or their personal profile, and you read their numbers with the same API key you use for every other network.

Lifetime counters for up to five posts, by the providerId Adeli returned when you published to LinkedIn:

curl "https://app.tryadeli.com/api/v1/analytics/linkedin/post-insights?accountId=<ACCOUNT_ID>&postUrns=urn:li:share:7251234567890123456" \
  -H "Authorization: Bearer $ADELI_API_KEY"

Followers and a daily series for the last 1 to 30 complete UTC days:

curl "https://app.tryadeli.com/api/v1/analytics/linkedin/account-insights?accountId=<ACCOUNT_ID>&days=7" \
  -H "Authorization: Bearer $ADELI_API_KEY"

What you get back, per Adeli's docs:

  • Post insights. Impressions, reactions, and comments for every post; clicks and shares for Page posts. See LinkedIn post insights.
  • Account insights. Followers plus daily impressions, reactions, comments, shares, and follower gain; Pages also get clicks and page views. See LinkedIn account insights.
  • Honest gaps. A metric LinkedIn didn't return comes back as null, never zero, and is named in unavailable.
  • Cached snapshots. Adeli serves a snapshot refreshed at most every six hours, with fetchedAt and a stale flag, instead of calling LinkedIn on every request. The LinkedIn API rate limit guide explains why.

One limit comes from LinkedIn: Adeli can't list a personal profile's posts, so personal profile analytics cover posts published through Adeli. A Page's recent posts include those made directly on LinkedIn. The same key returns analytics for Instagram, Facebook, TikTok, and YouTube through Adeli's analytics API, and it publishes too: see the LinkedIn posting API guide.

faq

Frequently asked questions

Does the LinkedIn API return analytics for personal profile posts?

Yes. LinkedIn's memberCreatorPostAnalytics endpoint returns impressions, members reached, reshares, reactions, and comments for the authenticated member's posts, plus saves, sends, link clicks, and follower and profile view gains from version 202604. The member grants the r_member_postAnalytics scope through OAuth.

Are LinkedIn post analytics real time?

Not exactly. LinkedIn calls member post analytics best-effort accurate and says the counts shouldn't be used for billing. For Page posts, LinkedIn points to its socialActions endpoint when you need like and comment counts that match what the LinkedIn feed shows.

Can I get analytics for sponsored LinkedIn posts with the share statistics API?

No. LinkedIn's organizationalEntityShareStatistics endpoint returns organic statistics only and doesn't count sponsored activity. Paid results come from LinkedIn's Ad Analytics in the Advertising API, which is a separate product with its own access request.

How far back do LinkedIn Page post analytics go?

Twelve months. LinkedIn's share statistics endpoint returns share data only within a rolling 12-month window, and time-bound follower statistics cover 12 months before the request date up to 2 days before it. Store the numbers yourself if you need a longer history.

Power your next project
with one ads & social media API

Give your users publishing, scheduling, and analytics through one integration your team can actually maintain.

Try with agents

Start with free credits. No credit card required.