LinkedIn Post Comments & Engagements Scraper
Pricing
from $6.00 / 1,000 linkedin comment scrapeds
LinkedIn Post Comments & Engagements Scraper
Paste public LinkedIn post or article URLs to get each visible comment (text, commenter name, profile URL) plus one engagement summary per post with likes, reactions, comments and shares. No cookies or login needed.
Pricing
from $6.00 / 1,000 linkedin comment scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
25
Total users
4
Monthly active users
3 days ago
Last modified
Categories
Share
What is LinkedIn Post Comments & Engagements Scraper?
Paste public LinkedIn post URLs and get every visible comment plus one engagement summary per post, with no cookies or login. Use this Apify Actor to scrape known public LinkedIn post URLs and save one dataset record per post summary row and/or comment row. It accepts public LinkedIn post, feed update, and Pulse article URLs, then returns visible comments, commenter profile URLs, post authors, likes, reactions, comment counts, engagement totals, and scrape metadata. The output is organized so each record represents either a post-level engagement summary or an individual comment, which makes the dataset useful for CRM enrichment, lead research, analyst review, and Apify MCP workflows.
Each comment row carries the comment text, commenter name and profile URL, and the parent post's author and engagement totals, so commenters can go straight into a lead list. It is an Apify Actor usable through Apify MCP.
Best fit and connected workflows
This Actor fits well when you already have a list of public LinkedIn post URLs and want to turn those URLs into structured engagement data.
Typical workflows include:
- social listening around specific posts or articles
- comment-based lead research from known public posts
- engagement review for sales and marketing teams
- enrichment pipelines that start with a post URL and continue into downstream filtering, tagging, or reporting
- AI-agent workflows that need structured comment and engagement records from a known LinkedIn URL set
Because the Actor accepts explicit URLs, it works naturally as the collection step after URL discovery. If your workflow begins with searching or finding posts first, you can route the discovered URLs into this Actor for comment and engagement extraction.
Practical scenario
A sales researcher has a spreadsheet of public LinkedIn post URLs from a conference speaker list. She sends those URLs into this Actor with outputMode set to both. The dataset returns the post author name, post title, reaction count, comment count, and the visible comment text plus commenter profile URLs. She uses the post author and commenter fields to decide which posts show active public discussion, then forwards the commenter profile URLs to her review queue for manual follow-up.
Input fields
| Field | Type | Purpose |
|---|---|---|
postUrls | array of strings | One or more public LinkedIn post, feed update, or Pulse article URLs. Required. |
maxPosts | integer | Caps the number of unique post URLs processed from the input list. |
maxCommentsPerPost | integer | Caps the number of comment rows saved for each post. Use 0 when you only want post-level rows. |
outputMode | string | Selects both, comments, or posts. |
dedupeComments | boolean | Removes duplicate comments per post using comment URL, commenter profile URL, and text. |
maxConcurrency | integer | Sets how many post URLs are processed in parallel. |
Focused JSON input example
{"postUrls": ["https://www.linkedin.com/pulse/being-father-has-made-me-better-leader-vice-versa-austen-allred/"],"maxPosts": 10,"maxCommentsPerPost": 25,"outputMode": "both","dedupeComments": true,"maxConcurrency": 2}
Output fields
The dataset can include post summary rows, comment rows, or both. Every saved row includes recordType, postUrl, source, and scrapedAt.
| Field | Type | Meaning |
|---|---|---|
recordType | string | post for a summary row or comment for a comment row. |
postUrl | string | Original LinkedIn post URL from the input. |
resolvedPostUrl | string or null | Canonical URL for the post. |
postId | string or null | LinkedIn activity or article identifier when available. |
postTitle | string or null | Post title, article name, or headline when available. |
postText | string or null | Visible post body or article description. |
datePublished | string or null | Publication date or timestamp. |
postAuthorName | string or null | Visible author name. |
postAuthorUrl | string or null | LinkedIn profile or page URL for the author. |
postAuthorFollowers | integer or null | Author follower count when exposed. |
likeCount | integer or null | Post like count when exposed. |
reactionCount | integer or null | Total post reaction count when exposed. |
commentCount | integer or null | Total post comment count when exposed. |
shareCount | integer or null | Share or repost count when exposed. |
engagementCount | integer or null | Convenience total of available likes or reactions, comments, and shares. |
commentsSaved | integer or null | Number of comment rows saved for the post. |
commentPosition | integer or null | One-based position of the comment in the public list. |
commentId | string or null | Comment identifier when available. |
commentText | string or null | Visible LinkedIn comment text. |
commentUrl | string or null | Direct comment URL or permalink when available. |
commenterName | string or null | Visible commenter name. |
commenterProfileUrl | string or null | LinkedIn profile URL for the commenter when exposed. |
commenterHeadline | string or null | Visible commenter headline when exposed. |
commentReactionCount | integer or null | Reaction or like count for the comment when exposed. |
replyCount | integer or null | Reply count for the comment when exposed. |
source | string | Collection route for the record (primary). |
runId | string or null | Apify run ID that produced the record. |
scrapedAt | string | ISO timestamp for when the row was saved. |
Sample JSON output record
Sample comment row (commenter anonymised; other values from a real export):
{"recordType": "comment","postUrl": "https://www.linkedin.com/pulse/being-father-has-made-me-better-leader-vice-versa-austen-allred/","resolvedPostUrl": "https://www.linkedin.com/pulse/being-father-has-made-me-better-leader-vice-versa-austen-allred","postTitle": "Being a Father Has Made me a Better Leader, and Vice Versa","datePublished": "2020-06-21T14:35:59.000+00:00","postAuthorName": "Austen Allred","postAuthorUrl": "https://www.linkedin.com/in/austenallred","likeCount": 217,"reactionCount": 217,"commentCount": 17,"engagementCount": 234,"commentPosition": 1,"commentText": "Austen, thanks for sharing!","commenterName": "Example Commenter","commenterProfileUrl": "https://www.linkedin.com/in/example-commenter","source": "primary","scrapedAt": "2026-10-12T06:20:05.351Z"}
How it works
The Actor reads each public LinkedIn post URL you supply and stores the results in the default dataset. Depending on outputMode, it writes post-level engagement summaries, comment rows, or both. Each run writes OUTPUT and RUN_SUMMARY with an outcome: COMPLETE, PARTIAL (some URLs could not be loaded), VALID_EMPTY (no public comments), INVALID_INPUT or UPSTREAM_FAILED (the source was unavailable for every URL; retry later).
The output is designed for two destinations:
- The default dataset for row-level analysis
- The default key-value store for the machine-readable run summary
Pricing
LinkedIn Post Comments Scraper - Comments & Engagements uses Pay per event pricing with Apify platform usage included. You pay the post-engagement-scraped event once per post summary row, the comment-scraped event once per comment row, and the small apify-actor-start event. For example, one post summary row and twenty comment rows are 1 post-engagement-scraped event plus 20 comment-scraped events. Set outputMode to comments or posts to pay for only the rows you need.
For the current pricing details, open the live Pricing tab on the Actor page. The pricing tab is the source of truth for event charges.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. It is a tool for retrieving structured LinkedIn post comments and engagement rows from known public URLs.
Actor identity: khadinakbar/linkedin-post-comments-engagements-scraper
A typical agent prompt can look like this:
Fetch the public LinkedIn post URLs I provide, return post-level engagement rows and visible comments, and preserve the commenter profile URLs, comment text, reaction counts, and scrape timestamps for downstream analysis.
How to interpret the output:
postrows summarize the post-level engagement context.commentrows represent one visible comment each.sourceidentifies the collection route.scrapedAtgives the time the row was saved.runIdconnects the dataset row back to the Apify run that produced it.
Provenance and scope:
- The Actor works from known public LinkedIn post URLs.
- The contract includes post URLs, comments, commenters, post authors, likes, reactions, shares, and engagement totals.
- Output reflects the public comments visible for each URL.
Pagination and cost guidance:
- Use
maxPoststo cap the number of unique URLs processed. - Use
maxCommentsPerPostto cap comment rows saved per post. - Keep
dedupeCommentsenabled for cleaner datasets. - Use
outputModeto narrow the output to posts, comments, or both. - Keep
maxConcurrencyat the default when you want predictable run time and cost tracking.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const actor = client.actor('khadinakbar/linkedin-post-comments-engagements-scraper');const run = await actor.call({postUrls: ['https://www.linkedin.com/pulse/being-father-has-made-me-better-leader-vice-versa-austen-allred/'],maxPosts: 10,maxCommentsPerPost: 25,outputMode: 'both',dedupeComments: true,maxConcurrency: 2,});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(dataset.items);
Best results and outcome guidance
Start with exact public post URLs that already match the audience or topic you want to inspect. Use outputMode: both when you want the clearest combined view of post engagement and comment content. Set maxCommentsPerPost to 0 when you only need post-level metrics. Keep dedupeComments enabled for cleaner downstream analysis.
Continue the workflow
- Then use LinkedIn Post Reactions Scraper - Likes & Engagement to extend LinkedIn Post Comments Scraper - Comments & Engagements research with a complementary engagement contract.
- Then use LinkedIn Post Search Scraper to extend LinkedIn Post Comments Scraper - Comments & Engagements research with a complementary discovery contract.
Builder's note
I built this for teams that turn engaged commenters into warm leads. I found that the dataset contract separates recordType into post and comment, which makes it straightforward to treat summary rows and comment rows differently in downstream workflows.
FAQ
Is this Actor for discovering LinkedIn posts by keyword?
This Actor is designed for known public LinkedIn post URLs. It works well after a discovery step that collects URLs.
Can I use it for post-level engagement only?
Yes. Set maxCommentsPerPost to 0 and choose outputMode: posts.
Can I save only comments?
Yes. Set outputMode: comments.
Does it return commenter profile URLs?
Yes, when LinkedIn shows the commenter's public profile for that comment.
Why are there fewer comment rows than the post's comment count?
The public view of a post shows a preview of its comments, often only a handful, and the Actor saves the comments that are publicly visible. RUN_SUMMARY.postResults[].commentsAvailable shows how many were visible for each post, so set maxCommentsPerPost to match.
Does it work with Apify MCP?
Yes. It is an Apify Actor usable through Apify MCP and returns structured dataset rows for agent workflows.
Responsible use
Use the output in line with applicable laws, LinkedIn-related platform terms, privacy requirements, and your own governance practices. The Actor is intended for publicly visible LinkedIn data. Respect data minimization, store only the fields you need, and review any downstream use of commenter or author information before sharing it further.