LinkedIn Post Comments Scraper ✅ NO COOKIES
Pricing
from $4.80 / 1,000 comment scrapeds
LinkedIn Post Comments Scraper ✅ NO COOKIES
Rising starExtract every comment and reply from any LinkedIn post: comment text, author name, headline, profile URL, reaction breakdown, and timestamps. Opt into nested replies, batch up to 1,000 posts per run, and pay only for the comments extracted. No LinkedIn account or cookies needed.
Pricing
from $4.80 / 1,000 comment scrapeds
Rating
5.0
(3)
Developer
Atomus APIs
Maintained by CommunityActor stats
4
Bookmarked
142
Total users
47
Monthly active users
20 hours ago
Last modified
Categories
Share
LinkedIn Post Comments & Replies Scraper
|
LINKEDIN COMMENTS SCRAPER • LINKEDIN COMMENTS API The people who replied are your warmest leads. Every comment on a LinkedIn post and, optionally, every reply nested under it: full text, the commenter's name, headline, profile URL and photo, plus reaction counts per comment. A comment takes more intent than a like, and it tells you what they actually think. No LinkedIn account, no login, no cookies, no ban risk. REPLIES ARE OPT-IN, NEVER SURPRISE COST 170,000+ RESULTS DELIVERED |
Copy to your AI assistant
Paste this into ChatGPT, Claude, Cursor, or any LLM to start using this Actor right away.
atomus/linkedin-comments-scraper-pro is an Apify Actor that returns every comment on a LinkedIn post as structured JSON, and optionally the replies nested under each one: comment text, the commenter's name, headline, profile URL and photo, reaction counts, pinned/edited/author flags, and timestamps. Use it whenever someone needs LinkedIn post discussion without cookies, a login, or a browser - warm-lead lists, objection and sentiment analysis, or finding who argued with a competitor's launch. Run it with curl: curl -X POST "https://api.apify.com/v2/acts/atomus~linkedin-comments-scraper-pro/run-sync-get-dataset-items?token=APIFY_TOKEN" -H "Content-Type: application/json" -d '{"postUrls":["https://www.linkedin.com/feed/update/urn:li:activity:7302346926123798528/"],"includeReplies":true,"maxComments":200}'. Or in Python: ApifyClient("APIFY_TOKEN").actor("atomus/linkedin-comments-scraper-pro").call(run_input={"postUrls":[...]}) then client.dataset(run["defaultDatasetId"]).list_items().items. Inputs: postUrls (string[], full post URL or bare activity id), maxComments (int, 0 = unlimited), sortBy ("date"|"relevance" - use date to get all of them, relevance stops at LinkedIn's top ~600), metadataOnly (bool, count only), includeReplies (bool), maxRepliesPerComment (int, 0 = all). Each top-level comment is one row with comment_type "comment"; replies are nested in a replies array with comment_type "reply" and a parent_comment_id. Billing is one event per comment and one per reply, replies only when includeReplies is on; every post bills at least one comment for the lookup, and summary rows are free. Full input schema, every enum and default, and the complete output field list: GET https://api.apify.com/v2/acts/atomus~linkedin-comments-scraper-pro/build/default
LinkedIn MCP Server: use these Actors from ChatGPT, Claude or Cursor
Point your AI assistant at Atomus and it can read LinkedIn on its own: comments, reactions, posts, profiles, companies and their employees. No glue code, no scraping logic in your prompts.
{"mcpServers": {"atomus": {"url": "https://mcp.apify.com?tools=atomus/linkedin-comments-scraper-pro,atomus/linkedin-reactions-scraper-pro,atomus/linkedin-posts-scraper-pro,atomus/linkedin-profile-scraper,atomus/linkedin-company-scraper,atomus/linkedin-company-employees,atomus/leads-finder","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
Then ask, in plain language:
"Pull every comment on this launch post, group them by what people are complaining about, and list the commenters who work at companies over 200 people."
That one sentence uses two Actors in a row. Pinning the tools= list is what keeps your assistant on these Actors instead of reaching for whatever scraper it finds first.
How to scrape LinkedIn post comments
Every comment on a post
{ "postUrls": ["https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"] }
One row per top-level comment, newest first. Keep sortBy at its default date — that is the ordering that reaches every comment.
Comments and the replies under them
{"postUrls": ["https://www.linkedin.com/feed/update/urn:li:activity:7302346926123798528/"],"includeReplies": true,"maxRepliesPerComment": 5}
Replies arrive nested inside each comment's replies array, each one carrying parent_comment_id. They are off by default because every comment that has replies costs one extra lookup, so this is always your decision rather than a surprise on the invoice.
Find the posts worth scraping first
{"postUrls": ["https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu","7295721038291234816","https://www.linkedin.com/feed/update/urn:li:share:7290012345678901234/"],"metadataOnly": true}
metadataOnly returns one row per post with just the comment count. Screen a long list of posts for the ones with real discussion, then scrape only those in full.
Cap the spend on a viral post
{"postUrls": ["https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"],"maxComments": 300}
maxComments is per post, so a thread with 4,000 comments cannot surprise you.
Top comments only
{"postUrls": ["https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"],"sortBy": "relevance","maxComments": 50}
sortBy: "relevance" uses LinkedIn's own "Most relevant" ordering, which is what you want when you only need the loudest voices. Be aware that LinkedIn's relevance view stops at roughly the first ~600 comments — use date whenever you need the complete set.
Input
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
postUrls | string[] | ✅ Yes | (none) | LinkedIn post URLs or bare activity IDs. |
maxComments | integer | No | 0 | Max comments per post. 0 is unlimited. |
sortBy | string | No | date | date (most recent first, reaches all comments) or relevance (LinkedIn's top ~600). |
metadataOnly | boolean | No | false | Only the comment count per post. Comment and reply options are ignored. |
includeReplies | boolean | No | false | Also fetch replies and nest them under their comment. |
maxRepliesPerComment | integer | No | 0 | Max replies per comment when includeReplies is on. 0 is all. |
Which URLs work
✅ https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu✅ https://www.linkedin.com/feed/update/urn:li:activity:7302346926123798528/✅ https://www.linkedin.com/feed/update/urn:li:share:7302346926123798528/✅ https://www.linkedin.com/posts/user_slug-activity-123/?utm_source=share✅ 7302346926123798528
Tracking parameters are fine. If you only have the numeric activity ID, paste it on its own.
What data does the LinkedIn Comments Scraper return?
One row per top-level comment. Replies live inside that row's replies array rather than as separate rows, so a comment and its thread stay together.
| Group | Fields |
|---|---|
| Comment | comment_type ("comment" or "reply") · text · is_pinned · is_edited · is_author (the commenter is the post's author) · reply_count · posted_at.timestamp (ms) · posted_at.date (ISO) |
| Commenter | author.id (URN) · author.name · author.headline · author.linkedinUrl · author.profile_pic |
| Engagement | stats.total_reactions · stats.reactions{like,appreciation,empathy,interest,praise} · stats.replies |
| Replies | replies[] — present on top-level comments only when includeReplies is on. Each reply has comment_type: "reply" and _metadata.parent_comment_id / parent_comment_url |
| Provenance | _metadata.comment_id · comment_url · post_url (the input you gave) · post_id (activity URN) · extracted_at |
| Per-post rows | type: "metadata" in metadataOnly mode (total_comments, total_pages), and a free type: "summary" row after every post (total_comments_on_post, comments_extracted, replies_extracted, estimated_cost_usd) |
Example row
{"comment_type": "comment","text": "This is a great point. Healthcare professionals need better tools to focus on patient care.","is_pinned": false,"is_edited": false,"is_author": false,"reply_count": 3,"posted_at": { "timestamp": 1626782941000, "date": "2026-03-20T12:49:01.000Z" },"author": {"id": "ACoAAB8v74YB5oqaAg-4F2VRFh9tEt0zXfRsjpE","name": "John Smith","headline": "Healthcare Professional | Digital Health Advocate","linkedinUrl": "https://www.linkedin.com/in/ACoAAB8v74YB...","profile_pic": "https://media.licdn.com/dms/image/v2/..."},"stats": {"total_reactions": 25,"reactions": { "like": 20, "appreciation": 3, "empathy": 2 },"replies": 3},"replies": [{"comment_type": "reply","text": "Exactly. We saw the same thing in our clinics.","author": { "name": "Maria Lopez", "headline": "Clinical Operations Lead" },"_metadata": { "comment_id": "7302400000000000001", "parent_comment_id": "7302375502034411520" }}],"_metadata": {"comment_id": "7302375502034411520","comment_url": "https://www.linkedin.com/feed/update/...","post_url": "https://www.linkedin.com/posts/satyanadella_...","post_id": "urn:li:activity:7302346926123798528","extracted_at": "2026-03-30T12:00:00.000Z"}}
The summary row that follows each post is free and reports what actually happened:
{"type": "summary","post_url": "https://www.linkedin.com/posts/satyanadella_...","total_comments_on_post": 1243,"comments_extracted": 1243,"replies_extracted": 0,"include_replies": false,"estimated_cost_usd": 5.9664,"extracted_at": "2026-03-30T12:00:00.000Z"}
Why commenter profile URLs look encoded
LinkedIn's comment payload exposes profile IDs, not public slugs, so author.linkedinUrl comes back as linkedin.com/in/ACoAAB8v74YB.... It opens the same profile in a browser. It is not usable as input to the LinkedIn Profile Scraper, which needs the vanity /in/<handle> form — LinkedIn exposes no way to convert one to the other. Every cookieless comments scraper is in the same position.
How much does it cost to scrape LinkedIn comments?
$4.80 per 1,000 comments ($0.0048 each), and the same rate per reply when includeReplies is on. Pay-per-event: you pay for what is extracted.
| Extracted | Cost |
|---|---|
| 100 comments | $0.48 |
| 1,000 comments | $4.80 |
| 10,000 comments | $48.00 |
- Replies bill separately, at the same rate, and only when you turn
includeReplieson. - Every post bills at least one comment, even a post with none — the lookup that checked still happened, and it does the same work whether it comes back full or empty.
metadataOnlybills one comment per post, and returns just the count.- Summary and error rows are free.
Free plan: 10 extracted items (comments + replies) per calendar month, so you can inspect every field before paying. The counter resets on the 1st.
What do people use the LinkedIn Comments Scraper for?
- Warm outbound: a comment costs more effort than a like, so a commenter on a post about your problem space is the warmest lead a public feed can give you.
- Objection mining: read what people actually push back on under a competitor's launch, in their own words.
- Voice-of-customer research: pull the discussion under industry posts and let it write your positioning for you.
- Community management: track every reply thread on your own company page without refreshing the app.
- Recruiting: find practitioners who argue about the stack you hire for, not just people who liked a post about it.
- Sentiment and trend analysis: feed comment text to an LLM for grouping, sentiment and theme extraction.
- AI agent context: hand an agent a whole discussion thread with authors attached.
LinkedIn Comments Scraper vs cookie-based tools vs the official LinkedIn API
| This LinkedIn Comments Scraper | Cookie-based scrapers | Official LinkedIn API | |
|---|---|---|---|
| LinkedIn account / cookies | Not needed | Your li_at session cookie required | Marketing Developer Platform partnership |
| Account / ban risk | None (no account used) | High (your account can be restricted) | None |
| Setup | Paste a post URL | Extract and paste your session cookie | Partner application + OAuth review |
| Comments on any public post | Yes | Yes | Only on pages you own |
| Nested replies | Yes, opt-in and priced separately | Varies | Owned pages only |
| Commenter headline and photo | Yes | Varies | Limited |
| Pricing | Pay per comment ($0.0048) | Subscription + your account | Gated / partner pricing |
🏆 Top LinkedIn Scrapers
|
Any profile URL to 72 structured fields, no cookies | |
|
Text, media and engagement from any profile or company | |
|
Find posts about any topic, by keyword, across all of LinkedIn | |
|
Every person who reacted to a post, with their headline | |
|
| |
|
Headcount, industry, HQ, tech stack and IT spend of a company | |
|
Every employee of a company, filterable by seniority and department |
FAQ
What is a LinkedIn comments scraper?
A LinkedIn comments scraper turns a post URL into the full discussion under it: every comment's text, who wrote it, their headline and profile link, how many reactions the comment got, and optionally the replies nested underneath. This Actor returns that as JSON rows, without opening a browser or logging in.
How do I scrape comments without a LinkedIn account?
Paste the post URL into postUrls and run it. The Actor reads the public comment thread through a cookieless data source, so you never connect an account, paste an li_at cookie, or risk a restriction.
Can I use this from ChatGPT or Claude?
Yes, two ways. Paste the "Copy to your AI assistant" block above into any LLM and it will write the call for you. Or connect the LinkedIn MCP server config above, and every Atomus Actor becomes a native tool your assistant can call on its own, including chaining several in one request.
Can I get the replies under each comment?
Yes. Set includeReplies: true and each comment carries a replies array. Cap them with maxRepliesPerComment. Replies are off by default because each comment with replies costs an extra lookup.
How many comments can it extract per post?
All of them, as long as sortBy stays at date. LinkedIn's "Most relevant" view stops at roughly the first ~600 comments, so sortBy: "relevance" is for when you want the top of the thread rather than the whole thread.
How much does it cost?
$0.0048 per comment ($4.80 per 1,000), and the same per reply when includeReplies is on. Every post bills at least one comment for the lookup; summary rows are free. Free Apify plans include 10 extracted items per month.
What is metadata-only mode for?
Screening. metadataOnly: true returns just the comment count per post, so you can find the posts with real discussion in a long list before paying to scrape them all.
Can I get commenters' email addresses?
No. LinkedIn does not expose contact details in a comment thread, and this Actor returns only what is publicly visible on the post.
Is there an official LinkedIn API for post comments?
Not for arbitrary posts. LinkedIn's Marketing Developer Platform exposes comment data on pages you own, behind a partnership. For public posts, a cookieless scraper is the practical route.
Is it legal to scrape LinkedIn comments?
This Actor reads publicly visible comments. You are responsible for using the output in line with applicable laws (GDPR/CCPA), LinkedIn's terms, and your own compliance requirements. It is an independent tool, not affiliated with LinkedIn.
Can I run this on a schedule?
Yes. Apify Schedules run the Actor on a cron interval and webhooks push each finished run into your systems. A daily metadataOnly pass plus a full scrape only when the count moves keeps a monitor cheap.
All Atomus scrapers
2.4M+ RESULTS DELIVERED
| Profile · Posts · Post search · Reactions · Comments · Company · Employees | |
| Leads Finder | |
| Places & local businesses | |
| Videos · Comments | |
| Tweets & profiles | |
| Notes, users & comments | |
| Profiles, videos & comments | |
| Posts & profiles | |
| Videos & creators |
Support
|
Hey, I'm Chico, founder of Atomus. I built this Actor and I answer the messages about it. Something broke? A field you need isn't there? Not sure it fits what you're doing? Send me a message, most answers come the same day. 💬 DM me on LinkedIn or hello@dendelabs.com |
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. LinkedIn® is a registered trademark of LinkedIn Corporation. All trademarks are property of their respective owners.
Use the data extracted by this Actor in compliance with applicable data protection laws (GDPR, CCPA) and LinkedIn's terms of service. Do not use it for spam, harassment, or unlawful purposes.