LinkedIn Post Comments Scraper avatar

LinkedIn Post Comments Scraper

Pricing

from $0.60 / 1,000 comment returneds

Go to Apify Store
LinkedIn Post Comments Scraper

LinkedIn Post Comments Scraper

Ten comments per post is all LinkedIn shows a logged-out visitor, and that is the ceiling here. What comes back: comment text, author name and profile URL, reactions and age. No login, no cookie to keep alive. $0.60 per 1,000 comments.

Pricing

from $0.60 / 1,000 comment returneds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Point it at public LinkedIn post URLs. It returns the comments LinkedIn shows to a visitor who isn't logged in, one row per comment, with the commenter's name and profile URL, the reaction count and the comment's age.

No LinkedIn account. No session cookie. No li_at token to paste and re-paste every few weeks.

Before you buy, read the limits section. LinkedIn caps what a logged-out visitor sees at 10 comments per post, and that cap applies here.

Input

postUrls takes any of these and normalises them to the same post:

  • https://www.linkedin.com/feed/update/urn:li:activity:7302346926123798528/
  • https://www.linkedin.com/posts/satyanadella_...-activity-7302346926123798528-jitu
  • urn:li:activity:7302346926123798528
  • 7302346926123798528

Also: maxCommentsPerPost, maxRetries (attempts per post on a fresh proxy session and browser fingerprint, default 4), requestTimeoutSecs, and an optional proxyConfiguration.

Empty input returns exactly one labelled _sample: true row and charges nothing.

Output

FieldNotes
commentIdLinkedIn's numeric id from urn:li:comment:(...)
commentTextthe full comment
authorName, authorProfileUrlcommenter and their public profile URL
likeCountreactions on that comment
commentAgeTextLinkedIn's own relative age, "1y", "9mo"
approximateCreatedAtthat age subtracted from fetch time, so it's an approximation and not a real timestamp
commentUrlpermalink built from the comment URN
postActivityId, postUrl, postAuthorNamethe post the comment belongs to
postReactionCount, postCommentCountLinkedIn's own totals for the post
transport, retrievedAtprovenance

Across 28 real comment rows pulled from 20 public posts on 2026-08-10, every field above was filled on 100% of rows. There's no column that's empty on every row.

Limits

10 comments per post, maximum. "See more comments" points at the signup wall. Measured directly: a post with 762 comments and a post with 16 comments both returned exactly 10, on 8/8 fetches each, across three browser fingerprints and eight proxy sessions. ?sortBy=RECENT, ?numComments=100, ?commentsPage=2 and the /embed/ view were all tried and all return the same 10, except the embed view, which returns none. Setting maxCommentsPerPost above 10 does nothing.

Not every post shows comments to guests. Of 20 arbitrary public posts, 8 returned comments and 12 returned none, and it's a stable property of the post rather than luck: one post with 60 comments returned zero on 8 consecutive fetches through 8 sessions and 3 fingerprints, and its canonical /posts/ URL behaved identically. Those posts produce an uncharged NO_RESULTS row. You are not billed for them.

Top-level comments only. Replies aren't rendered to guests.

No exact timestamps. LinkedIn only gives guests a relative age.

If you need every comment on a post, or the replies, you need a tool that logs in. This one doesn't pretend to.

What it doesn't do

No login, no cookie injection, no account rental. No reactions or likers list, no profile enrichment, no email finding. No private or connection-only posts, which come back as uncharged diagnostic rows. No residential proxy: it runs on Apify datacenter addresses with a fresh session per attempt.

Billing

$0.60 per 1,000 comments ($0.0006 each), plus $0.001 each time a run starts. Flat on every plan, no volume tiers.

One comment event per real comment row. Never charged: the empty-input sample, and BAD_INPUT, NO_RESULTS and BLOCKED diagnostic rows. A run where every post refuses to show comments costs the start fee and nothing else.

Price isn't the only thing to weigh here. Ten comments per post is LinkedIn's own logged-out limit, and cookie-based tools don't have it. Pick on that basis, not on price alone.

How it works

Requests go out with a real browser TLS and HTTP/2 fingerprint (impit), rotating Chrome and Firefox profiles, and a fresh Apify datacenter session per attempt.

That transport is the whole fix. An earlier build used Node's undici and returned NO_RESULTS on every post. LinkedIn rejected it at the TLS handshake and served a shell with no comment markup. Same URLs, same proxy pool, same minute, impit instead: the full ~385 KB guest page with ten section.comment blocks, 4/4 sessions.

FAQ

Do I need an account or cookie? No. Nothing to log in with, nothing to refresh.

How many comments per post? Up to 10. Many posts give fewer, some give none.

Why did a post return nothing when I can see comments on it? You're logged in and this isn't. LinkedIn hides the comment block from guests on a large share of posts. That row is a diagnostic and isn't charged.

Can I get replies? No. Guests only see top-level comments.

Is approximateCreatedAt exact? No. It converts "9mo" into a date, so it's accurate to the granularity LinkedIn published, not to the minute. commentAgeText is the raw value if you'd rather do your own conversion.

Bad URL or private post? One uncharged diagnostic row with an errorCode (BAD_INPUT, BLOCKED or NO_RESULTS) and a plain-English reason.