LinkedIn Post Reactor Identity & Reaction Type Scraper
Scrape the reactors on LinkedIn posts with name, headline, profile URL, and the specific reaction type they left, filterable by reaction type and date using your own LinkedIn session.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
postUrls | array | required | Public LinkedIn posts to summarize. Accepts /posts/ links (activity, share or ugcPost), /feed/update/urn:li:... links, embed links, bare numeric IDs, lnkd.in short links and country subdomains. |
reactionTypeFilter | array | optional | Optional post filter. A post is returned only when at least one selected reaction type has a count above zero. Every returned row still contains all available counts. |
emitNoResultsMarker | boolean | optional | When no public post can be resolved, add one marker row instead of failing with an empty dataset. |
Download the published input schema
View complete JSON
{
"description": "Public LinkedIn post URLs or IDs. Returns total reactions and exact reaction-type counts; no cookie or login is needed.",
"properties": {
"emitNoResultsMarker": {
"default": true,
"description": "When no public post can be resolved, add one marker row instead of failing with an empty dataset.",
"prefill": true,
"title": "Emit a No-Results Marker",
"type": "boolean"
},
"postUrls": {
"description": "Public LinkedIn posts to summarize. Accepts /posts/ links (activity, share or ugcPost), /feed/update/urn:li:... links, embed links, bare numeric IDs, lnkd.in short links and country subdomains.",
"editor": "stringList",
"maxItems": 100,
"minItems": 1,
"prefill": [
"https://www.linkedin.com/posts/microsoft_this-month-the-microsoft-atlanta-team-in-activity-7516505833061474305-T6ou"
],
"title": "LinkedIn Post URLs or IDs",
"type": "array"
},
"reactionTypeFilter": {
"default": [],
"description": "Optional post filter. A post is returned only when at least one selected reaction type has a count above zero. Every returned row still contains all available counts.",
"editor": "select",
"items": {
"enum": [
"like",
"celebrate",
"love",
"support",
"insightful",
"funny",
"superLike"
],
"enumTitles": [
"Like",
"Celebrate",
"Love",
"Support",
"Insightful",
"Funny",
"Super like"
],
"type": "string"
},
"prefill": [],
"title": "Only Posts With These Reactions",
"type": "array"
}
},
"required": [
"postUrls"
],
"schemaVersion": 1,
"title": "LinkedIn Post Reaction Summary Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
reactions | string | optional | Dataset containing one reaction summary per resolved public post. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "One record per public post: total reactions, exact counts for like/celebrate/love/support/insightful/funny/superLike when LinkedIn's guest layout exposes them, reaction types present, optional comment/repost totals, post URL and timestamp. Reactor identities are not returned.",
"properties": {
"reactions": {
"description": "Dataset containing one reaction summary per resolved public post.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "LinkedIn post reaction summaries",
"type": "string"
}
},
"title": "LinkedIn Post Reaction Summary Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"title": "LinkedIn Post Reaction Summaries",
"views": {
"overview": {
"display": {
"component": "table",
"properties": {
"postId": {
"format": "text",
"label": "Post ID"
},
"postUrl": {
"format": "link",
"label": "Post URL"
},
"reactionTypesPresent": {
"format": "text",
"label": "Types present"
},
"reactionsTotal": {
"format": "number",
"label": "Reactions"
},
"scrapedAt": {
"format": "text",
"label": "Scraped At"
}
}
},
"title": "Reaction summaries",
"transformation": {
"fields": [
"postId",
"reactionsTotal",
"reactionTypesPresent",
"postUrl",
"scrapedAt"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
LinkedIn Post Reaction Counts & Type Breakdown Scraper
Get a clear picture of how people reacted to any public LinkedIn post — the total reaction count and the exact number of likes, celebrates, loves, support, insightful, funny and super-like reactions. No cookie, login or LinkedIn account is needed.
Paste one or more public post links (or bare post IDs). The actor reads each post's public page and returns one summary row per post. It is built for engagement analysis, content research and campaign reporting where aggregate reaction data is enough.
What you get
For each public post:
postId,postUrnandpostUrl— the resolved post identityinputPostUrl— the exact URL or ID you suppliedreactionsTotal— total reactions on the postreactionCounts— exact counts forlike,celebrate,love,support,insightful,funnyandsuperLikewhen LinkedIn's guest reaction layout is availablereactionTypesPresent— the reaction types that actually appear on the postcommentsTotal— comment count when the page exposes itrepostsTotal— repost count when the guest layout exposes itscrapedAt— when the summary was collected
Reactor names, headlines, profile URLs and per-person reaction types are not returned. LinkedIn only shows the reactor list to signed-in members, so this actor deliberately sticks to the public aggregate data instead of asking for your account or cookie.
Input
| Field | Type | Default | Description |
|---|---|---|---|
postUrls |
array of strings | – | Public LinkedIn post URLs or bare numeric IDs. Accepts /posts/ links, /feed/update/urn:li:... links, embed links, lnkd.in short links and country subdomains. Required, 1–100 items. |
reactionTypeFilter |
array of strings | [] |
Optional post filter: return only posts where at least one selected reaction type has a count above zero. Counts in the row still cover every type. Values: like, celebrate, love, support, insightful, funny, superLike. |
emitNoResultsMarker |
boolean | true |
When no public post can be resolved, add one _status: noResults marker row instead of returning an empty dataset. |
Examples
Summarize one post:
{
"postUrls": [
"https://www.linkedin.com/posts/microsoft_this-month-the-microsoft-atlanta-team-in-activity-7516505833061474305-T6ou"
]
}
Summarize several posts and keep only posts with insightful reactions:
{
"postUrls": [
"https://www.linkedin.com/feed/update/urn:li:activity:7468769852581806080/",
"https://www.linkedin.com/feed/update/urn:li:ugcPost:7513744817718218752/",
"7470420615506575360"
],
"reactionTypeFilter": ["insightful"]
}
How it works
- The actor resolves each input to the real post URN and verifies the page belongs to that post before using any count. Wrapper IDs are common: a URL can contain an
activity,shareorugcPostid that differs from the main post, so the actor verifies the page and keeps the resolved identity. Reaction counts shown on related feed cards are ignored. - It reads the public post page. LinkedIn's logged-out page shows the total reaction count on every post.
- When LinkedIn serves its guest reaction layout, the page also carries exact counts for all reaction types. The actor validates that the type counts add up to the visible total before using them.
- If that layout is unavailable, the actor returns the total and the reaction types shown on the page, and omits
reactionCountsrather than inventing numbers.
Why reactionCounts can be missing
LinkedIn sometimes serves a simpler public page that only includes the total count. That is a source limitation, not an error. The row still contains reactionsTotal, reactionTypesPresent and the post identity. The run status message tells you whether per-type counts were available.
FAQ
Do I need a LinkedIn cookie or account? No. The actor never asks for a cookie, login or proxy. It reads only public post pages.
Can I get the names of the people who reacted? No. The reactor list is visible only to signed-in LinkedIn members, so reactor names, headlines, profile URLs and per-person reaction types are not part of this actor.
Which reaction types are counted?
Like, celebrate, love, support, insightful, funny and super like. The output uses the keys like, celebrate, love, support, insightful, funny and superLike.
Why are some reaction counts zero?
A zero is a real value when LinkedIn exposes the requested post's own reaction group. On rare feed-style pages where the requested post shows no reaction count at all, LinkedIn can surface a related post's count first; in that case the row can carry a related post's identity and count. Treat zero-engagement or very new posts with caution. If the guest layout is unavailable for a normal post, the whole reactionCounts object is omitted instead of showing zeros.
How many posts can I process in one run?
Up to 100 per run. Add more URLs or IDs to postUrls; duplicates are removed automatically.
Does it work with company posts, personal posts, shares and ugcPost links?
Yes. The actor accepts activity, share and ugcPost references, /posts/ links, embed links, bare IDs, short links and country subdomains, and resolves wrapper IDs to the main post.
Does the actor return comment authors or comment text? No. It returns the post's comment count when available, but not comments or commenters. Those are separate, login-gated surfaces.
Is this affiliated with LinkedIn? No. This is an independent third-party tool that reads public post pages. It is not affiliated with, endorsed by or sponsored by LinkedIn. You are responsible for complying with LinkedIn's terms and applicable data-protection law when using the output.
Data source and limits
The actor reads public LinkedIn post pages without credentials. It supports public posts only; member-only or deleted posts are skipped with a status message. Reaction counts reflect the data LinkedIn exposes when the run executes and can change over time. Reactor identities are login-gated and are intentionally out of scope.
Known limitation: on some feed-style pages the requested post has no reaction module, and LinkedIn renders a related post's count first. The actor can then attribute that related post's count (and numeric post ID) to the requested post. This affects a small number of zero-engagement or very new posts.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build I1DCTvghEDiSJaPvW. Documentation is regenerated from the default published build; private drafts are not included.