100 free credits on signup · no card required

LinkedIn Stats API

One URL in. Clean JSON out.

Give the endpoint a public LinkedIn post URL and it returns the reaction, comment and repost counts as JSON, along with the post text and who wrote it. No LinkedIn Marketing API application, no OAuth, no page admin rights. 5 credits per post.

Credits 5 / post
Input ?url=
Cache 15m–7d
GET · BEARER
Request composing…
Fresh when it matters
age-aware cache
Works with your stack
cURL Python Node.js Zapier n8n Make MCP
One key · one credit balance · plain REST

The difference

Stop parsing markup. Start reading fields.

On the left, what a headless browser hands you. On the right, what the endpoint hands you.

Scraping it yourself raw HTML · every call
<div class="feed-shared-update-v2 artdeco-card" data-urn="urn:li:activity:7181111111111111111"><div class="update-components-text relative"><span dir="ltr">We just cut p95 latency in half by moving the cache closer to the edge.</span></div><div class="social-details-social-counts"><li class="social-details-social-counts__item"><span aria-label="842 reactions">842</span></li><li class="social-details-social-counts__comments">63 comments</li><li>41 reposts</li></div><time class="update-components-actor__sub-description">4d</time><code style="display:none">{"data":{"*elements":["urn:li:fsd_update:(urn:li:activity...
×Class names rotate; your selectors break weekly ×Headless browsers, proxies, blocks to babysit ×Counts arrive as strings, not numbers
One GET request 8 typed fields
{
"data": {
"platform": "linkedin",
"entity_id": "7181111111111111111",
"url": "https://www.linkedin.com/posts/linkedin_hiring-activity-7181111111111111111",
"author": {
"handle": "linkedin",
"name": "Example Creator"
},
"posted_at": "2026-06-30T14:05:00Z",
"metrics": {
"views": 1204593,
"likes": 88410,
"comments": 2314,
"shares": 10092
}
},
"request_id": "req_01JZX4M8Q2TE9W"
}
Stable field names, documented nulls No proxies, no browser, no login session Counters are integers you can sort on

The payload

What comes back

{ data, meta?, request_id }
01 Three public counters, no impressions

One object per call, describing a single post. You get the three public engagement counters LinkedIn shows under a post, the full body text, the publish timestamp, and a small author object. That is the complete set — LinkedIn does not put impression or view counts on the public page, so this endpoint does not return them. Only the post owner sees those, inside LinkedIn's own analytics tab.

02 Full post text, untruncated

The `text` field is the post body as written, newlines and emoji included. LinkedIn truncates long posts behind a "see more" toggle in the UI, but the full text comes back here. Documents, images and video attachments are not returned; if a post is nothing but a carousel PDF with no caption, `text` can come back null.

03 Reactions arrive as one total

Reaction counts are a single total. LinkedIn splits reactions into like, celebrate, support, love, insightful and funny, and it shows that breakdown in the UI, but the counter this endpoint reads is the sum. If you need sentiment, read the comments instead.

Field explorer Pick a key to see its type and the caveats.
number|null Nullable Sortable metric
comments

Comment count as LinkedIn displays it. Includes replies on some post shapes, so treat it as an order-of-magnitude figure.

{
"id": "…",
"url": "https://www.linkedin.com/posts/linkedin_hiring-activity-7181111111111111111",
"text": "…",
"likes": 88410,
"comments": 2314,
"shares": 10092,
"posted_at": "2026-06-30T14:05:00Z",
"author": { … }
}
Good fit

Reach for this when

  • Benchmarking your own posts against competitors' without either party granting page access — everything here is readable logged out, so you can measure accounts you have no relationship with.
  • Building an internal engagement dashboard that mixes LinkedIn with other networks, where LinkedIn's own analytics export is too manual and covers only pages you administer.
  • Vetting a thought-leadership hire or agency: pull 30 of their posts and check whether engagement is steady or concentrated in two viral hits.
  • Attaching live counters to a content calendar row after publish, so nobody has to open the post and squint at the reaction bar.
  • Deciding which posts are worth the deeper (and pricier) call — check counters here first, then pull comment text only for the ones that landed.
Different job?

There's an endpoint for that

  • You want impressions, click-through or dwell time. Those are private analytics; no public endpoint can return them, ours included. Export them from LinkedIn while signed in as the page admin.
  • You want the comment text and commenter names, not the count — that is the LinkedIn Comments API.
  • You have a company page and want its recent posts rather than one known URL. Start with the LinkedIn Company Posts API, then feed the URLs here if you want to re-poll them individually. For one person's posts there is no equivalent endpoint — we do not ship one.
  • You are researching people rather than content. The LinkedIn Profile API returns headline, location and current company; this endpoint only carries a name and a handle.

Pricing

Start free, pay for what comes back

One post is 5 credits — about 2.5¢ on the monthly plan, 2.3¢ on annual. $5 covers roughly 200 posts, cached reads cost the same as fresh ones, and failed calls are never charged.

Estimate your bill
$15/ month
30 posts/day × 5 credits × 365 days = 54,750 credits/yr, or $183/yr on the annual plan plus 43 top-up blocks Whichever plan is cheaper for that volume, divided by 12.
30
102,000
Credits / yr 54,750
Plan Annual $54/yr
Per post

Estimate only, on a full-year basis. 5 credits per returned post. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.

Free trial
100 credits

On signup, no card. Your key is on screen immediately.

Get your free API key
Monthly $5/mo 1,000 credits. Top-ups $4 per extra 1,000.
Annual $54/yr 12,000 credits. Top-ups $3 per extra 1,000.

Entry price, side by side

Cheapest way to start

Verified July 2026 from each vendor's live pricing page
ScraperSocial
$5 / mo 1,000 credits · 100 free credits, no card
Supadata
$5 / mo 300 credits, annual commitment · 100 free/mo
SocialKit
$29 / mo 12,000 credits · 20 free credits
Dumpling AI
$40 / mo Billed annually · free tier size unpublished
ScrapeCreators
$47 pack 25,000 credits, no subscription · 100 free once

Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.

Engineering notes

Docs you can build on

We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.

Failed calls are never charged Public data only, no login session Built for parallel traffic

LinkedIn lets authors restrict a post to connections only, and posts inside groups are visible only to members. Those return an error, not a partial object, and the call is not charged. If you can open the URL in a private browser window while logged out, this endpoint can read it. If you cannot, neither can we.

The same applies to posts from deactivated accounts and anything LinkedIn has removed. We do not hold a logged-in session and do not attempt one.

Copy the link straight from the post's three-dot menu. That gives you a /feed/update/urn:li:activity:… or /posts/handle_slug-… form, and both work. Links copied from the browser address bar while scrolling the feed sometimes carry a tracking suffix after ?; that is harmless.

A profile URL is not a post URL. Passing /in/someone here will not error usefully — send that to the LinkedIn Profile API instead.

LinkedIn updates public engagement figures on its own schedule and rounds at scale. Two calls minutes apart on a busy post can differ, and the difference is not necessarily real growth. If you are drawing a curve, sample at a fixed cadence — the same minute each hour, or the same hour each day — so your intervals are even.

Posts older than a few weeks are effectively static. There is little value in re-polling them, and it is the easiest credit saving available.

The author object carries a handle and a display name, nothing more. That is what the post page exposes. It also means the name may be a company name rather than a person's when the post came from a company page, and `handle` can be null for those. Do not assume the handle is always a /in/ slug.

Responses sit in the fast cache class, so a repeat call for the same post inside the window comes back in milliseconds with x-cache: hit. A hit still costs 5 credits. Pass fresh=true when you deliberately need to skip the cache, such as the first read of a monitoring cycle. Failed calls are never charged.

Questions

Frequently asked

Send a GET to /v1/linkedin/stats with the post URL and your API key. LinkedIn's Marketing Developer Platform requires a partner application, an approved app and page admin rights, and even then it only reports on pages you control. This endpoint reads the same public post page a signed-out visitor sees, so it works on any account, including ones you have no relationship with.

No, and no public API can. LinkedIn shows impressions only to the post's author inside its own analytics panel — the figure never appears on the public page. What you get here is reactions, comments and reposts. If impressions matter to your reporting, export them from LinkedIn while signed in as the owner and join them to this data on the post URN.

5 credits per post. Credits are $0.005 each on the monthly plan and $0.0045 on annual, so roughly 2.5 cents a call, and $5 covers about 200 posts. Cached responses cost the same as fresh ones. Calls that fail are not charged, including posts that turn out to be private.

Yes. The `likes` field is the total across all six LinkedIn reaction types, matching the number LinkedIn prints next to the reaction icons. There is no per-type breakdown in the response. If you need to know whether people were congratulating or disagreeing, pull the comment text with the LinkedIn Comments API and read it.

One URL per call. Run them in parallel — the calls are independent and the API expects concurrent traffic. If you are starting from a company page rather than a list of links, the LinkedIn Company Posts API returns a page of posts with the counters already attached — the same 5 credits per post, but one request instead of many. There is no equivalent endpoint for an individual's posts.

LinkedIn often renders post age as a relative string like "2mo" rather than a timestamp, and on those shapes there is no absolute date to normalize. Rather than guessing a date from "2mo", the field comes back null. If publish time is essential to your pipeline, record the first time you saw the post and use that as a floor.

We read only pages that load without a login, exactly as a browser would. We do not authenticate, do not bypass access controls, and cannot reach connection-only posts, group posts or private profiles. That said, LinkedIn's terms of service and your own local regulations apply to what you do with the data, and that is your call to make, not ours.

Next

Pairs well with

Full LinkedIn API reference →
/v1/linkedin/comments
LinkedIn Comments API Paginated comments on a LinkedIn post; charged per comment returned. 5 cr / comment
/v1/linkedin/company-posts
LinkedIn Company Posts API Latest posts from a LinkedIn company page with per-post metrics. 5 cr / post
/v1/linkedin/profile
LinkedIn Profile API Public profile data for a LinkedIn member: headline, positions, education. 10 cr / profile
/v1/instagram/stats
Instagram Stats API Likes, comments and view counts for an Instagram post or reel. 1 cr / post

More LinkedIn endpoints

/v1/linkedin/comments Paginated comments on a LinkedIn post; charged per comment returned. 5 credits / comment /v1/linkedin/profile Public profile data for a LinkedIn member: headline, positions, education. 10 credits / profile /v1/linkedin/company Company page data: industry, size, followers and description. 10 credits / company /v1/linkedin/company-posts Latest posts from a LinkedIn company page with per-post metrics. 5 credits / post /v1/linkedin/search Keyword search over public LinkedIn posts. 5 credits / result /v1/linkedin/people-search Search public LinkedIn profiles by keyword, title, company or location. 5 credits / profile

Try the LinkedIn Stats endpoint free

100 trial credits on signup — no card, key on screen immediately.

1 Sign up free no card · 30 seconds
2 Copy your key sk_live_...
3 GET the endpoint /v1/linkedin/stats
Get your free API key