Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
LinkedIn Post Comments Scraper icon

LinkedIn Post Comments Scraper

Scrape public LinkedIn post comments: author name, profile URL, reaction count. No login or cookie. Up to 10 per post.

21 runs on Apify $0.0006 per comment ($0.6 / 1,000)
Run this in the cloudRun on Apify →

Social Media Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust postUrls, maxCommentsPerPost, maxRetries (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0006 per comment = $0.6 per 1,000

You are charged forWhenPrice
Comment returnedCharged once per genuine public LinkedIn comment row. Sample and diagnostic rows are never charged.$0.0006
Actor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).$0.001

Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-10, and they are what you are actually charged.

Inputs

FieldWhat it doesType
postUrlsPublic LinkedIn activity URLs, /posts/ URLs containing activity-<id>, a bare activity ID, or urn:li:activity:<id>. Empty input returns one labeled, uncharged sample row.array
maxCommentsPerPostUpper bound on charged comment rows per post. LinkedIn's logged-out view exposes at most 10 top-level comments per post, so values above 10 have no effect.integer
maxRetriesHow many times to retry a post on a different proxy session and browser fingerprint before giving up and writing an uncharged diagnostic row.integer
requestTimeoutSecsMaximum duration of each page request, in seconds.integer

What you get

A structured dataset — each result includes fields like:

commentIdcommentTextauthorNameauthorProfileUrllikeCountcommentAgeTextpostUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Social Media Scrapers

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

RedNote Scraper iconSocial Media Scrapers

RedNote Scraper

Scrape public RedNote (Xiaohongshu) notes: description, author, likes, collects, comments, shares and images.

Ready to run — no setup

RedNote (Xiaohongshu) Profile Scraper iconSocial Media Scrapers

RedNote (Xiaohongshu) Profile Scraper

RedNote (Xiaohongshu) profile scraper API. Nickname, RedNote ID, follower counts, likes and collects, verification, IP location, gender and recent notes.

Ready to run — no setup

Douyin Hot Search Scraper iconSocial Media Scrapers

Douyin Hot Search Scraper

Scrape Douyin trending topics: rank, hot value, views, video count, badge and cover image from the hot and society boards. No login.

Ready to run — no setup

Facebook Comments Scraper iconSocial Media Scrapers

Facebook Comments Scraper

Scrape comments from any public Facebook post or reel: author, text, date, likes, replies. No login or cookies.

Ready to run — no setup

Facebook Groups Scraper iconSocial Media Scrapers

Facebook Groups Scraper

Scrape public Facebook group posts without logging in: author, text, time, permalink, media and engagement counts.

Ready to run — no setup

Facebook Posts Scraper iconSocial Media Scrapers

Facebook Posts Scraper

Scrape posts from any public Facebook Page: text, time, permalink, media, reactions, comments and shares. No login, no cookies. $0.60 per 1,000 posts.

Ready to run — no setup

See all Social Media Scrapers →

LinkedIn Post Comments Scraper — public comments API, no login

Give it public LinkedIn post URLs. It returns the comments LinkedIn shows to a logged-out visitor, one row per comment, with the commenter's name, profile URL, reaction count and comment age.

No LinkedIn account. No session cookie. No li_at token to paste. Nothing to keep alive.

Input

postUrls accepts 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

Other options: maxCommentsPerPost, maxRetries (attempts per post on a fresh proxy session and 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 comment id from urn:li:comment:(...)
commentTextfull comment text
authorName, authorProfileUrlcommenter and their public profile URL
likeCountreactions on that comment
commentAgeText, approximateCreatedAtLinkedIn only publishes a relative age ("1y", "9mo") to guests; approximateCreatedAt is that age subtracted from fetch time, so it is an approximation, not an exact 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

Measured field coverage

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

Honest limits — read this before you buy

LinkedIn's logged-out view caps comments at 10 per post. "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 tested and all return the same 10 (the embed view returns none).

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

Only top-level comments. Replies are not rendered to guests.

If you need every comment on a post, or replies, you need a tool that logs in. This one does not pretend to.

What it does not do

  • No login, no cookie injection, no account rental — so no full comment lists and no replies.
  • No reactions/likers list, no profile enrichment, no email finding.
  • No private or connection-only posts. Those come back as an uncharged diagnostic row.
  • No exact comment timestamps. LinkedIn does not give guests one.
  • 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 — the lowest per-comment price of any LinkedIn post-comments scraper on the Apify Store with an active user base; the next cheapest, datadoping/linkedin-post-comments-scraper (60 monthly users), is $1.20 per 1,000 even on its cheapest volume tier.

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

Price is not the only thing to weigh. This actor returns at most 10 comments per post — LinkedIn's own logged-out cap, documented above — and the cookie-based tools do not have that limit. Pick on that basis, not on price alone.

How it works

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

That transport is the whole fix. The previous build of this actor 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 second, impit instead: the full ~385 KB guest page with ten section.comment blocks, 4/4 sessions.

FAQ

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

How many comments will I get per post? Up to 10 — LinkedIn's own limit for logged-out visitors. Many posts give fewer, some give none.

Why did a post return no comments when I can see comments on it? You are logged in and this actor is not. LinkedIn hides the comment block from guests on a significant share of posts. That row is a diagnostic and is not charged.

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

Is the timestamp exact? No. LinkedIn gives guests a relative age like "9mo". approximateCreatedAt converts that, so it is accurate to the granularity LinkedIn published — not to the minute. commentAgeText is the raw value if you would rather do your own conversion.

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

Does it use residential proxies? No. Datacenter only.