LinkedIn Post Comments Scraper
Scrape public LinkedIn post comments: author name, profile URL, reaction count. No login or cookie. Up to 10 per post.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
postUrls,maxCommentsPerPost,maxRetries(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export 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 for | When | Price |
|---|---|---|
| Comment returned | Charged once per genuine public LinkedIn comment row. Sample and diagnostic rows are never charged. | $0.0006 |
| Actor Start | Charged 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
| Field | What it does | Type |
|---|---|---|
postUrls | Public 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 |
maxCommentsPerPost | Upper 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 |
maxRetries | How many times to retry a post on a different proxy session and browser fingerprint before giving up and writing an uncharged diagnostic row. | integer |
requestTimeoutSecs | Maximum duration of each page request, in seconds. | integer |
What you get
A structured dataset — each result includes fields like:
commentIdcommentTextauthorNameauthorProfileUrllikeCountcommentAgeTextpostUrlExport 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
Scrape public RedNote (Xiaohongshu) notes: description, author, likes, collects, comments, shares and images.
RedNote (Xiaohongshu) Profile Scraper
RedNote (Xiaohongshu) profile scraper API. Nickname, RedNote ID, follower counts, likes and collects, verification, IP location, gender and recent notes.
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.
Facebook Comments Scraper
Scrape comments from any public Facebook post or reel: author, text, date, likes, replies. No login or cookies.
Facebook Groups Scraper
Scrape public Facebook group posts without logging in: author, text, time, permalink, media and engagement counts.
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.
Where this tool sits
- Categories
- Social Media Scrapers
- Platforms
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-jituurn:li:activity:73023469261237985287302346926123798528
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
| Field | Notes |
|---|---|
commentId | LinkedIn's numeric comment id from urn:li:comment:(...) |
commentText | full comment text |
authorName, authorProfileUrl | commenter and their public profile URL |
likeCount | reactions on that comment |
commentAgeText, approximateCreatedAt | LinkedIn 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 |
commentUrl | permalink built from the comment URN |
postActivityId, postUrl, postAuthorName | the post the comment belongs to |
postReactionCount, postCommentCount | LinkedIn's own totals for the post |
transport, retrievedAt | provenance |
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.