Skip to content
    ↑↓ to choose · Enter to open

    · 11 min read

    LinkedIn Post Reactions Scraper: Up to 1,000 Free Results a Month

    By CrawlerBros Engineering Team

    Each record carries 8 fields, including reactorName, reactorHeadline, reactorProfileUrl, and reactionType. Extracting 1,000 results costs $5.00 on the free plan, and Apify's free plan includes $5.00 of monthly usage without requiring a credit card. You can run it against any public post URL or numeric activity ID as long as you provide a valid session cookie. Built for sales, talent, and growth teams who need structured engagement data from specific posts, but not for anyone looking to scrape private contact details like phone numbers or email addresses, which these records do not include.

    Try it: open LinkedIn Post Reactions Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try LinkedIn Post Reactions Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of LinkedIn Post Reactions Scraper a month, before run-start charges and platform usage.

    The example request further down caps maxReactorsPerPost at 100 for each of its 1 postUrls and each of its 6 reactionTypes, so a first run returns at most 600 results and costs at most $3.00 in result charges. That is enough to see the real shape of the data before deciding anything.

    LinkedIn Post Reactions Scraper was last updated on 2026-07-03. It is one of 1,724 Actors CrawlerBros publishes on Apify, which together have 700,263 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run LinkedIn Post Reactions Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    The primary cost driver is maxReactorsPerPost multiplied by the count of items in postUrls. To test your workflow cheaply, set maxReactorsPerPost to a small number on a single post URL before scaling up your runs.

    How do you run LinkedIn Post Reactions Scraper from the API?

    The schema marks 2 of its 8 controls as required: postUrls, cookie. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~linkedin-post-reactions-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"postUrls":["https://www.linkedin.com/feed/update/urn:li:activity:7234567890123456789/"],"cookie":"AQEDATVc5uMEM5s_AAABnro67cYAAAGe3kdxxk0Ajoj1en-Axa4lUoxvqVMAsMpFO2u4rOjJfIS1U1wrBETHJHqkj5i6KReB53dmYSZDgX9K4XnaFLmn7vE30gVWegfZltSOZVu_-Ny8sl4-aAKzeN-H","maxReactorsPerPost":100,"reactionTypes":["LIKE","PRAISE","EMPATHY","INTEREST","APPRECIATION","ENTERTAINMENT"],"language":"en_US"}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "postUrls": [
        "https://www.linkedin.com/feed/update/urn:li:activity:7234567890123456789/"
      ],
      "cookie": "AQEDATVc5uMEM5s_AAABnro67cYAAAGe3kdxxk0Ajoj1en-Axa4lUoxvqVMAsMpFO2u4rOjJfIS1U1wrBETHJHqkj5i6KReB53dmYSZDgX9K4XnaFLmn7vE30gVWegfZltSOZVu_-Ny8sl4-aAKzeN-H",
      "maxReactorsPerPost": 100,
      "reactionTypes": [
        "LIKE",
        "PRAISE",
        "EMPATHY",
        "INTEREST",
        "APPRECIATION",
        "ENTERTAINMENT"
      ],
      "language": "en_US"
    }
    
    run = client.actor("crawlerbros~linkedin-post-reactions-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "postUrls": [
        "https://www.linkedin.com/feed/update/urn:li:activity:7234567890123456789/"
      ],
      "cookie": "AQEDATVc5uMEM5s_AAABnro67cYAAAGe3kdxxk0Ajoj1en-Axa4lUoxvqVMAsMpFO2u4rOjJfIS1U1wrBETHJHqkj5i6KReB53dmYSZDgX9K4XnaFLmn7vE30gVWegfZltSOZVu_-Ny8sl4-aAKzeN-H",
      "maxReactorsPerPost": 100,
      "reactionTypes": [
        "LIKE",
        "PRAISE",
        "EMPATHY",
        "INTEREST",
        "APPRECIATION",
        "ENTERTAINMENT"
      ],
      "language": "en_US"
    }
    
    const run = await client.actor('crawlerbros~linkedin-post-reactions-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.

    Which LinkedIn Post Reactions Scraper inputs matter, and which can you skip?

    The two required controls are postUrls and cookie. Most runs only require configuring maxReactorsPerPost, leaving reactionTypeFilter, minDate, and proxyConfiguration untouched until specific filtering is needed.

    • postUrls (array): LinkedIn post URLs or bare activity IDs. Accepts full post URLs (feed/update/urn:li:activity:... or /posts/...) or plain numeric activity IDs.
    • cookie (string): Your LinkedIn session cookie. Accepts: (1) the li_at value from browser DevTools, or (2) full cookies JSON array exported from an extension like EditThisCookie.
    • maxReactorsPerPost (integer): Maximum number of reactors to scrape per post. LinkedIn typically exposes up to 1000. Default: 100.
    • reactionTypeFilter (array): Only include reactors who gave these reaction types. Leave empty to include all reaction types.
    • reactionTypes (array): Alternative multi-select filter using LinkedIn's raw API reaction codes. Leave empty to include all. Default: ["LIKE","PRAISE","EMPATHY","INTEREST","APPRECIATION","ENTERTAINMENT"].
    • minDate (string): Only include reactions newer than this ISO date (YYYY-MM-DD). Optional.
    • language (string): Preferred LinkedIn locale for the session (affects headline/text language where applicable). Default: "en_US".
    • proxyConfiguration (object): Optional Apify proxy configuration. Residential proxy recommended for best results.

    Fixed-choice controls: language accepts 10 values (default en_US), including en_US (English (US)), en_GB (English (UK)), es_ES (Spanish), fr_FR (French).

    What does LinkedIn Post Reactions Scraper return?

    Output items provide reactor profiles, current professional headlines, and exact reaction types. They do not contain personal contact data such as email addresses or phone numbers.

    • reactorName (e.g. Jane Doe)
    • reactorProfileUrl (e.g. https://www.linkedin.com/in/janedoe)
    • reactorHeadline (e.g. Senior Engineer at Acme Corp)
    • reactionType (e.g. like)
    • postUrl (e.g. https://www.linkedin.com/feed/update/urn:li:a...)
    • postId (e.g. 7234567890123456789)
    • inputPostUrl (e.g. https://www.linkedin.com/feed/update/urn:li:a...)
    • scrapedAt (e.g. 2025-01-15T10:30:00+00:00)

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open LinkedIn Post Reactions Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Obtain a valid LinkedIn session cookie by logging into LinkedIn in your browser, opening DevTools, and copying the li_at string.
    2. Paste the session token into the cookie control, or export the full cookie JSON array.
    3. Add one target post URL or numeric activity ID to postUrls, such as urn:li:activity:7234567890123456789.
    4. Set maxReactorsPerPost to a small trial cap, like 10, to minimize initial result charges.
    5. Run the Actor and inspect the dataset to verify that reactorName, reactorProfileUrl, and reactorHeadline populate as expected.
    6. Optionally specify desired reaction categories in reactionTypeFilter, such as insightful or celebrate.
    7. Scale maxReactorsPerPost up to 1000 for full collection across your target post list.

    How do you apply it? Three worked playbooks

    These are LinkedIn Post Reactions Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Lead generation

    Outcome: Find everyone who engaged with a competitor's or thought leader's post

    Configure: Set postUrls to ["https://www.linkedin.com/feed/update/urn:li:activity:7234567890123456789/"], cookie to your active li_at session string, and maxReactorsPerPost to 500.

    Working method: Start with a single high-engagement competitor post URL. Extract the reactors, evaluate reactorHeadline values against your ideal buyer profile, and expand the postUrls array once targeting is verified.

    Deliverable: A structured dataset containing reactorName, reactorProfileUrl, reactorHeadline, and reactionType for every engaged lead.

    Stop condition: The returned records contain missing reactorProfileUrl fields or authentication errors halt execution.

    Use case 2: Community analysis

    Outcome: Understand who your post resonates with

    Configure: Set postUrls to ["https://www.linkedin.com/feed/update/urn:li:activity:7234567890123456789/"], cookie to your li_at token, and leave reactionTypeFilter empty.

    Working method: Input URLs for your recent brand updates. Compare reactionType distribution across different job titles in reactorHeadline to determine which audiences engage most actively.

    Deliverable: An engagement dataset mapping audience headlines to reaction categories like support, celebrate, and insightful.

    Stop condition: Output records show empty reactorHeadline strings across the majority of items.

    Use case 3: Recruiting

    Outcome: Identify professionals who reacted to industry content

    Configure: Set postUrls to ["urn:li:activity:7234567890123456789"], cookie to your li_at session value, maxReactorsPerPost to 1000, and reactionTypeFilter to ["insightful", "celebrate"].

    Working method: Identify niche industry discussions. Filter for reactors who left insightful or celebrate reactions, then review reactorHeadline entries to source active practitioners.

    Deliverable: A candidate shortlist dataset linking reactorProfileUrl and current titles directly to their high-intent reactions.

    Stop condition: The returned dataset item count is zero despite a valid target post.

    What breaks, and how do you design around it?

    LinkedIn limits visible reactors to approximately 1,000 per post regardless of total engagement. When monitoring large posts, schedule runs across multiple activity IDs or focus your collection on targeted reaction types via reactionTypeFilter.

    When should you not use LinkedIn Post Reactions Scraper?

    Do not use this Actor if you need broad keyword searches across historical posts rather than engagement on specific post URLs. For discovering content by topic or tracking keyword trends, use LinkedIn Post Search Scraper instead. Furthermore, if your primary goal is finding individuals by job title or location rather than post engagement, use LinkedIn People Search Scraper to query LinkedIn's search directory directly.

    What should you check before trusting the output?

    • Verify that reactorProfileUrl contains a valid LinkedIn profile path and is non-empty.
    • Confirm reactionType matches one of the documented strings: like, celebrate, love, support, insightful, funny, or curious.
    • Ensure postId correctly matches the numeric activity ID from inputPostUrl.
    • Check that scrapedAt is a valid ISO 8601 UTC timestamp on every dataset row.

    None of this proves a record is correct. It gives a scheduled LinkedIn Post Reactions Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    How many reactor records can I extract per post?

    LinkedIn limits visible reactors to approximately 1,000 per post. The Actor stops when it reaches LinkedIn's limit or your configured maxReactorsPerPost setting.

    Do I need a LinkedIn session cookie to run this scraper?

    Yes. A valid LinkedIn session cookie (li_at) is required because the scraper cannot work without authentication.

    How much does it cost to scrape 1,000 post reactions?

    On the free plan, 1,000 results cost $5.00 ($0.005 per result). Apify's free plan includes $5.00 of monthly usage, which covers up to 1,000 results before platform usage charges.

    Can I target specific reaction types like insightful or celebrate?

    Yes. You can filter reactions using the reactionTypeFilter control to only return specific engagement types such as insightful, celebrate, love, support, funny, curious, or like.

    Does this Actor extract candidate email addresses?

    No. The Actor extracts public engagement details including reactorName, reactorHeadline, reactorProfileUrl, reactionType, postUrl, postId, inputPostUrl, and scrapedAt, but does not collect personal contact information.

    Where to go next

    When you are ready to run it, open LinkedIn Post Reactions Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the LinkedIn Post Reactions Scraper Actor page for the current input schema, pricing tier, and run history.

    It is part of the LinkedIn Scraping Suite, which puts every related Actor on one page with its price and run history.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-29.

    • Actor last updated by its maintainers on 2026-07-03.

    • Run outcome figures cover the 30 day public window ending 2026-09-29.

    • LinkedIn Post Reactions Scraper on Apify

    Featured actors

    LinkedIn Post Reactions Scraper

    Scrape the full list of people who reacted to any LinkedIn post, including their name, headline, profile URL, and reaction type (like, celebrate, love, support, insightful, funny, curious).

    Run on Apify ↗