LinkedIn Post Scraper & Comments Reactions
Pricing
$19.99/month + usage
LinkedIn Post Scraper & Comments Reactions
LinkedIn Post Scraper extracts data from LinkedIn posts, including text, images, videos, author details, engagement metrics, timestamps, and external links. Ideal for content analysis, monitoring trends, social listening, and automating structured LinkedIn post data collection
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
0
Bookmarked
44
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
LinkedIn Post Scraper — Comments, Replies and Reaction Breakdown
LinkedIn Post Scraper & Comments Reactions extracts real comments (with nested replies) and reactions (with a per-type breakdown) from LinkedIn posts, company pages, or member profiles. Comments and reactions are login-gated by LinkedIn, so a valid li_at session cookie is required to unlock that data — without it, the Actor returns public post details only. It's built for social listening teams, competitive content research, and B2B marketers who need to see exactly how a post's audience engaged with it.
What is LinkedIn Post Scraper & Comments Reactions?
LinkedIn Post Scraper & Comments Reactions is an Apify Actor that scrapes LinkedIn posts and, when a valid li_at cookie is supplied, their real comments and reaction breakdown via LinkedIn's own authenticated API. Key capabilities:
- Scrape individual post URLs directly, or point at a company/person profile URL to crawl its recent posts
- Get real comments with author, text, and timestamp — plus nested replies linked by
parentId - Get the post's total reaction count and a genuine per-type breakdown (Like, Celebrate, Support, Love, Insightful, Funny)
- Optionally collect individual reactor profiles (best-effort — the reaction counts are always returned regardless)
- Choose comment sort order (most relevant or newest first) and commenter profile detail level
- Filter posts by publish date with
onlyPostsSince
What data can I extract with LinkedIn Post Scraper & Comments Reactions?
| Field | Example Value | Use Case |
|---|---|---|
authorFullName / authorHeadline | "Jane Doe" / "VP Marketing at Acme" | Identify the post's author (parent rows) |
authorName / authorProfileUrl | "John Smith" / LinkedIn profile URL | Identify a commenter (comment/reply rows) |
text / postedAtISO / createdAtISO | "Great insights!" / post timestamp / comment timestamp | Read content and timing |
reactionCount / reactionTypeBreakdown | 420 / {"LIKE": 300, "CELEBRATE": 80, "LOVE": 40} | The core engagement signal, with a real per-type split |
numComments / commentsCollected | 58 / 25 | Compare LinkedIn's total comment count to how many this run actually collected |
type / isChild / isReply | "comment" / true / false | Distinguish parent posts, top-level comments, and nested replies |
activityId / commentId / parentId | post ID / comment ID / parent comment ID | Reconstruct the full thread structure |
url / postUrl / sourceUrl | post link / post link / the original input URL | Trace every row back to its source |
Real reactions with a per-type breakdown
reactionTypeBreakdown is a genuine per-type count fetched from LinkedIn's own reaction API — Like, Celebrate, Support, Love, Insightful, and Funny — not inferred from the total. reactionTypeFilter lets you report a filtered count/reactor list for just one type when you only care about, say, "Insightful" reactions on thought-leadership content. includeReactorProfiles optionally lists the individual people who reacted (name, headline, profile URL); this is explicitly best-effort since not every reactor's identity is always retrievable, but the aggregate reaction counts and breakdown are always returned regardless of whether individual reactor profiles resolve.
Comments with genuine nested reply threading
Comments and replies come from LinkedIn's own authenticated comment API — parentId links a reply back to its parent comment, and isReply/isChild distinguish row types so the full thread structure can be reconstructed. commentsCollected versus numComments lets you see honestly whether this run captured every comment on the post or only a sample, since maxCommentsPerPost and maxRepliesPerComment cap collection depth.
Why not build this yourself?
LinkedIn's official API (Marketing Developer Platform) requires partner-program approval and doesn't expose arbitrary post comment/reaction data to general developers — and LinkedIn login-gates that data even for logged-out browsing of otherwise-public posts. Building an equivalent tool yourself means maintaining a session-cookie-based authenticated API flow, correctly parsing nested comment-reply threading, and handling per-type reaction breakdown extraction. All of that is already implemented in this Actor's source.
How to use data extracted from LinkedIn?
Social listening and competitive content research
Track a competitor's or industry leader's postUrls to see reactionTypeBreakdown and comment sentiment on their content, informing what topics and formats resonate in your space before planning your own content calendar.
B2B marketing and campaign performance
Scrape your own company's posts with includeComments and includeReactions on to build an engagement report beyond LinkedIn's own basic analytics dashboard, including the actual comment text for qualitative review.
Market and thought-leadership research
Set reactionTypeFilter to "INSIGHTFUL" across a set of industry posts to identify which specific content pieces are seen as genuinely valuable versus merely liked.
AI agents and automated pipelines
An agent can call this Actor to pull comment threads for sentiment analysis or lead identification, using authorProfileUrl on commenters to feed a downstream outreach or enrichment workflow.
🔼 Input sample
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
postUrls | No (functionally required) | array | Post/activity URLs, or company/person profile URLs to crawl | ["https://www.linkedin.com/company/google/"] |
li_at | No (functionally required for engagement data) | string (secret) | LinkedIn li_at session cookie; required for comments/reactions | "(your li_at cookie)" |
maxPostsPerSource | No | integer (min 1) | Parent posts collected per source URL | 10 (default) |
includeComments | No | boolean | Fetch comments via LinkedIn's authenticated API | true (default) |
maxCommentsPerPost | No | integer (min 0) | Top-level comments collected per post | 25 (default) |
includeCommentReplies | No | boolean | Collect nested replies under each comment | true (default) |
maxRepliesPerComment | No | integer (min 0) | Cap on replies collected per comment | 10 (default) |
commentSortOrder | No | string (enum) | RELEVANCE (default) or REVERSE_CHRONOLOGICAL | "RELEVANCE" |
commenterProfileDetail | No | string (enum) | short (default, name+URL) or full (+headline+picture) | "short" |
includeReactions | No | boolean | Fetch reaction total and per-type breakdown | true (default) |
reactionTypeFilter | No | string (enum) | Report one reaction type; ALL (default) for full breakdown | "INSIGHTFUL" |
includeReactorProfiles | No | boolean | List individual reactors (best-effort) | false (default) |
maxReactorsPerPost | No | integer (min 0) | Cap on reactor profiles collected per post | 25 (default) |
crawlLinkedPosts | No | boolean | For company/person URLs, follow the post graph for more posts | true (default) |
onlyPostsSince | No | string (date) | Only include posts published on/after this date | "2026-01-01" |
includeRawHtml | No | boolean | Attach raw fetched HTML to each post row | false (default) |
proxyConfiguration | No | object | Proxy config for reliability | {"useApifyProxy": true} |
{"postUrls": ["https://www.linkedin.com/company/google/"],"li_at": "(your li_at cookie)","maxPostsPerSource": 10,"includeComments": true,"includeReactions": true}
Common pitfall: without a valid li_at cookie, the Actor still returns public post details, but comments/reactions fields will be null — this is not an error, it's LinkedIn's own login gate on that specific data.
🔽 Output sample
Output is typed, normalized JSON with three row types: parent posts, top-level comments, and nested replies (exportable as JSON, CSV, or Excel; comment/reply rows are also mirrored to a per-run child dataset).
{"type": "post","isChild": false,"isReply": false,"activityId": "7300000000000000000","postedAtISO": "2026-07-20T10:00:00Z","authorFullName": "Google","text": "Announcing our latest research...","reactionCount": 4200,"reactionTypeBreakdown": {"LIKE": 3000, "CELEBRATE": 800, "LOVE": 400},"numComments": 58,"commentsCollected": 25,"url": "https://www.linkedin.com/posts/google-activity-7300000000000000000-abcd/","postUrl": "https://www.linkedin.com/posts/google-activity-7300000000000000000-abcd/","sourceUrl": "https://www.linkedin.com/company/google/","scrapedAt": "2026-07-26T14:02:11Z"}
All 21 fields shown above are the Actor's real dataset columns across the post/comment/reply row types.
How do you filter and target specific posts?
postUrls accepts either exact post URLs or company/person profile URLs (with crawlLinkedPosts on, the latter expand into their recent post graph) — this is the core scope control. onlyPostsSince is the date-scope filter. reactionTypeFilter is the closest thing to a quality/relevance threshold, narrowing the reaction report to one specific type. Volume is controlled by three layered caps: maxPostsPerSource for how many parent posts per source, maxCommentsPerPost/maxRepliesPerComment for comment-thread depth, and maxReactorsPerPost for individual reactor collection when enabled.
{ "postUrls": ["https://www.linkedin.com/company/openai/"], "li_at": "(cookie)", "onlyPostsSince": "2026-01-01", "maxPostsPerSource": 20 }
{ "postUrls": ["https://www.linkedin.com/posts/example-activity-1234567890-abcd/"], "li_at": "(cookie)", "reactionTypeFilter": "INSIGHTFUL", "includeReactorProfiles": true }
{ "postUrls": ["https://www.linkedin.com/company/google/"], "crawlLinkedPosts": false, "includeComments": false }
▶️ Want to try other LinkedIn scrapers?
| Scraper Name | What it extracts |
|---|---|
| LinkedIn Company About Scraper With Firmographic Enrichment | Industry, employee count, and headquarters data |
| LinkedIn Company Employees Scraper With Growth Tracker | Employee lists with headcount growth tracking |
| LinkedIn Profile Scraper | Individual profile experience and education data |
| LinkedIn B2B Email Scraper | Corporate email and phone leads sourced from LinkedIn |
| LinkedIn Company Scraper: Search By Name, Keyword or URL | Company discovery/search by name or keyword |
| Facebook Comments Scraper: Sentiment & Toxicity Analysis | Comparable comment-engagement data for Facebook |
How to extract LinkedIn data programmatically
Every run is a standard Apify Actor call — one API request with your token, JSON input, JSON results back.
Python example
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run_input = {"postUrls": ["https://www.linkedin.com/company/google/"],"li_at": "(your li_at cookie)","includeComments": True,"includeReactions": True,}run = client.actor("<YOUR_USERNAME>/linkedin-post-scraper-comments-reactions").call(run_input=run_input)for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("type") == "comment":print(row["authorName"], row["text"])
Export to spreadsheets or CRM
Export the dataset directly as CSV or Excel, then map authorName/authorProfileUrl to your CRM's contact fields and text/reactionTypeBreakdown to an engagement-analysis column.
Is it legal to scrape LinkedIn comments and reactions?
Commenter and reactor names, headlines, and profile links are personal data, so GDPR and CCPA obligations apply to storing and using this data. Public LinkedIn posts are visible to logged-in visitors, but downstream storage of individual commenters' identities and content should follow applicable data-protection rules. Consult legal counsel for commercial applications involving bulk storage of personal data.
❓ FAQ
Do I need a LinkedIn account to use this?
Yes, effectively — a valid li_at session cookie is required to unlock comments and reactions data, since LinkedIn login-gates that data. Without it, you still get public post details, but comments/reactions will be null.
How accurate is the reaction breakdown?
It's a genuine per-type count fetched directly from LinkedIn's own reaction API, not inferred from the total reaction count.
Can I get every reactor's profile?
includeReactorProfiles is explicitly best-effort — not every individual reactor's identity is always retrievable, but the aggregate reaction counts and per-type breakdown are always returned regardless of whether individual reactor profiles resolve.
How do I know if I got every comment on a post?
Compare commentsCollected (what this run actually collected) against numComments (LinkedIn's own total comment count) — if they differ, maxCommentsPerPost/maxRepliesPerComment capped collection before reaching the full thread.
Does LinkedIn Post Scraper & Comments Reactions work with Claude, ChatGPT, and AI agent frameworks?
It has no dedicated MCP server registration in this Actor's current setup, but it is callable as a standard Apify API endpoint by any agent framework that can make an authenticated HTTP request and parse JSON.
How does this compare to other LinkedIn post scrapers?
No independently verifiable competitor listing could be confirmed at the time of writing, so no specific comparison is made here. This Actor's distinguishing feature is genuine nested comment-reply threading plus a real per-type reaction breakdown, both from LinkedIn's own authenticated API.
Can I scrape a company's recent posts without knowing individual post URLs?
Yes — point postUrls at a company or person profile URL with crawlLinkedPosts on, and the Actor follows the post graph to collect recent posts automatically.
Conclusion
LinkedIn Post Scraper & Comments Reactions turns a post, company, or profile URL into real engagement data — genuine nested comment threads and a per-type reaction breakdown, sourced directly from LinkedIn's own authenticated API. It's built for social listening teams, competitive researchers, and B2B marketers who need to see exactly how an audience engaged with a post. Start a run with your post URLs and a valid li_at cookie to get comments and reactions back in one pass.