LinkedIn Comments Scraper
Pricing
from $2.00 / 1,000 linkedin comments
LinkedIn Comments Scraper
Extract clean, deduplicated comments visible on public LinkedIn posts, with original author profile URLs, reactions, timestamps, optional author details, and clear per-post coverage. No login or cookies.
Pricing
from $2.00 / 1,000 linkedin comments
Rating
0.0
(0)
Developer
Chronometrica
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
๐ฌ What does LinkedIn Comments Scraper do?
LinkedIn Comments Scraper extracts clean, deduplicated comment data from public LinkedIn post pages. Paste your own public LinkedIn post or feed URLs. No LinkedIn login, cookies, account, or API key is required.
Each saved row is one visible top-level comment. It can include the original
public author profile URL, text, reactions, publish time, stable IDs, direct
comment links, mentions, and optional public author details. The OUTPUT
record explains invalid URLs, duplicate inputs, missing public rows, partial
coverage, failed inputs, and charge limits.
Use it for audience research, brand monitoring, content research, campaign review, spreadsheets, and automated data pipelines.
With LinkedIn Comments Scraper, you can:
- ๐ฌ Collect comments visible on known public LinkedIn posts.
- ๐ Use your own copied public post or feed URLs.
- ๐ Save post URNs, activity IDs, UGC post IDs, and public comment IDs.
- ๐ค Collect public author names, original profile links, and profile images.
- ๐ Add public author IDs, headlines, locations, and organizations when needed.
- ๐ท๏ธ Identify public profile mentions and comments by the post author.
- โค๏ธ Capture public reaction counts when LinkedIn shows them.
- ๐ Save a UTC publish time when available.
- ๐งน Save repeated public comment IDs once.
- ๐ฆ Get one result for each input with counts, completeness, and a stop reason.
- ๐ฆ Export rows as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.
- โ๏ธ Run through the Apify API, SDKs, webhooks, schedules, and integrations.
Each dataset row represents one public LinkedIn comment shown directly on one input post during one run. Results are saved as they are collected.
This Actor reads public LinkedIn post pages. It does not sign in, use a customer LinkedIn account, collect private data, or claim that a limited public preview is a complete comment thread.
The scope is explicit. The Actor collects top-level comments shown directly on a public post page. It does not offer a reply setting because LinkedIn does not expose reply threads reliably on public pages.
โ Clean and predictable runs
- Paste 1โ100 public
/posts/or/feed/update/URLs. The form shows this limit before the run starts. - Equivalent post URLs are collected once. Repeated public comment IDs are also saved once.
- Each input gets a clear result. An unsupported URL is not reported as an empty post.
- Set 1โ1,000 rows per post, or turn on
collectAllAvailableto remove the numeric result limit. - The Actor does not use or change your LinkedIn session. A run cannot sign your LinkedIn account out.
- One saved comment uses one comment event. Duplicate inputs, empty results, and failed inputs do not use a comment event.
- Coverage fields show whether the public page exposed and saved the displayed comment count.
๐ฆ What LinkedIn comment data can I extract?
| Data group | Example fields |
|---|---|
| ๐ Post identity | inputUrl, inputType, postUrl, postUrn, activityId, ugcPostId |
| ๐ฌ Comment identity | commentId, commentUrl |
| ๐ค Author details | authorName, authorUrl, authorId, authorUrn, authorHeadline, authorLocation |
| ๐ Comment details | text, mentions, publishedAt, isPostAuthor |
| โค๏ธ Public signals | reactionsCount |
| ๐ Observation | observedAt |
Missing public values stay null. The Actor does not guess missing values or
change a missing reaction count to zero.
โ๏ธ Can I use this Actor through an API?
Yes. You can run LinkedIn Comments Scraper in Apify Console or use it through:
- Apify API
- Python SDK
- JavaScript SDK
- Webhooks
- Scheduled runs
- Apify integrations
This makes it easy to send comment rows to spreadsheets, databases, warehouses, dashboards, AI analysis tools, and internal services.
๐ฏ Why scrape LinkedIn comments?
| Use case | How comment data helps |
|---|---|
| ๐ Audience research | Find public questions, opinions, and repeated language. |
| ๐ฃ Brand monitoring | Review public response to products, news, and campaigns. |
| ๐ก Content planning | Find objections, follow-up topics, and useful ideas. |
| ๐ง Author research | Connect comments with public author profiles when shown. |
| ๐ค Text analysis | Send clean comment text to your own analysis workflow. |
| ๐งฑ Data pipeline building | Load comment observations into databases and applications. |
The Actor collects public source data. It does not add sentiment labels or guess a person's intent.
๐ต Pricing event
When pay-per-result pricing is active, one unique saved comment row uses one
linkedin-comment result event. Empty posts, duplicate posts, failed URLs,
and inputs with no public comment rows use no result event. Repeated public
comment IDs are saved and billed once.
When includeAuthorDetails is on, each unique saved comment author with useful
extra public profile data uses one linkedin-comment-author-detail event.
Repeated comments by the same author use one author-detail event. Missing
profile details use no author-detail event.
Check the Pricing tab in Apify for the current price and billing model. Use
maxComments, collectAllAvailable, and Apify's maximum charge setting to
control result volume before a run. Start with a small limit when you test a
new post.
๐ How do I use LinkedIn Comments Scraper?
- Create or sign in to your Apify account.
- Open LinkedIn Comments Scraper.
- Add one or more known public LinkedIn post or feed URLs.
- Set the maximum comment rows to save from each post.
- Turn on Remove the result limit only when you need every available row.
- Click Start.
- Open Output to inspect the rows and run summary.
- Download the dataset or send it to another tool.
โฌ๏ธ Input
{"startUrls": ["https://www.linkedin.com/posts/timferriss_how-to-become-dramatically-more-productive-activity-7386884213343428608-wrF3"],"maxComments": 100,"collectAllAvailable": false}
๐ Supported URLs
Use public LinkedIn URLs with a /posts/ or /feed/update/ path.
The Actor removes query strings and fragments from the clean postUrl. It
normalizes the host and uses the typed post ID when available. Equivalent URL
forms with the same typed ID are collected once. Each duplicate input still
gets an explained result in OUTPUT.
Profile, company, search, event, article, and LinkedIn Jobs URLs are not supported as inputs. Exact comment and reply links are not supported. This Actor does not discover posts. Give it the post URLs that you want to check.
๐๏ธ Input settings
| Setting | What it controls |
|---|---|
startUrls | Add 1โ100 known public LinkedIn post or feed URLs. Equivalent targets are collected once. |
maxComments | Saves 1โ1,000 visible comment rows from each post. The default is 100. collectAllAvailable can remove this limit. |
includeAuthorDetails | Requests public IDs, headlines, locations, and organizations for every unique comment author. Successful author details use a separate event. The default is false. |
collectAllAvailable | Ignores maxComments and saves every comment row exposed by the public page. It is off by default and can greatly increase cost. |
โฌ๏ธ Output sample
The sample below follows the exact public field order. Public values vary by post, region, and run time.
{"inputUrl": "https://www.linkedin.com/posts/example_public-post-activity-7386884213343428608-demo","inputType": "post_url","postUrl": "https://www.linkedin.com/posts/example_public-post-activity-7386884213343428608-demo","postUrn": "urn:li:activity:7386884213343428608","activityId": "7386884213343428608","ugcPostId": null,"commentId": "7386916967833726976","commentUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7386884213343428608?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7386884213343428608%2C7386916967833726976%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287386916967833726976%2Curn%3Ali%3Aactivity%3A7386884213343428608%29","authorName": "Example Author","authorUrl": "https://www.linkedin.com/in/example-author","authorType": "person","authorId": null,"authorUrn": null,"authorPublicIdentifier": "example-author","authorImageUrl": "https://media.licdn.com/example-author-image","authorHeadline": null,"authorLocation": null,"authorCurrentOrganizations": [],"isPostAuthor": false,"text": "This is an example public comment.","mentions": [],"publishedAt": "2025-10-23T00:10:47.413Z","reactionsCount": 1,"observedAt": "2026-08-15T00:13:20.959Z"}
๐ Run summary
The OUTPUT record contains:
actorName: stable Actor output name;schemaVersion: public output contract version;startedAtandfinishedAt: run times;inputCount: number of submitted input URLs;uniqueTargetCount: number of unique valid posts planned;successfulInputs: number of posts read successfully;failedInputs: number of invalid or failed inputs;duplicateInputs: number of inputs that resolved to an earlier post;notAttemptedInputs: number of inputs skipped after the charge limit;savedRows: number of unique saved comment rows;authorProfileRequests: number of unique public author pages requested;authorDetailEvents: number of unique saved authors that produced an author-detail event;rowsWithAuthorDetails: number of comment rows that received author details;datasetId: ID of the result dataset;stopReason: why the run stopped;inputResults: one ordered result for every submitted URL.
Each inputResults item contains:
{"inputUrl": "https://www.linkedin.com/posts/example_public-post-activity-7386884213343428608-demo","inputType": "post_url","postUrl": "https://www.linkedin.com/posts/example_public-post-activity-7386884213343428608-demo","postUrn": "urn:li:activity:7386884213343428608","activityId": "7386884213343428608","ugcPostId": null,"duplicateOf": null,"status": "partial","statusReason": "LinkedIn exposed fewer public comment rows than its shown count.","pageCommentCount": 48,"publicRowsOnPage": 10,"savedRows": 10,"isPublicPageComplete": false,"isComplete": false,"stopReason": "public_preview_exhausted"}
Input-level failures do not create fake comment rows. If every input fails, the run fails with a safe public message.
๐ฏ Input results and completeness
The dataset contains comment observations only. Input status and post-level
counts stay in OUTPUT, where they cannot be mistaken for comment measures.
Use these fields together for each input:
| Field | Meaning |
|---|---|
pageCommentCount | The public comment count when available and when public count sources agree. |
publicRowsOnPage | The unique comment rows read before the visible save limit, or null if no page was read. |
savedRows | The number of comment rows saved for this input. |
isPublicPageComplete | true when the public page exposed at least its shown public count. |
isComplete | true when the dataset saved at least the shown public count. |
stopReason | The visible setting, public preview, public row end, zero count, charge limit, duplicate, or error. |
LinkedIn can show a count of 48 comments but expose only 10 rows to a public
visitor. The input result uses pageCommentCount: 48, publicRowsOnPage: 10,
savedRows: 10, isPublicPageComplete: false, and isComplete: false.
If the public page exposes all 48 rows but maxComments is 10,
isPublicPageComplete is true and isComplete is false.
When collectAllAvailable is on, the Actor ignores maxComments. It still
stops when the public source ends, the maximum charge is reached, time runs
out, or the source fails.
publishedAt contains a UTC time only when the public information supports
one.
postUrn keeps the exact typed parent URN from the comment. activityId
contains only an activity ID. ugcPostId contains only a UGC post ID. These
values can differ. The Actor does not move an ID from one type into another.
commentUrl opens the source comment when LinkedIn provides a valid comment
identity. The current live release checks require a source ID and matching URL
for every test comment. If LinkedIn does not provide that identity,
commentId and commentUrl stay null. The Actor does not create comment IDs
or comment links.
authorPublicIdentifier is the name in the public profile link. Use
authorUrl to collect that person with LinkedIn Profile Scraper.
Input statuses are ok, empty, partial, duplicate, invalid_url,
failed, or not_attempted. Check statusReason for a short explanation.
partial means that the Actor saved fewer rows than the known public comment
count. The visible maxComments setting, a public preview limit, or the run
charge limit can cause this result. collectAllAvailable removes only the
numeric result limit.
๐ Public source boundary
LinkedIn Comments Scraper reads public LinkedIn post pages. It also reads
public author profile pages when includeAuthorDetails is on.
When author details are on, the Actor requests every unique public comment author profile in the saved comment set. Public details can still be missing.
It does not:
- use a LinkedIn account supplied by you;
- open private posts or account-only comment lists;
- collect private profiles or contact details;
- search LinkedIn for posts;
- collect posts, jobs, profiles, or company pages as result rows;
- bypass access controls;
- promise every comment in LinkedIn's displayed total.
โ ๏ธ Limits and interpretation
- LinkedIn often shows only a small public comment preview.
- A displayed comment count can be greater than the public rows available.
maxCommentsis a result maximum, not a result promise.collectAllAvailableremoves the numeric result limit. It does not change what LinkedIn exposes publicly.- Post-level counts and completeness are in
OUTPUT, not repeated on rows. - If public comment-count sources disagree,
pageCommentCountisnull. - Comment order and public availability can change between runs.
- Private, deleted, missing, or account-limited posts can fail.
- Author details, reaction counts, and publish times can be missing. Missing
values stay
null. - Public profile and image links can change or expire.
- Rows represent comments shown directly on the public post page. The Actor does not collect or rebuild reply threads.
- Results are public-page snapshots. Use scheduled runs to observe changes.
- LinkedIn can change its public pages. A later change can require an Actor update.
โ FAQ
Does this Actor need a LinkedIn login or API key?
No. It reads public LinkedIn post pages without a customer LinkedIn account. It does not use or change your LinkedIn browser session.
Can I paste my own LinkedIn post URL?
Yes. Paste a public LinkedIn /posts/ or /feed/update/ URL. The Actor
validates each URL and gives unsupported URLs an invalid_url result instead
of treating them as empty posts.
What are the run limits?
One run accepts up to 100 post URLs. maxComments accepts 1โ1,000 visible
comment rows per post. Turn on collectAllAvailable to remove that numeric
limit. LinkedIn can still expose fewer public rows. Check the input result for
the exact stop reason.
Can I remove the result limit?
Yes. Turn on collectAllAvailable. The Actor then ignores maxComments and
saves every comment row that LinkedIn exposes on the public page. Collection
still stops at public source end, maximum charge, timeout, or failure.
Does it collect every comment on a post?
Not always. LinkedIn can show a larger total while exposing only a limited
public preview. Check pageCommentCount, publicRowsOnPage, savedRows,
isPublicPageComplete, and isComplete before you treat the result as a full
comment list.
Why did I receive fewer rows than requested?
The post may expose fewer public comments than your setting. LinkedIn may also
limit the public preview, or the post may be unavailable. The Apify maximum
charge can also stop a run. Check OUTPUT and the input stop reason.
What does isComplete mean?
It is true only when the dataset saved at least the public comment count shown
for the post. It is false when the visible setting, a public preview, or the
maximum charge leaves rows out. It is null when LinkedIn does not show a
public count.
Why is a field null?
LinkedIn did not show that value publicly at run time. The Actor does not guess the value or replace a missing count with zero.
How are duplicates handled?
Equivalent inputs with the same typed post ID are collected once. An activity
ID and a UGC post ID are different types, even when their digits match.
Repeated public comment IDs are also saved once. OUTPUT explains duplicate inputs.
The current live test posts contain a numeric ID for each visible comment. If a
future page row has no source ID, it stays in the dataset with commentId: null
and commentUrl: null. The Actor does not use text or row position as an ID.
Does it collect replies?
No. It collects top-level comments shown directly on the public post page. It does not offer a reply setting because public LinkedIn pages do not expose reply threads reliably.
What happens when a post has no public comment rows?
The input creates no fake comment row and no result event. Its OUTPUT result
shows whether the post was empty, unavailable, or failed.
๐ Best practices
- ๐ฏ Start with 10 to 25 rows for a new post.
- ๐งพ Check
OUTPUTbefore you treat a small or empty dataset as an error. - ๐ฆ Use the five count and completeness fields before you claim full coverage.
- ๐ Use the post IDs to match comments with LinkedIn Post Scraper results.
- ๐ค Use
authorUrlto collect a person with LinkedIn Profile Scraper. - ๐ When you collect the same post more than once, choose the result you need.
- ๐ Use
commentUrlto open the source comment. - ๐ Use scheduled runs when you want public comment snapshots over time.
๐ Support
For help, include the Apify run ID, one public post URL, the result you
expected, and the observed dataset or OUTPUT result. State whether the issue
affects one row or the whole run. Do not send LinkedIn account details or
private links.
โ๏ธ Responsible use
This Actor collects information that LinkedIn exposes on public post pages at run time. You are responsible for using the data lawfully and for following privacy, data-protection, research, LinkedIn, and Apify rules. Do not use public comments to harass people, infer sensitive traits, or make high-impact choices about individuals.
๐ Related LinkedIn Actors
Continue the same workflow on this platform or compare public data across platforms.
Continue on LinkedIn
- LinkedIn Post Scraper โ collect public post text, authors, media, dates, and engagement.
- LinkedIn Profile Scraper โ collect public profile identity, headlines, and visible profile facts.
Compare comments across platforms
- Facebook Comments Scraper โ collect public comments, replies, authors, dates, and reactions.
- Instagram Comments Scraper โ collect public comments, authors, dates, likes, and reply counts.
- TikTok Comments Scraper โ collect public comments, replies, authors, likes, and thread links.
- YouTube Comments Scraper โ collect public comments, replies, authors, likes, pins, and creator hearts.
- Reddit Comments Scraper โ collect public thread comments, replies, authors, scores, and dates.
- Snapchat Comments Scraper โ collect public comments and replies from Snapchat Spotlight posts.