LinkedIn Post Scraper avatar

LinkedIn Post Scraper

Pricing

from $1.05 / 1,000 post-details

Go to Apify Store
LinkedIn Post Scraper

LinkedIn Post Scraper

Scrape any public LinkedIn post by URL, with no login. Just add post links and get the full text, date, reactions, comment count, author, media type and preview image, plus the comments LinkedIn publishes. Export to CSV or Excel, or run it on a schedule. $1.50 per 1,000 posts.

Pricing

from $1.05 / 1,000 post-details

Rating

0.0

(0)

Developer

BonCross API

BonCross API

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

What is LinkedIn Post Scraper?

Got a list of LinkedIn post links? LinkedIn Post Scraper turns each one into a record: the full text, who posted it, the reaction count, the comment count, and the comments LinkedIn shows publicly. The comments are in the post price. You aren't billed per comment row.

Paste the links in either of LinkedIn's formats, or bare activity ids. There's no login.

  • Comments included at $1.50 per 1,000 posts. A post and its public comments are one row and one charge.
  • 1,000 posts in about two and a half minutes. Measured with comments on, 2 October 2026, at about 430 posts a minute.
  • Duplicates are caught by post, not by string. The /feed/update/… link and the /posts/… link to one post count once.
  • Dead links are cheap and visible. A deleted or private post returns a row with the reason and costs $0.0005.

BonCross Verified means we tested this actor against the live site before release and kept the record:

  • 13 of 13 live checks on its inputs and filters passed on 7 October 2026
  • 20 inputs run the same day, posts, articles, a made-up id and a bare URN: 15 posts, 5 error rows
  • Charges matched the rows: 1 start, 15 posts, 4 checked

What data do you get for each post?

📝 Full post text👍 Reaction count
💬 Comment countThe comments LinkedIn shows publicly, with authors
👤 Author name and profileWhether the author is a person or a company
📅 When it was posted, as written and as a dateMedia type: text, image, video or document
Preview image🔗 Canonical post URL and activity id

The row has one preview image per post, not a gallery.

What people do with it

  • Archive a post you care about before it's edited or deleted
  • Measure the engagement on one campaign post, then rerun the same link to see it grow
  • Pull the public comments on a post for sentiment analysis
  • Check the author and media type of a link someone sent you
  • Collect a set of competitor posts by URL for a teardown

How to scrape a LinkedIn post

  1. Create your free Apify account.
  2. Open LinkedIn Post Scraper and paste your post links.
  3. If you only need the post and its counts, turn "Include the comments shown on the page" off.
  4. Press Start. Two posts take 3 or 4 seconds.
  5. Download the results as Excel, CSV, JSON, XML or HTML.

⬇️ Input

Links are all you have to supply. Use either link format, or a bare activity id if that's what you've stored.

One post is one page, so there's a single limit: "Maximum posts" caps what the run returns. It defaults to 0, which is no cap.

Two posts given three ways (the bare id is the first link again, and counts once)

{
"postUrls": [
"https://www.linkedin.com/feed/update/urn:li:activity:7503853799422382081/",
"https://www.linkedin.com/posts/google_google-pics-activity-7503561556371320833-JtK5",
"7503853799422382081"
]
}

A list from a file or Google Sheet, posts only, capped at 200

{
"startUrls": [{ "url": "https://www.linkedin.com/feed/update/urn:li:activity:7503853799422382081/" }],
"includeComments": false,
"maxItems": 200
}
FieldNotes
postUrlsPost links in either form, or bare activity ids. De-duplicated by post, not by string.
startUrlsThe same, pasted or loaded in bulk from a file or a Google Sheet.
includeCommentsAdds the comments LinkedIn shows publicly. On by default.
maxItemsA ceiling on the run. Default 0, no limit.
delayMs, maxConcurrencyAn optional extra pause before each request (default 0), and how many posts are read at once (default 8).

For developers

  • postUrls and startUrls are merged and de-duplicated by post, not by string.
  • includeComments (default true) adds sampleComments and sampleCommentCount. With it off, both fields are left out of the row.
  • maxConcurrency (default 8, from 1 to 8) sets how many posts are read at once, and delayMs (default 0) adds a pause before each request.
  • Rows are written as posts are read. A run stopped early keeps what it has.
  • A link LinkedIn answered with no post bills target-checked. A link LinkedIn never answered bills nothing.

⬆️ Output

One record per post.

{
"id": "7503853799422382081",
"activityUrn": "urn:li:activity:7503853799422382081",
"url": "https://www.linkedin.com/posts/google_the-gemini-app-is-now-available-for-windows-activity-7503853799422382081-6P4U",
"text": "The Gemini app is now available for Windows. Gemini is now just a keyboard shortcut away (Alt + Space) for instant AI assistance alongside your daily …",
"reactions": 986,
"comments": 116,
"postedText": "3d",
"postedAt": "2026-09-11",
"authorName": "Google",
"authorUrl": "https://www.linkedin.com/company/google",
"authorType": "company",
"image": "https://dms.licdn.com/playlist/vid/v2/D5605AQFtXpMPTlB0hg/thumbnail-with-play-button-overlay-high/B56aCMLP2PIkC0-/0/1789058156244?e=2147483647&v=beta&t=OZ7jiIhUviVOaicCCpgxNg7t1NRIABBylIdO7RSxsQQ",
"mediaType": "video",
"sampleComments": [
{
"author": "Sam Example",
"authorUrl": "https://www.linkedin.com/in/example-member-1",
"text": "The admin console covers the Workspace account. Spark's Connected Apps do not run on work …",
"postedText": "3d",
"reactions": 4
},
"…"
],
"sampleCommentCount": 9,
"scrapedAt": "2026-09-14T00:12:06.517Z"
}

Read comments when you want the real total. sampleComments holds the comments LinkedIn shows publicly, and sampleCommentCount says how many that is. postedText is LinkedIn's own wording ("3d"), and postedAt is the approximate date worked out from it.

How much does it cost to scrape LinkedIn posts?

EventFree planStarterScaleBusiness
actor-start, per run$0.001$0.001$0.001$0.001
post-detail, per post returned$0.0015$0.00135$0.0012$0.00105
target-checked, per link LinkedIn answered with no post (no such post, or a page that is not a post)$0.0005$0.0005$0.0005$0.0005

Enterprise plans pay the Business price.

$1.50 per 1,000 posts on the Free plan, $1.05 on Business, with the public comments included and no usage or proxy fees added.

100 posts cost $0.001 + 100 × $0.0015 = $0.151 ($0.11 on Business). If ten of those links were dead, they'd cost 10 × $0.0005 = $0.005 in place of 10 × $0.0015.

Apify's Free plan comes with $5 of credits a month, enough for about 3,300 posts here.

Run times and limits

RunResult
Two posts with comments on2 records in 2.8-4.0 seconds
1,000 posts with comments on1,000 records in 2 minutes 13 seconds to 2 minutes 27 seconds (about 430 a minute)
Comments shown publiclyroughly nine or ten, whatever the real total

Both timings are whole runs on Apify from 2 October 2026. An hour at that pace gets you roughly 25,000 posts.

The limits are LinkedIn's, and they're worth knowing before you plan around this data:

  • Comments are a sample. LinkedIn shows roughly nine or ten on a post and keeps the others behind a login. The example above has 116 comments in total, and the row says so in comments.
  • Timestamps are relative. LinkedIn gives "3d", which is returned as written, with an approximate date beside it.
  • Reaction counts move. Two runs a few minutes apart can give you different numbers. That's the post changing.
  • Private and deleted posts return no data. Each is an error row with an error field, billed target-checked ($0.0005).
  • An article link isn't a post. In our release check, four LinkedIn article URLs each returned an error row saying the page carried no post.

FAQ

Can I get all the comments on a post?

Only the ones LinkedIn shows without a login, which is roughly nine or ten. You do get the true total in comments, so you can tell a post with 12 comments from one with 1,200.

The /feed/update/urn:li:activity:… form, the /posts/…-activity-… form, and a bare activity id. Paste whichever you have.

How do I track a post's engagement over time?

Schedule a run on the same links, hourly or daily, and compare reactions and comments between datasets.

Do I need proxies, or my LinkedIn login?

Neither one. The post is read the way a signed-out visitor sees it, so your own account is never involved, and proxy usage is already in the price.

Can it list the posts on a company page?

This actor works from post links. To list a company's posts use LinkedIn Company Posts Scraper, then paste the links you want in here.

Is it legal to scrape a LinkedIn post?

The actor only opens posts that are public and never uses an account. Scraping public pages is generally lawful in the UK, EU and US (hiQ v LinkedIn is the case usually cited). A post and its comments name people, so GDPR and similar laws apply to what you do with them, and that part is your responsibility.

Calling it from code or an agent

One request does it: POST https://api.apify.com/v2/acts/boncross~linkedin-post-details-scraper/run-sync-get-dataset-items, with {"postUrls": [...]} as the body, returns the records for a short list. For thousands of links, start a run and read the dataset afterwards. Apify publishes apify-client for Node.js and Python.

Agents reach it through the Apify MCP server (mcp.apify.com). Hand an agent a post URL and it can read the post and its comments before drafting your reply.

Results can also flow to Google Sheets, Slack, Make or Zapier when a run ends, which is handy for an archive that fills itself.

More from BonCross

Your feedback

A link that should have worked and didn't is the most useful thing you can send us. Put it on the Issues tab in Apify Console with what you expected. We read them all and answer there.