Vexaloom Labs

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.

FieldTypeRequiredDescription
postUrlsarrayrequiredPublic 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.
reactionTypeFilterarrayoptionalOptional 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.
emitNoResultsMarkerbooleanoptionalWhen 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.

FieldTypeRequiredDescription
reactionsstringoptionalDataset 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, postUrn and postUrl — the resolved post identity
  • inputPostUrl — the exact URL or ID you supplied
  • reactionsTotal — total reactions on the post
  • reactionCounts — exact counts for like, celebrate, love, support, insightful, funny and superLike when LinkedIn's guest reaction layout is available
  • reactionTypesPresent — the reaction types that actually appear on the post
  • commentsTotal — comment count when the page exposes it
  • repostsTotal — repost count when the guest layout exposes it
  • scrapedAt — 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

  1. 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, share or ugcPost id 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.
  2. It reads the public post page. LinkedIn's logged-out page shows the total reaction count on every post.
  3. 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.
  4. If that layout is unavailable, the actor returns the total and the reaction types shown on the page, and omits reactionCounts rather 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.

Open the step-by-step Python guide →

Source build I1DCTvghEDiSJaPvW. Documentation is regenerated from the default published build; private drafts are not included.