LinkedIn Comments Scraper - [✅ No Cookies]
Pricing
from $10.00 / 1,000 comment scrapeds
LinkedIn Comments Scraper - [✅ No Cookies]
Extract public LinkedIn post comments and replies with structured author, text, reaction, reply, provider, and run summary fields. No LinkedIn cookies required. MCP/API-ready.
Pricing
from $10.00 / 1,000 comment scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
13
Total users
4
Monthly active users
5 days ago
Last modified
Categories
Share
What is LinkedIn Comments Scraper - No Cookies?
Extract public LinkedIn post comments and replies from LinkedIn post URLs, activity IDs, or urn:li:activity values. This Apify Actor is designed for AI agents, social listening workflows, lead discovery, content research, and engagement analysis. Each saved dataset row represents one public comment, reply, or a post summary row when metadataOnly is enabled. Valuable fields include author name, headline, profile URL, profile image, author URN, comment text, timestamps, reactions, replies, provider source, and run summary data. The Actor is usable through the Apify API and Apify MCP.
Best fit and connected workflows
Use this Actor when you need structured comment data from a public LinkedIn post and a clean row-based dataset for downstream automation.
Typical routing patterns include:
- Reviewing engagement on a specific public LinkedIn post
- Feeding comment text into an internal analysis pipeline
- Capturing author fields for research or outreach workflows
- Checking comment volume with
metadataOnlybefore pulling full comment rows - Reading the dataset back in API, dataset, or MCP-based automations
focused workflow
LinkedIn Comments Scraper - No Cookies is designed as a focused workflow.
Practical scenario
A social media manager receives a public LinkedIn post URL from a campaign report and wants to review the discussion around it. They paste the URL into startUrls, keep includeReplies enabled, and set maxComments to cap the saved rows. The Actor returns rows with fields such as authorName, text, reactionCount, replyCount, and scrapedAt. The manager can then scan repeated themes, identify active participants, and decide whether to reply, brief a stakeholder, or export the rows for a report.
Input fields
| Field | Type | Description |
|---|---|---|
startUrls | array | LinkedIn post URLs to scrape. Activity IDs and URNs are also accepted through the Post URLs field. |
postUrls | array | Optional line-separated list of LinkedIn post URLs, numeric activity IDs, or urn:li:activity values. |
maxComments | integer | Maximum number of comment and reply rows to save across all posts. |
includeReplies | boolean | Include nested replies when the provider payload contains them. |
maxRepliesPerComment | integer | Caps nested replies per top-level comment. |
metadataOnly | boolean | Save one post summary row per input instead of comment rows. Useful for comment-count checks. |
providerOrder | string | Choose which managed public-data provider to try first. |
includeRawData | boolean | Attach raw comment objects to each dataset row for debugging. This increases dataset size. |
Focused JSON input example
{"startUrls": [{"url": "https://www.linkedin.com/feed/update/urn:li:activity:7312345678901234567/"}],"maxComments": 50,"includeReplies": true,"maxRepliesPerComment": 10,"metadataOnly": false,"includeRawData": false}
Output fields
| Field | Type | Description |
|---|---|---|
recordType | string | comment, reply, or post when metadataOnly is enabled. |
postUrl | string | Canonical LinkedIn post URL. |
postId | string | LinkedIn activity/share identifier when available. |
postText | string | Text/content of the parent LinkedIn post when returned by the provider. |
postAuthorName | string | Name of the parent post author when available. |
commentId | string | Provider/LinkedIn identifier for the comment or reply. |
commentUrl | string | Direct comment URL when available. |
parentCommentId | string | Top-level comment ID for reply rows. |
threadLevel | integer | 0 for top-level comments, 1 for replies. |
text | string | Comment or reply text. |
datePublished | string | Comment timestamp when available. |
authorName | string | Comment author name. |
authorHeadline | string | Author headline or occupation when available. |
authorProfileUrl | string | LinkedIn profile URL for the comment author when available. |
authorProfileImage | string | Author profile image URL when available. |
authorUrn | string | Provider/LinkedIn author identifier when available. |
likeCount | integer | Like count for the comment or reply when available. |
reactionCount | integer | Total reactions for the comment or reply when available. |
replyCount | integer | Reply count for top-level comments when available. |
reactions | object | Reaction counts by type when available. |
commentCount | integer | Comment count for metadataOnly post rows. |
source | string | Provider used for this row. |
scrapedAt | string | ISO timestamp when the row was saved. |
Illustrative output record
{"recordType": "comment","postUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7312345678901234567/","postId": "7312345678901234567","postText": "Launching our new workflow for comment analysis.","postAuthorName": "Alex Johnson","commentId": "comment-12345","commentUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7312345678901234567/?commentUrn=comment-12345","text": "Great launch. Curious how you are measuring adoption.","datePublished": "2026-06-08T12:00:00.000Z","authorName": "Jane Smith","authorHeadline": "Revenue Operations Lead","authorProfileUrl": "https://www.linkedin.com/in/jane-smith/","authorProfileImage": "https://media.licdn.com/dms/image/example.jpg","authorUrn": "urn:li:member:123456","likeCount": 4,"reactionCount": 12,"replyCount": 2,"reactions": {"like": 4,"support": 1,"curious": 2,"insightful": 5},"scrapedAt": "2026-06-08T12:00:00.000Z"}
How it works
This Actor uses managed public-data providers and starts with the provider order configured in the input. The live contract exposes these provider options: the routing options listed in the input schema.
The runtime supports these Apify secret environment variables for provider access:
The dataset schema stores one row per public LinkedIn comment or reply, and metadataOnly switches the output to one post row per input. Execution summaries are written to the default key-value store as RUN_SUMMARY and OUTPUT.
Evergreen pricing
Startup billing and empty runs
The apify-actor-start event costs $0.00005 per startup unit. Apify charges one startup unit per GB of allocated memory, with a minimum of one unit, so a 2 GB run incurs two units. This startup charge still applies when input is invalid, no results are found, or an upstream request fails. Statements about free, unbilled, or skipped results refer only to the corresponding result event; they do not waive the startup charge. Apify platform usage is charged separately according to the run resources and your plan. Check the live Pricing tab for current events, tiers, and rates. Result limits cap result events, not the entire run cost.
LinkedIn Comments Scraper - No Cookies uses Pay per event plus Apify platform usage. The primary charged event is Comment scraped, and the live Pricing tab in Apify Console is the source of truth for current pricing details.
Example in words: if a run saves one hundred comments and replies, the charged event count follows the saved comment rows, while platform usage follows your selected Apify plan and execution resources. Metadata rows, summaries, and validation exits are described as free in the current contract.
Use with AI agents (MCP)
This Actor is usable through Apify MCP as a structured tool for retrieving public LinkedIn comment data. The exact Actor identity is khadinakbar/linkedin-comments-scraper.
It is a good fit when an agent needs:
- comment and reply text from public LinkedIn posts
- author and reaction fields for structured analysis
- dataset-backed output that can be read back from Apify storage
- a compact run summary for control flow or orchestration
Fetch public comments and replies from this LinkedIn post URL. Return the dataset rows, include author and reaction fields when available, and summarize the run from the key-value store output. Use
metadataOnlyfirst if I only need the comment count, then pull full rows if the post is relevant.
Output interpretation:
commentspoints to the cleaned dataset export for comment and reply rows.commentsCsvprovides the same dataset in CSV form.runSummarycontains machine-readable telemetry, including comment counts, providers used, provider status codes, costs, and stop reason.outputSummarygives a compact agent-friendly summary with comments scraped, posts processed, providers used, and stop reason.
Provenance and scope:
- Each dataset row records the provider in
source. scrapedAtshows when the row was saved.- The Actor works with public LinkedIn post data from the configured provider payloads.
Pagination and cost guidance:
- Use
maxCommentsto cap total saved rows across all posts. - Use
maxRepliesPerCommentto limit nested reply depth per top-level comment. - Use
metadataOnlyfor a lighter comment-count check before pulling full rows. - The primary event charges per saved public comment or reply, while metadata and summary rows are not charged.
Apify API example
import { ApifyClient } from "apify-client";const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {startUrls: [{url: "https://www.linkedin.com/feed/update/urn:li:activity:7312345678901234567/",},],maxComments: 20,includeReplies: true,maxRepliesPerComment: 5,metadataOnly: false,includeRawData: false,};const run = await client.actor("khadinakbar/linkedin-comments-scraper").call(input);const dataset = await client.dataset(run.defaultDatasetId).listItems({ clean: true });console.log(dataset.items);
Best results and outcome guidance
- Start with a single public post URL when validating the workflow.
- Use
metadataOnlywhen you only need a post-level comment count. - Set
includeRepliesandmaxRepliesPerCommentaccording to the level of thread detail you want. - Choose the provider order that matches your preferred managed public-data source.
- Read
RUN_SUMMARYwhen you need provider status, stop reason, or cost-related telemetry.
Continue the workflow
- Then use LinkedIn Company Details Scraper to extend LinkedIn Comments Scraper - No Cookies research with a complementary enrichment contract.
- Then use LinkedIn Company Employee Scraper - People & Titles to extend LinkedIn Comments Scraper - No Cookies research with a complementary enrichment contract.
Design note
I found that the output contract always includes recordType, postUrl, source, and scrapedAt as required fields, which makes every saved row traceable even when other fields are missing.
FAQ
Can this Actor read public comments from LinkedIn post URLs, activity IDs, and URNs?
Yes. The input contract accepts LinkedIn post URLs, activity IDs, and urn:li:activity values.
What is the difference between startUrls and postUrls?
Both accept LinkedIn post references. startUrls uses request-list style URL objects, while postUrls accepts a line-separated list of URLs, numeric activity IDs, or URNs.
When should I use metadataOnly?
Use it when you want one post row per input and a lightweight comment-count check instead of full comment rows.
How are replies handled?
Replies are included when includeReplies is enabled and the provider payload contains nested replies. maxRepliesPerComment caps replies per top-level comment.
Can I see provider usage in the output?
Yes. The source field identifies the provider used for each row, and RUN_SUMMARY includes provider-related telemetry.
Is there a related internal Actor workflow?
No related Actor transfer has been verified for this Actor.
Responsible use
Use this Actor only for public LinkedIn data that is available through the configured provider payloads and in line with applicable laws, platform terms, and organizational policies. Review the output before using it in automated workflows, especially when author names, profile URLs, or reaction fields are used for analysis or enrichment.