LinkedIn Comments Scraper - [✅ No Cookies] avatar

LinkedIn Comments Scraper - [✅ No Cookies]

Pricing

from $10.00 / 1,000 comment scrapeds

Go to Apify Store
LinkedIn Comments Scraper - [✅ No Cookies]

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

4

Monthly active users

5 days ago

Last modified

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 metadataOnly before 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

FieldTypeDescription
startUrlsarrayLinkedIn post URLs to scrape. Activity IDs and URNs are also accepted through the Post URLs field.
postUrlsarrayOptional line-separated list of LinkedIn post URLs, numeric activity IDs, or urn:li:activity values.
maxCommentsintegerMaximum number of comment and reply rows to save across all posts.
includeRepliesbooleanInclude nested replies when the provider payload contains them.
maxRepliesPerCommentintegerCaps nested replies per top-level comment.
metadataOnlybooleanSave one post summary row per input instead of comment rows. Useful for comment-count checks.
providerOrderstringChoose which managed public-data provider to try first.
includeRawDatabooleanAttach 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

FieldTypeDescription
recordTypestringcomment, reply, or post when metadataOnly is enabled.
postUrlstringCanonical LinkedIn post URL.
postIdstringLinkedIn activity/share identifier when available.
postTextstringText/content of the parent LinkedIn post when returned by the provider.
postAuthorNamestringName of the parent post author when available.
commentIdstringProvider/LinkedIn identifier for the comment or reply.
commentUrlstringDirect comment URL when available.
parentCommentIdstringTop-level comment ID for reply rows.
threadLevelinteger0 for top-level comments, 1 for replies.
textstringComment or reply text.
datePublishedstringComment timestamp when available.
authorNamestringComment author name.
authorHeadlinestringAuthor headline or occupation when available.
authorProfileUrlstringLinkedIn profile URL for the comment author when available.
authorProfileImagestringAuthor profile image URL when available.
authorUrnstringProvider/LinkedIn author identifier when available.
likeCountintegerLike count for the comment or reply when available.
reactionCountintegerTotal reactions for the comment or reply when available.
replyCountintegerReply count for top-level comments when available.
reactionsobjectReaction counts by type when available.
commentCountintegerComment count for metadataOnly post rows.
sourcestringProvider used for this row.
scrapedAtstringISO 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 metadataOnly first if I only need the comment count, then pull full rows if the post is relevant.

Output interpretation:

  • comments points to the cleaned dataset export for comment and reply rows.
  • commentsCsv provides the same dataset in CSV form.
  • runSummary contains machine-readable telemetry, including comment counts, providers used, provider status codes, costs, and stop reason.
  • outputSummary gives 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.
  • scrapedAt shows when the row was saved.
  • The Actor works with public LinkedIn post data from the configured provider payloads.

Pagination and cost guidance:

  • Use maxComments to cap total saved rows across all posts.
  • Use maxRepliesPerComment to limit nested reply depth per top-level comment.
  • Use metadataOnly for 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 metadataOnly when you only need a post-level comment count.
  • Set includeReplies and maxRepliesPerComment according to the level of thread detail you want.
  • Choose the provider order that matches your preferred managed public-data source.
  • Read RUN_SUMMARY when you need provider status, stop reason, or cost-related telemetry.

Continue the workflow

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.

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.