LinkedIn Post Comments Scraper ✅ NO COOKIES avatar

LinkedIn Post Comments Scraper ✅ NO COOKIES

Pricing

from $4.80 / 1,000 comment scrapeds

Go to Apify Store
LinkedIn Post Comments Scraper ✅ NO COOKIES

LinkedIn Post Comments Scraper ✅ NO COOKIES

Rising star

Extract 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

Atomus APIs

Maintained by Community

Actor stats

4

Bookmarked

142

Total users

47

Monthly active users

20 hours ago

Last modified

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

ParameterTypeRequiredDefaultDescription
postUrlsstring[]✅ Yes(none)LinkedIn post URLs or bare activity IDs.
maxCommentsintegerNo0Max comments per post. 0 is unlimited.
sortBystringNodatedate (most recent first, reaches all comments) or relevance (LinkedIn's top ~600).
metadataOnlybooleanNofalseOnly the comment count per post. Comment and reply options are ignored.
includeRepliesbooleanNofalseAlso fetch replies and nest them under their comment.
maxRepliesPerCommentintegerNo0Max 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.

GroupFields
Commentcomment_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)
Commenterauthor.id (URN) · author.name · author.headline · author.linkedinUrl · author.profile_pic
Engagementstats.total_reactions · stats.reactions{like,appreciation,empathy,interest,praise} · stats.replies
Repliesreplies[] — 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 rowstype: "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.

ExtractedCost
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 includeReplies on.
  • 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.
  • metadataOnly bills 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.

This LinkedIn Comments ScraperCookie-based scrapersOfficial LinkedIn API
LinkedIn account / cookiesNot neededYour li_at session cookie requiredMarketing Developer Platform partnership
Account / ban riskNone (no account used)High (your account can be restricted)None
SetupPaste a post URLExtract and paste your session cookiePartner application + OAuth review
Comments on any public postYesYesOnly on pages you own
Nested repliesYes, opt-in and priced separatelyVariesOwned pages only
Commenter headline and photoYesVariesLimited
PricingPay per comment ($0.0048)Subscription + your accountGated / partner pricing

🏆 Top LinkedIn Scrapers

Profile Scraper
Any profile URL to 72 structured fields, no cookies
Posts Scraper
Text, media and engagement from any profile or company
Post Search
Find posts about any topic, by keyword, across all of LinkedIn
Reactions Scraper
Every person who reacted to a post, with their headline
Comments Scraper  YOU ARE HERE 
Company Scraper
Headcount, industry, HQ, tech stack and IT spend of a company
Company Employees Scraper
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.

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

LinkedInProfile · Posts · Post search · Reactions · Comments · Company · Employees
Lead genLeads Finder
Google MapsPlaces & local businesses
TikTokVideos · Comments
X (Twitter)Tweets & profiles
RedNote 小红书Notes, users & comments
Douyin 抖音Profiles, videos & comments
Weibo 微博Posts & profiles
Bilibili 哔哩哔哩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.