LinkedIn Profile Comments Scraper
Pricing
from $6.00 / 1,000 linkedin comment scrapeds
LinkedIn Profile Comments Scraper
Give a LinkedIn profile URL and get every commenter on that person's recent posts — name, headline, profile URL, comment text and reactions. Also accepts direct post/article URLs. Provider-backed (ScrapeCreators + SociaVault); no cookies, no login.
Pricing
from $6.00 / 1,000 linkedin comment scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Turn a LinkedIn profile into a list of warm leads. Give this actor a person's profile URL and it pulls their recent public posts, then returns every person who commented on them — commenter name, LinkedIn profile URL (the lead), and the comment text on every row. Headline, follower count, and per-comment reaction counts are included when the data provider exposes them (often null for public post comments). You can also pass direct post or article URLs to scrape the comments on a single post.
No LinkedIn login. No cookies. No browser extension. It runs on managed data providers (ScrapeCreators with SociaVault fallback), so you just paste URLs and get structured rows.
What you can do with it
- Social-selling lead lists — everyone engaging with a prospect's or competitor's content is a warm, in-market lead.
- Influencer / creator audience mining — see who actually comments, not just who follows.
- Event & launch follow-up — pull commenters from an announcement post and reach out.
- Competitive intelligence — watch who engages with a rival's thought-leadership.
- AI agents — MCP-ready: one URL in, clean JSON out, predictable per-row pricing.
When to use this vs. other LinkedIn actors
| You want… | Use |
|---|---|
| Commenters on a person's recent posts (from a profile URL) | this actor |
| Comments on specific post URLs you already have | this actor (paste post URLs) |
| Profile fields (bio, followers, experience) | linkedin-profile-email-scraper |
| Jobs with salary & skills | linkedin-jobs-scraper |
This actor returns who commented. It does not return a person's own comment history across all of LinkedIn (that data is login-gated and not exposed publicly).
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | — (required) | LinkedIn profile URLs (/in/...) and/or post/article URLs. Auto-detected per URL. |
maxPostsPerProfile | int | 5 | Recent posts to read per profile URL (1–50). |
maxCommentsPerPost | int | 50 | Max comment rows per post (1–1000). |
maxResults | int | 1000 | Hard cap on total comments charged/saved — your main cost control. |
outputMode | enum | comments | comments (one row per comment) or both (also a post-summary row). |
dedupeComments | bool | true | Drop duplicate comments per post. |
includeRawData | bool | false | Attach raw provider payload to each row (debugging). |
maxConcurrency | int | 2 | Posts fetched in parallel (1–5). |
Example input
{"startUrls": [{ "url": "https://www.linkedin.com/in/williamhgates/" },{ "url": "https://www.linkedin.com/posts/some-author_activity-7429579034096726016" }],"maxPostsPerProfile": 5,"maxCommentsPerPost": 50,"maxResults": 1000,"outputMode": "comments"}
Output
One row per comment. Key fields:
| Field | Description |
|---|---|
commenterName | Person who left the comment (always present) |
commenterProfileUrl | Their LinkedIn profile URL — the lead (always present) |
commentText | The comment (always present when not an image-only comment) |
commenterHeadline | Their job title / tagline — only when the provider exposes it; usually null for post comments |
commenterFollowers | Their follower count — only when exposed; usually null |
commentReactionCount / replyCount | Comment engagement — only when exposed; usually null |
postUrl / postAuthorName | The post they commented on |
sourceType | profile (found via a profile) or post (direct URL) |
sourceProfileUrl / sourceProfileName | The input profile, when applicable |
source | Provider used (scrapecreators / sociavault) |
scrapedAt | ISO 8601 timestamp |
Example output row
{"recordType": "comment","sourceType": "profile","sourceProfileUrl": "https://www.linkedin.com/in/williamhgates/","sourceProfileName": "Bill Gates","postUrl": "https://www.linkedin.com/posts/williamhgates_activity-7429579034096726016","postAuthorName": "Bill Gates","commenterName": "Jane Doe","commenterProfileUrl": "https://www.linkedin.com/in/jane-doe/","commentText": "This completely changed how we think about it.","commenterHeadline": null,"commenterFollowers": null,"commentReactionCount": null,"replyCount": null,"source": "scrapecreators","scrapedAt": "2026-06-19T08:30:00.000Z"}
A machine-readable run summary (counts, billing, provider status, per-post outcomes, warnings) is written to the key-value store under OUTPUT.
Pricing — pay per result
| Event | Price |
|---|---|
| Actor start | $0.00005 |
| Post processed | $0.01 per post fetched for comments |
| Comment scraped | $0.006 per comment row |
A typical run over one profile (5 posts × ~30 comments) costs roughly 5 × $0.01 + 150 × $0.006 ≈ $0.95. Use maxResults to set a hard ceiling. The run log prints the cost cap before any charge and the actual spend at the end.
Run via API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~linkedin-profile-comments-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{ "startUrls": [{ "url": "https://www.linkedin.com/in/williamhgates/" }], "maxPostsPerProfile": 5 }'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('khadinakbar/linkedin-profile-comments-scraper').call({startUrls: [{ url: 'https://www.linkedin.com/in/williamhgates/' }],maxPostsPerProfile: 5,maxCommentsPerPost: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use with AI agents (MCP)
Exposed in the Apify MCP server as apify--linkedin-profile-comments-scraper. Hand an agent a profile URL and it gets a clean list of engagers to qualify or enrich — pair it with linkedin-profile-email-scraper to turn commenters into contactable leads.
FAQ
Do I need LinkedIn cookies or a login? No. It uses managed providers — paste public URLs only.
Why fewer comments than the post shows? Providers expose the publicly visible comments per post; very large threads may be partial. Raise maxCommentsPerPost to capture more of what is exposed.
A profile returned no posts — why? The person may have no public posts, or the provider could not expose them. Pass their post URLs directly instead.
Can it get a person's own comment history (everything they've commented on)? No — that is login-gated and not publicly available. This actor returns commenters on posts.
What if a provider is down? It tries ScrapeCreators first, then SociaVault automatically, and reports provider status in the run summary.
Legal & compliance
This actor collects only publicly available LinkedIn data via third-party data providers. It does not log into LinkedIn, bypass authentication, or access private/connection-gated content. You are responsible for using the data in compliance with LinkedIn's Terms of Service, the GDPR/CCPA, and any applicable laws (including lawful basis for processing personal data and honoring opt-outs). Do not use it for spam, harassment, or unlawful profiling. Provided "as is" without warranty.