LinkedIn Post Scraper & Comments Reactions avatar

LinkedIn Post Scraper & Comments Reactions

Pricing

$19.99/month + usage

Go to Apify Store
LinkedIn Post Scraper & Comments Reactions

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

SimpleAPI

Maintained by Community

Actor stats

0

Bookmarked

44

Total users

1

Monthly active users

3 days ago

Last modified

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?

FieldExample ValueUse Case
authorFullName / authorHeadline"Jane Doe" / "VP Marketing at Acme"Identify the post's author (parent rows)
authorName / authorProfileUrl"John Smith" / LinkedIn profile URLIdentify a commenter (comment/reply rows)
text / postedAtISO / createdAtISO"Great insights!" / post timestamp / comment timestampRead content and timing
reactionCount / reactionTypeBreakdown420 / {"LIKE": 300, "CELEBRATE": 80, "LOVE": 40}The core engagement signal, with a real per-type split
numComments / commentsCollected58 / 25Compare LinkedIn's total comment count to how many this run actually collected
type / isChild / isReply"comment" / true / falseDistinguish parent posts, top-level comments, and nested replies
activityId / commentId / parentIdpost ID / comment ID / parent comment IDReconstruct the full thread structure
url / postUrl / sourceUrlpost link / post link / the original input URLTrace 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

ParameterRequiredTypeDescriptionExample Value
postUrlsNo (functionally required)arrayPost/activity URLs, or company/person profile URLs to crawl["https://www.linkedin.com/company/google/"]
li_atNo (functionally required for engagement data)string (secret)LinkedIn li_at session cookie; required for comments/reactions"(your li_at cookie)"
maxPostsPerSourceNointeger (min 1)Parent posts collected per source URL10 (default)
includeCommentsNobooleanFetch comments via LinkedIn's authenticated APItrue (default)
maxCommentsPerPostNointeger (min 0)Top-level comments collected per post25 (default)
includeCommentRepliesNobooleanCollect nested replies under each commenttrue (default)
maxRepliesPerCommentNointeger (min 0)Cap on replies collected per comment10 (default)
commentSortOrderNostring (enum)RELEVANCE (default) or REVERSE_CHRONOLOGICAL"RELEVANCE"
commenterProfileDetailNostring (enum)short (default, name+URL) or full (+headline+picture)"short"
includeReactionsNobooleanFetch reaction total and per-type breakdowntrue (default)
reactionTypeFilterNostring (enum)Report one reaction type; ALL (default) for full breakdown"INSIGHTFUL"
includeReactorProfilesNobooleanList individual reactors (best-effort)false (default)
maxReactorsPerPostNointeger (min 0)Cap on reactor profiles collected per post25 (default)
crawlLinkedPostsNobooleanFor company/person URLs, follow the post graph for more poststrue (default)
onlyPostsSinceNostring (date)Only include posts published on/after this date"2026-01-01"
includeRawHtmlNobooleanAttach raw fetched HTML to each post rowfalse (default)
proxyConfigurationNoobjectProxy 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 NameWhat it extracts
LinkedIn Company About Scraper With Firmographic EnrichmentIndustry, employee count, and headquarters data
LinkedIn Company Employees Scraper With Growth TrackerEmployee lists with headcount growth tracking
LinkedIn Profile ScraperIndividual profile experience and education data
LinkedIn B2B Email ScraperCorporate email and phone leads sourced from LinkedIn
LinkedIn Company Scraper: Search By Name, Keyword or URLCompany discovery/search by name or keyword
Facebook Comments Scraper: Sentiment & Toxicity AnalysisComparable 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 ApifyClient
client = 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.

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.