LinkedIn Post Scraper API
Five endpoints covering the whole content graph: posts by a person, posts by a company, keyword post search, and the comments and reactions on any individual post.
Example response
Generated from the live API, so it is exactly the shape your code will parse.
{
"pagination": {
"totalElements": 1987,
"totalPages": 40,
"pageNumber": 1,
"previousElements": 0,
"pageSize": 3,
"paginationToken": "eyJwYWdlIjoyLCJjdXJzb3IiOiJhYmMxMjMifQ"
},
"elements": [
{
"id": "ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVOgr1LM",
"linkedinUrl": "https://www.linkedin.com/in/williamhgates",
"content": "Google",
"contentAttributes": [],
"author": {
"id": "ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVOgr1LM",
"universalName": null,
"publicIdentifier": "williamhgates",
"type": "Google",
"name": "William Gates",
"linkedinUrl": "https://www.linkedin.com/in/williamhgates",
"info": "Google",
"website": "https://www.google.com",
"websiteLabel": "Google",
"avatar": {
"url": "https://www.linkedin.com/in/williamhgates",
"width": 100,
"height": 100
},
"urn": "ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVOgr1LM",
"profileId": "ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVOgr1LM"
},
"postedAt": {
"timestamp": 100,
"date": "2026-08-02T15:29:54+00:00",
"postedAgoShort": "Google",
"postedAgoText": "Google"
},
"postImages": [],
"article": {
"title": "Co-chair at Bill & Melinda Gates Foundation",
"subtitle": "Google",
"link": "https://www.linkedin.com/in/williamhgates",
"linkLabel": "Google",
"description": null,
"image": {
"url": "https://www.linkedin.com/in/williamhgates",
"width": 100,
"height": 100
}
},
"socialContent": {
"hideCommentsCount": true,
"hideReactionsCount": true,
"hideSocialActivityCounts": true,
"hideShareAction": true,
"hideSendAction": true,
"hideRepostsCount": true,
"hideViewsCount": true,
"trustInterventionBanner": null,
"hideReactAction": true,
"hideCommentAction": true,
"shareUrl": "https://www.linkedin.com/in/williamhgates",
"showContributionExperience": true,
"showSocialDetail": true
},
"comments": [],
"header": {
"text": null
},
"entityId": "ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVOgr1LM",
"shareUrn": "Google",
"shareLinkedinUrl": "https://www.linkedin.com/in/williamhgates",
"engagement": {
"id": "ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVOgr1LM",
"likes": 428,
"comments": 37,
"shares": 11,
"reactions": [
{
"type": "Google",
"count": 100
}
]
}
},
{
"id": "ACoAAAAyIB4BFmMkiYQtEHXvS7hOF71E6dVj3sQ",
"linkedinUrl": "https://www.linkedin.com/in/satyanadella",
"content": "Microsoft",
"contentAttributes": [],
"author": {
"id": "ACoAAAAyIB4BFmMkiYQtEHXvS7hOF71E6dVj3sQ",
"universalName": null,
"publicIdentifier": "satyanadella",
"type": "Microsoft",
"name": "Satya Nadella",
"linkedinUrl": "https://www.linkedin.com/in/satyanadella",
"info": "Microsoft",
"website": "https://www.microsoft.com",
"websiteLabel": "Microsoft",
"avatar": {
"url": "https://www.linkedin.com/in/satyanadella",
"width": 101,
"height": 101
},
"urn": "ACoAAAAyIB4BFmMkiYQtEHXvS7hOF71E6dVj3sQ",
"profileId": "ACoAAAAyIB4BFmMkiYQtEHXvS7hOF71E6dVj3sQ"
},
"postedAt": {
"timestamp": 101,
"date": "2026-08-01T15:29:54+00:00",
"postedAgoShort": "Microsoft",
"postedAgoText": "Microsoft"
},
"postImages": [],
"article": {
"title": "Chairman and CEO at Microsoft",
"subtitle": "Microsoft",
"link": "https://www.linkedin.com/in/satyanadella",
"linkLabel": "Microsoft",
"description": null,
"image": {
"url": "https://www.linkedin.com/in/satyanadella",
"width": 101,
"height": 101
}
},
"socialContent": {
"hideCommentsCount": true,
"hideReactionsCount": true,
"hideSocialActivityCounts": true,
"hideShareAction": true,
"hideSendAction": true,
"hideRepostsCount": true,
"hideViewsCount": true,
"trustInterventionBanner": null,
"hideReactAction": true,
"hideCommentAction": true,
"shareUrl": "https://www.linkedin.com/in/satyanadella",
"showContributionExperience": true,
"showSocialDetail": true
},
"comments": [],
"header": {
"text": null
},
"entityId": "ACoAAAAyIB4BFmMkiYQtEHXvS7hOF71E6dVj3sQ",
"shareUrn": "Microsoft",
"shareLinkedinUrl": "https://www.linkedin.com/in/satyanadella",
"engagement": {
"id": "ACoAAAAyIB4BFmMkiYQtEHXvS7hOF71E6dVj3sQ",
"likes": 519,
"comments": 49,
"shares": 15,
"reactions": [
{
"type": "Microsoft",
"count": 101
}
]
}
},
{
"id": "ACoAABw3l1kBqR4z9m2QkTvHb6xY0pLdRc8NfAe",
"linkedinUrl": "https://www.linkedin.com/in/ada-okonkwo",
"content": "Northwind Analytics",
"contentAttributes": [],
"author": {
"id": "ACoAABw3l1kBqR4z9m2QkTvHb6xY0pLdRc8NfAe",
"universalName": null,
"publicIdentifier": "ada-okonkwo",
"type": "Northwind Analytics",
"name": "Ada Okonkwo",
"linkedinUrl": "https://www.linkedin.com/in/ada-okonkwo",
"info": "Northwind Analytics",
"website": "https://northwind-analytics.example",
"websiteLabel": "Northwind Analytics",
"avatar": {
"url": "https://www.linkedin.com/in/ada-okonkwo",
"width": 102,
"height": 102
},
"urn": "ACoAABw3l1kBqR4z9m2QkTvHb6xY0pLdRc8NfAe",
"profileId": "ACoAABw3l1kBqR4z9m2QkTvHb6xY0pLdRc8NfAe"
},
"postedAt": {
"timestamp": 102,
"date": "2026-07-31T15:29:54+00:00",
"postedAgoShort": "Northwind Analytics",
"postedAgoText": "Northwind Analytics"
},
"postImages": [],
"article": {
"title": "Head of Data Engineering at Northwind Analytics",
"subtitle": "Northwind Analytics",
"link": "https://www.linkedin.com/in/ada-okonkwo",
"linkLabel": "Northwind Analytics",
"description": null,
"image": {
"url": "https://www.linkedin.com/in/ada-okonkwo",
"width": 102,
"height": 102
}
},
"socialContent": {
"hideCommentsCount": true,
"hideReactionsCount": true,
"hideSocialActivityCounts": true,
"hideShareAction": true,
"hideSendAction": true,
"hideRepostsCount": true,
"hideViewsCount": true,
"trustInterventionBanner": null,
"hideReactAction": true,
"hideCommentAction": true,
"shareUrl": "https://www.linkedin.com/in/ada-okonkwo",
"showContributionExperience": true,
"showSocialDetail": true
},
"comments": [],
"header": {
"text": null
},
"entityId": "ACoAABw3l1kBqR4z9m2QkTvHb6xY0pLdRc8NfAe",
"shareUrn": "Northwind Analytics",
"shareLinkedinUrl": "https://www.linkedin.com/in/ada-okonkwo",
"engagement": {
"id": "ACoAABw3l1kBqR4z9m2QkTvHb6xY0pLdRc8NfAe",
"likes": 610,
"comments": 61,
"shares": 19,
"reactions": [
{
"type": "Northwind Analytics",
"count": 102
}
]
}
}
],
"query": {
"profile": null,
"companyIds": [],
"profileIds": [],
"authorsCompanyIds": []
},
"status": "ok"
}
Posts by author, or posts by keyword
profile-posts and company-posts walk backwards through one author's timeline. Both accept postedLimit so you can ask for only recent activity instead of paging through years of history you will discard.
post-search goes the other way: give it a keyword and it returns matching posts across authors, optionally scoped to a profile, company or group and sorted by recency or relevance. That is the endpoint for monitoring a topic rather than a person.
Comments and reactions are where the intent is
A post tells you what someone published. post-comments and post-reactions tell you who cared, and that is usually the more valuable signal. People who comment on a post about a problem you solve are self-selecting far more precisely than any firmographic filter will.
Both take a post URN or URL and page. Reactions carry the reactor's identity fields; comments carry the commenter plus the comment text, so you can filter on what was actually said rather than just who showed up.
Building a monitor without wasting balance
A naive monitor re-fetches an author's entire timeline on every run. Use postedLimit to bound the window, keep the newest post ID you have already seen, and stop paging when you reach it. For most accounts a daily check needs exactly one page.
Every one of these endpoints is priced per page at $0.0040 on Starter, so a hundred tracked accounts checked daily is well under a dollar a month at Pro rates. Fetch comments and reactions only for posts that cross an engagement threshold — that one rule usually cuts a monitoring bill by an order of magnitude.
What you can and cannot see
These endpoints return what a signed-out visitor sees. That covers public posts, their public comments and the reactions on them.
It does not cover posts restricted to connections, anything inside a private group, or direct messages. A post that was public when you fetched it and is later restricted simply stops resolving — treat what you collected as a snapshot with a timestamp, because you cannot re-fetch it.
Reaction and comment counts on the post object are the totals LinkedIn displays, which can exceed what paging returns. That is not a bug in the paging: some engagement comes from accounts whose activity is not publicly listed. Use the counts for ranking and the paged records for the people you actually want to contact.
Pagination on activity endpoints
Timelines page backwards from the most recent post, so page one is always the newest content and the ordering is stable in a way search results are not.
Carry the paginationToken when walking more than a page or two. Page numbers work, but a timeline that gains a post mid-walk will shift entries across page boundaries and you will collect a duplicate. The token is anchored and does not.
What it costs
Prices are per request, charged from a prepaid balance. Bigger top-ups lower every row — Scale takes 55% off.
| Request | Starter | Pro (42% off) | Scale (55% off) |
|---|---|---|---|
| Profile posts page | $0.0400 | $0.0232 | $0.0180 |
| Company posts page | $0.0400 | $0.0232 | $0.0180 |
| Post search page | $0.0400 | $0.0232 | $0.0180 |
| Post comments page | $0.0400 | $0.0232 | $0.0180 |
| Post reactions page | $0.0400 | $0.0232 | $0.0180 |
Failed requests are never charged. See full pricing.
Frequently asked questions
Can I get posts from a company page and a person with one call?
No — company posts and profile posts are separate endpoints because they take different identifiers. Post search can span both if you are searching by keyword rather than by author.
How do I identify a post?
The post endpoints take a post URN or a post URL. Post URNs look like urn:li:activity:7491612556751261696 and are returned on every post object.
Can I read comment replies as well as top-level comments?
The comments endpoint returns the comment thread on a post with pagination; sort order can be changed with sortBy.
Is there a limit on how far back posts go?
You can page back through available history, but use postedLimit to bound the window. Fetching years of history you will discard is the most common way to overspend on these endpoints.