LinkedIn User Comments & Reactions Scraper avatar

LinkedIn User Comments & Reactions Scraper

Pricing

from $8.00 / 1,000 linkedin activity items

Go to Apify Store
LinkedIn User Comments & Reactions Scraper

LinkedIn User Comments & Reactions Scraper

Scrape comments and reactions a LinkedIn profile left on other people's posts: comment text, reaction type, timestamps, and original post context. Cookieless HarvestAPI-backed, no login. MCP-ready.

Pricing

from $8.00 / 1,000 linkedin activity items

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

12 days ago

Last modified

Share

SDRs and ABM researchers paste a public LinkedIn /in/ profile URL and receive one dataset row per comment or reaction that person made on someone else's post. Each row returns commentText or reactionType, the original postAuthorName, a postTextPreview, and postUrl so outreach can reference a real conversation. Charged Pay per event plus platform usage.

Best fit for this Actor

  • Best for a known public LinkedIn profile when the job is "what has this person been commenting on or reacting to?"
  • Designed for personalized outbound: comment text plus the original post author and preview in one row.
  • Pair it with LinkedIn Post Engagers Scraper when the next step is people on a specific postUrl, or start with LinkedIn Profile Comments Scraper when the job is commenters on that profile's own posts.

Workflow: from profile URL to outreach copy

An SDR targeting Microsoft commercial leaders pastes https://www.linkedin.com/in/satyanadella/, chooses comments, and caps Max comments per profile at 3. The Actor then returns comment text, original post author, and post preview. Next they export CSV or pass postUrl into a post-engagers run, or pass profileUrl into email enrichment.

Quick start input

{
"profiles": ["https://www.linkedin.com/in/satyanadella/"],
"scrapeType": "comments",
"commentsLimit": 3,
"maxResults": 3
}

That input is the quality-test prefill: one public profile, comments only, three billed rows.

Input reference

FieldTypeWhat it controls
profilesstring list (required)LinkedIn /in/ URLs or public identifiers. Example: satyanadella. Duplicates removed. Max 100. Post and company URLs are skipped.
scrapeTypeenumcomments (default), reactions, or both.
commentsLimitintegerMax comments per profile (1–500, default 10, prefill 3).
reactionsLimitintegerMax reactions per profile (1–500, default 10).
maxResultsintegerRun-wide billed-row cap (1–2000, default 50).
postedLimitenumany (default), 24h, week, month, 3months, 6months, 12months.
maxConcurrencyintegerProfiles in parallel (1–3, default 1).

What data you receive

One dataset item is one comment or one reaction the queried profile made on another person's post.

FieldDescription
recordTypecomment or reaction
profileUrl / profileNameThe person whose activity you requested
commentTextComment body on comment rows
reactionType / actionTextNormalized type plus provider action on reaction rows
postAuthorName / postUrl / postTextPreviewOriginal post context for outreach
createdAt / scrapedAtActivity time when provided, plus collection time
providerharvestapi
{
"recordType": "comment",
"profileUrl": "https://www.linkedin.com/in/satyanadella",
"profileName": "Satya Nadella",
"commentText": "Thanks for having me.",
"postAuthorName": "Example Author",
"postTextPreview": "One of the privileges of teaching...",
"postUrl": "https://www.linkedin.com/posts/example_activity-123",
"createdAt": "recent ISO timestamp from the provider",
"provider": "harvestapi",
"scrapedAt": "collection time ISO timestamp"
}

Reaction rows use recordType: "reaction" with reactionType (for example LIKE) and actionText instead of commentText.

Use through the API

curl "https://api.apify.com/v2/acts/khadinakbar~linkedin-user-comments-reactions-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"profiles":["https://www.linkedin.com/in/satyanadella/"],"scrapeType":"comments","commentsLimit":3,"maxResults":3}'

Once the Actor completes, read the default dataset items and the OUTPUT / RUN_SUMMARY key-value records for outcome, itemsPushed, and chargedEventCounts.

Use with AI agents through Apify MCP

Scrape the last 3 comments https://www.linkedin.com/in/satyanadella/ left on other people's LinkedIn posts. Return comment text, original post author, post URL, and createdAt. Cap at 3 rows. Use profile URLs only.

Inspect OUTPUT.outcome before using rows. VALID_EMPTY means the profile is valid and the public activity list was empty in range. INVALID_INPUT means supply a LinkedIn /in/ profile. Confirm cost via chargedEventCounts. Setup: https://mcp.apify.com.

Connect the workflow

Pricing

Pay per event plus platform usage. Confirm the live amounts on the Actor Pricing tab before a large run.

EventIntended priceWhen
apify-actor-start$0.00005Once per run
activity-item$0.008Each saved comment or reaction row

A bounded prefill of 3 comments is about $0.024 in events plus compute. Valid empty profiles are charged the start event only. Platform usage includes this Actor's compute and the HarvestAPI nested fetch.

Best results

Provide a public LinkedIn /in/ URL and start with scrapeType: "comments" plus a small commentsLimit. Use postedLimit: "month" when you only need recent activity. Confirm OUTPUT.outcome and a sample row before scheduling. Source coverage is public HarvestAPI profile comments and reactions; keep maxResults as the cost cap.

Builder's note

I found that ScrapeCreators and SociaVault expose LinkedIn profiles and posts, while comments a person left on other people's posts arrive through HarvestAPI profile-comments and profile-reactions. I designed this Actor around that split so each dataset row is one activity item with original post context, rather than mixing it into a post-commenters scraper.

Use this Actor on public LinkedIn data you are authorized to collect. Follow LinkedIn's terms, applicable laws, and your outreach policy. Keep runs proportionate. LinkedIn and HarvestAPI can change public activity coverage; check OUTPUT.outcome and a sample row before relying on a run.