LinkedIn Post Reactions Scraper (No Cookies) avatar

LinkedIn Post Reactions Scraper (No Cookies)

Pricing

from $1.50 / 1,000 post reaction results

Go to Apify Store
LinkedIn Post Reactions Scraper (No Cookies)

LinkedIn Post Reactions Scraper (No Cookies)

Extract people and entities that reacted to public LinkedIn posts. Get reaction type, name, headline, LinkedIn URL, IDs, and timestamps in clean JSON or CSV—no cookies or LinkedIn login required.

Pricing

from $1.50 / 1,000 post reaction results

Rating

0.0

(0)

Developer

Data Slayer

Data Slayer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Turn public LinkedIn post URLs into a structured reaction-level dataset. Each row represents one unique reaction and includes the reaction type, reactor name, headline, LinkedIn URL, encoded ID, entity type, post ID, source URL, and retrieval timestamp.

Watch the demo

YouTube video coming soon.

Use it for engaged-audience research, campaign analysis, social listening, lead-list preparation, and CRM or BI workflows. No LinkedIn cookies, login credentials, browser session, or proxy configuration are required—paste one or more post URLs and run the Actor.

Quick start

  1. Add one or more public LinkedIn post URLs under LinkedIn Post URLs.
  2. Keep the default maximum of 100 reactions per post or choose another limit.
  3. Keep All reaction types or select the reactions you need.
  4. Click Start and open the Dataset when the run finishes.

The maximum is an upper bound, not a guaranteed result count. The Actor stops when it reaches your limit or when the available source reactions are exhausted.

What data can you extract?

Every reaction row uses the same flat schema:

FieldTypeDescription
post_urlstringNormalized LinkedIn post URL requested in the input.
post_idstringNumeric LinkedIn post ID stored as a string to prevent precision loss.
reaction_urnstring or nullDerived LinkedIn reaction URN when the required identifiers are available.
reaction_typestringLIKE, PRAISE, EMPATHY, APPRECIATION, INTEREST, or ENTERTAINMENT.
reactor_entity_typestringperson, company, or unknown.
reactor_namestring or nullDisplay name returned for the reactor.
reactor_headlinestring or nullLinkedIn headline or position when available.
reactor_linkedin_urlstring or nullLinkedIn URL returned for the person or company.
reactor_idstring or nullEncoded LinkedIn profile or company identifier.
reactor_image_urlstring or nullValid media image URL when available. Profile-page URLs are not mislabeled as images.
input_indexintegerZero-based position of the post URL in the normalized input.
reaction_indexintegerZero-based reaction order for that post after filtering and deduplication.
fetched_atstringUTC retrieval timestamp in ISO 8601 format.

All fields are always present. Unavailable optional values are null in JSON and empty cells in CSV.

Input

FieldRequiredDefaultDescription
post_urlsYesExample URL in the formAdd 1–1,000 LinkedIn post URLs. Supported formats include /posts/...-activity-..., /posts/...-ugcPost-..., and /feed/update/urn:li:activity:.... Comment URLs are not supported.
max_reactions_per_postNo100Maximum matching reactions saved per post. Use 0 to request all available reactions, with a 100-page safety cap.
reaction_typesNo["ALL"]Keep every supported reaction type or select one or more specific types.

Example input

{
"post_urls": [
"https://www.linkedin.com/feed/update/urn:li:activity:7408723748973056001"
],
"max_reactions_per_post": 100,
"reaction_types": ["ALL"]
}

Existing API automations can continue using the supported aliases posts, postUrls, linkedin_post_url, maxItems, and reactionTypeFilter. New integrations should use the canonical fields shown above.

Reaction types

The output uses LinkedIn's stable reaction categories:

Output valueLinkedIn label
LIKELike
PRAISECelebrate
EMPATHYSupport
APPRECIATIONLove
INTERESTInsightful
ENTERTAINMENTFunny

Filters are applied before max_reactions_per_post, so the maximum counts matching saved reactions rather than discarded reaction types.

Example output

Each default-dataset item represents one reaction:

{
"post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7408723748973056001",
"post_id": "7408723748973056001",
"reaction_urn": "urn:li:fsd_reaction:(urn:li:fsd_profile:ACoAAExampleProfileId,urn:li:activity:7408723748973056001,0)",
"reaction_type": "LIKE",
"reactor_entity_type": "person",
"reactor_name": "Example Person",
"reactor_headline": "Growth Marketing Lead",
"reactor_linkedin_url": "https://www.linkedin.com/in/ACoAAExampleProfileId",
"reactor_id": "ACoAAExampleProfileId",
"reactor_image_url": null,
"input_index": 0,
"reaction_index": 0,
"fetched_at": "2026-07-25T10:00:00Z"
}

Results can be downloaded from Apify as JSON, JSONL, CSV, Excel/XLSX, XML, or HTML table data. The configured dataset view keeps the 13 canonical fields in a practical export order.

Per-URL run summary

The default key-value store includes RUN_SUMMARY. It preserves one status for every requested URL without mixing error placeholders into the reaction dataset.

{
"requested_url_count": 1,
"successful_url_count": 1,
"failed_url_count": 0,
"reactions_saved": 77,
"inputs": [
{
"input_index": 0,
"post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7408723748973056001",
"status": "succeeded",
"reactions_received": 77,
"reactions_saved": 77,
"pages_fetched": 1,
"source_exhausted": true,
"limit_reached": false,
"reported_total": null,
"error_code": null,
"error_message": null
}
]
}

Possible per-URL statuses are succeeded, no_results, and error. A mixed batch can finish successfully while reporting individual URL errors. If every requested URL fails, the summary is written and the Actor run fails.

Common use cases

  • Build a list of people who engaged with a campaign, announcement, or thought-leadership post.
  • Compare reaction types across posts for audience and content analysis.
  • Research public engagement on industry, company, or competitor posts.
  • Export reactor data to spreadsheets, CRM workflows, dashboards, or enrichment pipelines.
  • Monitor selected posts on a schedule and compare reaction datasets over time.
  • Feed structured LinkedIn reaction data into internal tools, AI agents, or analytics systems.

Use the Actor as a LinkedIn reactions API

Run the Actor with the Apify API, JavaScript client, Python client, CLI, schedules, Tasks, or webhooks. The default dataset contains reaction records and the default key-value store contains RUN_SUMMARY.

JavaScript example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('data-slayer/linkedin-post-reactions').call({
post_urls: [
'https://www.linkedin.com/feed/update/urn:li:activity:7408723748973056001',
],
max_reactions_per_post: 100,
reaction_types: ['ALL'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Limits and expected behavior

  • The Actor extracts reactions available through its public-data source. It cannot guarantee every reaction visible on LinkedIn.
  • max_reactions_per_post is an upper bound. A post may return fewer reactions when the source is exhausted or exposes fewer records.
  • Public, deleted, restricted, private, or region-limited posts can return no results or an error.
  • Comment reaction URLs are not supported. Use a supported LinkedIn post URL.
  • Encoded LinkedIn profile URLs may be returned instead of vanity profile URLs.
  • This Actor does not open or enrich individual LinkedIn profiles. It does not return emails, phone numbers, full work histories, or other profile-enrichment fields.
  • reactor_image_url is null when the source does not provide a valid media image URL.
  • Reactions are deduplicated by post ID and reactor ID and are emitted in normalized input order, then source order.
  • A value of 0 for max_reactions_per_post requests all available pages with a 100-page safety cap per post.

Pricing and cost control

Current pricing is shown in the Actor's Pricing tab. Use max_reactions_per_post to control the maximum number of reactions requested for each post. Because the maximum is an upper bound, your actual output can be smaller.

Responsible use

LinkedIn reaction data can contain personal data such as names, headlines, and profile URLs. Use the Actor only for legitimate purposes and comply with applicable laws, privacy requirements, and platform terms. Do not use the output for spam, harassment, unlawful profiling, or unauthorized collection of private information.

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation.

FAQ

No. The input contains only post URLs and optional result controls. The Actor does not ask for LinkedIn credentials or session cookies.

Can I process multiple LinkedIn posts in one run?

Yes. Add up to 1,000 supported post URLs to post_urls. Duplicate normalized URLs are removed before processing.

Can I filter by reaction type?

Yes. Choose Like, Celebrate, Support, Love, Insightful, Funny, or all supported reaction types. Multiple specific types can be selected.

Does the Actor return every reaction on a post?

Not necessarily. It returns the reactions exposed by the source until the selected maximum or source exhaustion is reached. The maximum is not a completeness guarantee.

Why is reactor_image_url sometimes null?

The field is kept only when the source returns a valid media image URL. A LinkedIn profile page is not an image, so it is intentionally converted to null rather than mislabeled.

Can I export reactions to CSV or Excel?

Yes. Open the run's Dataset tab and choose CSV, Excel/XLSX, JSON, or another Apify-supported export format.

What happens if one URL fails in a batch?

The Actor continues with the remaining URLs. Check RUN_SUMMARY for the status, counts, and safe error details for every input URL.

Does it scrape reactions on LinkedIn comments?

No. This Actor accepts supported LinkedIn post URLs only; comment URLs are rejected.

Support

Use the Actor's Issues tab for bug reports, questions, or feature requests. Include the run ID, a non-sensitive example input, the expected result, and what happened.