PRO Post Reactions LinkedIn Scraper avatar

PRO Post Reactions LinkedIn Scraper

Pricing

from $4.00 / 1,000 results

Go to Apify Store
PRO Post Reactions LinkedIn Scraper

PRO Post Reactions LinkedIn Scraper

Extract all reactions from LinkedIn posts with auto-pagination, incremental scraping, headline filters, and analytics. No LinkedIn account needed.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

Dende Labs API

Dende Labs API

Maintained by Community

Actor stats

2

Bookmarked

3

Total users

1

Monthly active users

3 days ago

Last modified

Share

๐Ÿš€ LinkedIn Post Reactions Scraper Pro

Extract detailed reaction data from any LinkedIn post โ€” including reactor names, headlines, profile URLs, and photos. Supports batch processing of up to 1,000 posts in a single run.

No LinkedIn account or cookies required.

๐Ÿ’ก For other LinkedIn tools by Dende Labs, check: https://apify.com/dendelabs


โœจ Key Features

FeatureDescription
๐Ÿ”„ Auto-paginationOne run extracts ALL reactions. No manual page management.
๐Ÿ“ฆ Batch processingScrape up to 1,000 posts in a single run.
๐Ÿ” Headline keyword filtersOnly include reactors matching specific keywords (e.g., "CEO", "VP").
๐Ÿข Company detectionEach reactor is flagged as person or company page.
๐Ÿ“Š Incremental trackingCompare with previous runs โ€” each reactor is marked as new or existing.
๐Ÿšซ Exclude companiesFilter out company pages, keep only people.
๐Ÿ”— All URL formatsPaste any LinkedIn post link โ€” even with tracking parameters.
๐Ÿ” No cookies neededNo risk of account restrictions or bans.

๐Ÿ“ฅ Input

Basic Usage

Just paste one or more LinkedIn post URLs:

{
"postUrls": [
"https://www.linkedin.com/posts/satyanadella_no-one-becomes-a-clinician-to-do-paperwork-activity-7302346926123798528-jitu"
]
}

All Input Parameters

ParameterTypeRequiredDefaultDescription
postUrlsstring[]โœ… Yesโ€”LinkedIn post URLs or activity IDs (up to 1,000)
reactionTypestringNoALLFilter: ALL, LIKE, PRAISE, EMPATHY, APPRECIATION, INTEREST, ENTERTAINMENT
maxReactionsintegerNo0Max reactions per post. 0 = unlimited
headlineKeywordsstring[]No[]Only include reactors whose headline contains these keywords
excludeCompaniesbooleanNofalseExclude company/org pages from results
previousDatasetIdstringNoโ€”Dataset ID from previous run for incremental tracking
metadataOnlybooleanNofalseOnly fetch reaction counts, not individual reactions (see Metadata Only Mode)

Supported URL Formats

All of these work โ€” just paste whatever you have:

โœ… https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu
โœ… https://www.linkedin.com/feed/update/urn:li:activity:7302346926123798528/
โœ… https://www.linkedin.com/feed/update/urn:li:share:7302346926123798528/
โœ… https://www.linkedin.com/posts/user_slug-activity-123/?utm_source=share&utm_medium=...
โœ… 7302346926123798528

๐Ÿ“ค Output

Single Reaction

Each reaction in the dataset looks like this:

{
"reaction_type": "LIKE",
"is_company": false,
"reactor": {
"id": "ACoAAB8v74YB5oqaAg-4F2VRFh9tEt0zXfRsjpE",
"name": "Ashish Pandey",
"headline": "Head of Ops @ Wiz Labs",
"linkedinUrl": "https://www.linkedin.com/in/ACoAAB8v74YB...",
"profile_pic": "https://media.licdn.com/dms/image/v2/..."
},
"_metadata": {
"post_url": "https://www.linkedin.com/posts/satyanadella_...",
"activity_id": "urn:li:activity:7302346926123798528",
"extracted_at": "2026-03-30T12:00:00.000Z"
}
}

Company Reactor Example

When a company page reacts to a post, is_company is true:

{
"reaction_type": "LIKE",
"is_company": true,
"reactor": {
"id": "106345960",
"name": "Dende Labs",
"headline": "2 followers",
"linkedinUrl": "https://www.linkedin.com/company/dendelabs/",
"profile_pic": null
},
"_metadata": {
"post_url": "https://www.linkedin.com/posts/...",
"activity_id": "urn:li:activity:7399183215997108224",
"extracted_at": "2026-03-30T12:00:00.000Z"
}
}

Output Fields Reference

FieldTypeDescription
reaction_typestringLIKE, PRAISE, EMPATHY, APPRECIATION, INTEREST, or ENTERTAINMENT
is_companybooleantrue if the reactor is a company page, false if a person
is_newbooleanOnly present when using incremental tracking. true = new reactor, false = seen before
reactor.idstringLinkedIn profile or company URN
reactor.namestringFull name of the person or company
reactor.headlinestringLinkedIn headline / tagline
reactor.linkedinUrlstringDirect link to the reactor's LinkedIn profile
reactor.profile_picstringURL to profile photo (800x800) or null
_metadata.post_urlstringThe original post URL you provided as input
_metadata.activity_idstringLinkedIn activity URN of the post
_metadata.extracted_atstringISO timestamp of when the data was extracted

๐Ÿ“Œ Examples

Example 1: Get all reactions from a single post

{
"postUrls": [
"https://www.linkedin.com/posts/satyanadella_no-one-becomes-a-clinician-to-do-paperwork-activity-7302346926123798528-jitu"
]
}

Example 2: Batch โ€” scrape reactions from multiple posts

{
"postUrls": [
"https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu",
"https://www.linkedin.com/posts/billgates_activity-7300000000000000000-abcd",
"https://www.linkedin.com/feed/update/urn:li:activity:7298765432109876543/"
]
}

Example 3: Only get reactions from decision-makers

Use headlineKeywords to filter reactors by their LinkedIn headline:

{
"postUrls": [
"https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"
],
"headlineKeywords": ["CEO", "CTO", "VP", "Founder", "Director", "Head of"]
}

Only reactors whose headline contains at least one of these keywords will be included.

Example 4: Only people, no company pages

{
"postUrls": [
"https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"
],
"excludeCompanies": true
}

Example 5: Filter by reaction type

{
"postUrls": [
"https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"
],
"reactionType": "PRAISE"
}

Available types: ALL, LIKE, PRAISE (Celebrate), EMPATHY (Love), APPRECIATION (Insightful), INTEREST (Curious), ENTERTAINMENT (Funny)

Example 6: Limit results per post

{
"postUrls": [
"https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"
],
"maxReactions": 500
}

Example 7: Incremental tracking โ€” detect new reactors

First run โ€” scrape all reactions:

{
"postUrls": ["https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"]
}

Second run โ€” pass the previous dataset ID to tag each reactor as new or existing:

{
"postUrls": ["https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"],
"previousDatasetId": "abc123xyz"
}

Each reactor in the output will have an is_new field:

  • true โ€” this reactor was NOT in the previous dataset (new engagement)
  • false โ€” this reactor was already in the previous dataset

๐Ÿ’ก You can find the dataset ID in the Apify Console under the Storage tab of your previous run.

Example 8: Metadata only โ€” check reaction count before scraping

Use metadataOnly to quickly check how many reactions a post has without extracting them all. This makes just one API call per post and returns only the totals.

{
"postUrls": [
"https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528-jitu"
],
"metadataOnly": true
}

Output:

{
"post_url": "https://www.linkedin.com/posts/satyanadella_...",
"total_reactions": 847,
"total_pages": 9,
"extracted_at": "2026-03-31T12:00:00.000Z"
}

When to use this:

  • Avoid unnecessary scrapes โ€” Check if a post has new reactions since your last run before paying for a full extraction. For example, if you scraped 847 reactions yesterday and the metadata still shows 847 today, you can skip the full scrape.
  • Cost estimation โ€” Know exactly how many reactions (and how much it will cost) before committing to a full run.
  • Monitoring dashboards โ€” Track reaction growth over time without extracting every reactor each time.

๐Ÿ’ก Metadata-only mode costs just $0.004 per post (one result in the dataset). A full scrape of 1,000 reactions would cost $4.00. Use metadata to decide if the full scrape is worth it.


๐Ÿค– Integration with AI Agents

This actor is optimized for use with AI agents and LLMs via the Apify MCP server.

Output Schema

The actor produces a flat dataset where each item represents one reaction. Key fields for agent consumption:

  • reactor.name โ€” Who reacted
  • reactor.headline โ€” Their professional context
  • reaction_type โ€” How they reacted
  • is_company โ€” Whether it's a company or person

Example Agent Prompt

"Scrape all reactions from this LinkedIn post and find decision-makers (CEOs, VPs, Directors) who engaged with it. Return their names and LinkedIn URLs."

The agent can use headlineKeywords: ["CEO", "VP", "Director"] to filter directly at scrape time, reducing post-processing.


๐ŸŽฏ Use Cases

  • ๐Ÿ”Ž Sales prospecting โ€” Find decision-makers engaging with competitor or industry content
  • ๐Ÿ“Š Market research โ€” Analyze who engages with thought leaders in your space
  • ๐Ÿ† Competitor analysis โ€” Track engagement patterns on competitor posts
  • ๐Ÿ“‹ Lead generation โ€” Build targeted lists from post engagement data
  • ๐Ÿ“ˆ Content strategy โ€” Understand what types of professionals engage with specific topics
  • ๐Ÿ”„ Engagement monitoring โ€” Track reaction growth over time with incremental mode

โ„น๏ธ Profile URL Format

LinkedIn returns profile URLs in profile ID format for reactions, for example:

https://www.linkedin.com/in/ACoAAB8v74YB5oqaAg-4F2VRFh9tEt0zXfRsjpE

Instead of the human-friendly slug format:

https://www.linkedin.com/in/john-doe

This is a LinkedIn limitation โ€” the reactions popup only exposes profile IDs, not public slugs. Both formats are valid and redirect to the same profile. This is the standard behavior across all LinkedIn reaction scrapers.


โš ๏ธ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. LinkedInยฎ is a registered trademark of LinkedIn Corporation. All trademarks are property of their respective owners.