LinkedIn Post Tracker and Comment Capture avatar

LinkedIn Post Tracker and Comment Capture

Pricing

from $1.70 / 1,000 post collecteds

Go to Apify Store
LinkedIn Post Tracker and Comment Capture

LinkedIn Post Tracker and Comment Capture

Tracks new posts from LinkedIn person profiles and company pages, with no cookies and no login. Returns full post data plus the commenters LinkedIn shows publicly. One flat row per post, built for Clay.

Pricing

from $1.70 / 1,000 post collecteds

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

11 hours ago

Last modified

Share

๐Ÿ“ฃ What can LinkedIn Post Tracker and Comment Capture do?

Point it at LinkedIn person profiles and company pages. It returns their recent posts, as flat rows, with the real engagement counts on every one. No cookies, no LinkedIn account, no credentials of any kind.

It also returns the commenters LinkedIn shows publicly, which is a bonus on top of the post feed rather than the product. The limits on that are stated below and they are not small.

๐Ÿ“ฆ What you getโš™๏ธ Features and integrations
๐Ÿ“ One row per post: text, media, permalink, author, published time
๐Ÿ“Š Live reaction and comment counts on every post
๐Ÿ”‘ A stable post_id, so a feed posts each item exactly once
๐Ÿงพ 30 flat fields, snake_case, built for Clay
๐Ÿช No cookies and no LinkedIn account, ever
๐Ÿ“… posted_since, so a scheduled run collects only what is new
๐Ÿ’ฌ Public commenters as a labeled partial sample
โฌ‡๏ธ Export to JSON, CSV, Excel, HTML or XML

Bought by go to market and content teams tracking what a set of companies and executives is publishing, and how those posts are landing.

๐Ÿšซ This is not a reactor scraper and it is not a lead database. LinkedIn serves no reactor identities to a logged out visitor, so this actor returns none, and it says so on every row in reactors_status. Commenters come back at roughly ten per post. If you need every person who touched a post, no logged out tool can give you that, and any tool that claims to is holding a session cookie.

๐Ÿ’ก Why use LinkedIn Post Tracker and Comment Capture?

If you need toRead this field
Track what a list of companies and executives publishespost_text, published_at, author_type
Post each new item to Slack or a CRM exactly oncepost_id, which is stable across runs
See how a post actually landedreaction_count, comment_count
Find people who engage with you repeatedlyperson_profile_url on engager rows
Know how much of a post's comment thread you actually gotcommenters_collected next to commenters_available

๐Ÿ”‘ A stable primary key, which is the part most tools get wrong

post_id is the numeric part of LinkedIn's activity URN. It is stable across runs, across country subdomains, and across both spellings of a permalink, so it is safe as a primary key and safe as the "have I already posted this to Slack" check. The four character token at the end of a permalink is not stable and is never part of the key.

posted_since filters before anything is charged, so a scheduled run that finds nothing new costs the actor start and nothing else.

๐Ÿ“‹ What data can LinkedIn Post Tracker and Comment Capture extract?

Every row carries 30 flat fields. One dataset holds two entity types, told apart by row_type.

FieldTypeMeaning
row_typestringpost, engager or notice. Filter notice out before loading a table.
post_idstringNumeric activity URN. Stable across runs, safe as a primary key.
post_permalinkstringCanonical post URL.
author_namestringThe person or company that published the post.
author_urlstringTheir LinkedIn URL, the join key back to your source list.
author_typestringperson or company.
post_textstringThe post body as published.
post_media_urlstring | nullMedia attached to the post, when there is any.
published_atstringISO 8601 publication time.
reaction_countintegerThe real reaction total, even though the reactors are not served.
comment_countintegerThe real comment total, which is usually far above what was collected.
commenters_collectedinteger | nullHow many commenter rows this post produced. null when collection was turned off.
commenters_availableintegerHow many the page said existed, so coverage is readable rather than inferred.
person_profile_urlstringOn engager rows, the commenter's public profile URL, and the dedupe key across posts.
engaged_atstring | nullComment timestamp. Null on roughly 30 percent of rows, see the callout below.
reactors_statusstringAlways unavailable_without_login. A permanent property of logged out LinkedIn.
degradedbooleanTrue when the row could not be produced normally.
degradation_reasonstring | nullWhy, in plain words.

โš ๏ธ false and null mean different things on every row. false is a measurement: the actor looked and the answer was no. null is the absence of one: the actor could not look. When something it needed fails, the row comes back with degraded: true, a plain-language degradation_reason, and every field it could not measure set to null rather than to a confident false or 0. Filter on degraded before you trust a negative.

Two things that look like failures are deliberately not degraded, because both are measurements. reactors_unavailable is a permanent property of logged-out LinkedIn, not a fault in your run. no_posts_found on a page that loaded means the page really lists no recent activity. Turning commenter collection off is the reverse case: commenters_collected comes back null rather than 0, because the actor did not look.

๐Ÿ’ฌ The commenter bonus, and its measured limits

Alongside each post you get one row per commenter LinkedIn renders publicly, with their name, profile URL, comment text and the likes on that comment.

Read this before you count on it:

  • You get about ten commenters per post, whatever the real total. LinkedIn renders roughly ten top-level comments to a logged-out visitor. On a post with 400 comments you get about ten.
  • Measured whole-run coverage was 178 commenters out of 4,857 that existed, which is 3.7%.
  • About 30% of comment rows carry no timestamp. In the same run engaged_at was null on 54 of 178 rows, so those rows cannot be filtered by recency. The exact timestamp only comes from the page's structured data, and it is copied across only when that entry is unambiguously the same comment. When it is not, the row keeps its identity and text and the timestamp stays null rather than being guessed.
  • No headline. LinkedIn does not render a commenter's headline to a logged-out visitor, so the field is declared and left null.

๐Ÿšง What this actor cannot do

What you get
๐Ÿ“ Postsโœ… Complete. Text, author, media, permalink, published time, and the true reaction and comment counts.
๐Ÿ’ฌ Commentersโš ๏ธ Around ten per post, 3.7% coverage measured, and roughly 30% of those rows have no timestamp.
๐Ÿ‘ ReactorsโŒ None. LinkedIn serves no reactor identities to a logged-out visitor. Every post row carries the real reaction_count, and reactors_status says unavailable_without_login.
๐Ÿชช Commenter headlineโŒ Not served. The field exists and stays null rather than being guessed at.

No row is ever an empty success. A blocked profile, a private page and a removed post each get their own status and a plain-English notice.

The trade is deliberate. Getting reactors means holding a LinkedIn session cookie or paying a vendor who holds one. This actor does neither, so nothing you own is ever at risk and there is no credential to hand over.

๐Ÿ› ๏ธ How to track what a company or executive publishes on LinkedIn

  1. Put your targets in profile_urls or company_urls. Person profiles look like https://www.linkedin.com/in/williamhgates, company pages like https://www.linkedin.com/company/microsoft. Country subdomains are fine.
  2. Set posted_since to the last time you ran it. Posts older than that are skipped before anything is charged, so a scheduled run that finds nothing new costs the actor start and nothing else.
  3. Decide whether you want commenters. collect_commenters is on by default. Turn it off to collect posts only and pay only the post event.
  4. Run it on a schedule and deduplicate downstream on post_id.

๐Ÿงช Using it in Clay

Add an Apify enrichment column and map your source column to profile_urls or company_urls.

The actor returns many rows for one input row, so use Write to Other Table to send post rows to a posts table filtered to row_type = post, and commenters to a people table filtered to row_type = engager. Clay caps a single actor run import at 5,000 records.

๐Ÿ”” Sending results somewhere else

You do not need this actor to do it, and it does not try. Apify has built-in run webhooks that cost nothing and need no code from us.

On this actor's page in Apify Console, open the Integrations tab and add a webhook on ACTOR.RUN.SUCCEEDED pointing at your endpoint. Apify posts a JSON body carrying eventType and a resource object with the run and dataset IDs, then your system reads the dataset. You configure it, you own it, and it works on any actor including this one.

๐Ÿ’ต How much does it cost to track LinkedIn posts?

Pay per event. You are charged for output, never for input.

EventFires whenPrice
post-collectedOnce per post row returned, after posted_since has filtered$0.0020
engager-collectedOnce per commenter row returned$0.0010
apify-actor-startOnce per run, per gigabyte of memory. Set by Apify, not by us$0.00005

Every event at every Apify tier, in dollars:

EventFREEBRONZESILVERGOLD
post-collected0.00200.00190.00180.0017
engager-collected0.00100.000950.00090.00085

๐Ÿ’ณ What you are billed for. posted_since filters before anything is charged, so a scheduled run that finds nothing new costs the actor start and nothing else. Commenter rows are billed separately from posts, so setting max_engagers_per_post to 0 gives you posts only at the post price. Turning collect_reactors on charges nothing extra, because it returns nothing: it exists in the schema so the limit is visible instead of silent.

๐Ÿ’ธ About max_engagers_per_post

This is your cost lever, and the default is set to the platform ceiling on purpose.

LinkedIn shows a logged-out visitor about ten comments per post, so ten is the most this actor can ever return. Setting the default to 10 means you are never charged for engager rows the page cannot produce, and raising it above 10 does nothing. Set it to 0 and you pay for posts only.

โŒจ๏ธ Input

Full options are on the Input tab. These are the ones worth explaining.

FieldTypeWhat it does
profile_urlsarrayPerson profiles, like https://www.linkedin.com/in/williamhgates. Country subdomains are fine.
company_urlsarrayCompany pages, like https://www.linkedin.com/company/microsoft.
posted_sincestringISO date. Posts older than this are skipped before anything is charged.
collect_commentersbooleanDefault on. Turn it off to collect posts only.
collect_reactorsbooleanDefault on, and it returns no reaction rows. It is in the schema so the limit is visible instead of silent.
max_engagers_per_postintegerDefault 10. See below.
use_residential_proxybooleanDefault off. Only needed if LinkedIn starts refusing the platform's datacenter addresses. Apify bills residential bandwidth on top of this actor's events.

๐Ÿ“ค Output

Exports to JSON, CSV, Excel, HTML or XML. One dataset, two entity types, told apart by row_type.

  • post is one row per LinkedIn post.
  • engager is one row per person who commented, joined to the post on post_id.
  • notice is a run-level or source-level message. Filter these out before loading a table.

Status values

ok, commenters_truncated, reactors_unavailable, source_unavailable, post_unavailable, no_posts_found, fetch_failed, no_input, free_tier_exhausted, free_tier_unmetered, sources_truncated, posts_truncated.

๐Ÿ’ก Tips

  • Set posted_since on every scheduled run. It is the difference between paying for what is new and paying for the same 50 posts every night.
  • Deduplicate on post_id, never on the permalink. The four character token at the end of a permalink changes between renders.
  • Read commenters_collected against commenters_available before you draw a conclusion from a comment thread. Roughly ten of four hundred is not a sample you can generalize from.
  • Set max_engagers_per_post to 0 if you only want the post feed. It is the cheapest useful shape.
  • Leave use_residential_proxy off until you actually see refusals. It adds Apify bandwidth cost on top of the events.

๐ŸŽ Free plan

Free Apify plans get 50 posts a month. Paid plans are uncapped. When the allowance runs out the run stops and says so on a row rather than returning a quietly short result.

โš ๏ธ Known limits

  • No reactors, about ten commenters per post, and no commenter headline. Covered above. These are the main ones.
  • Discovery sees a page's recent activity, not a full archive. A profile or company page advertises its latest posts, so posted_since filters what was found rather than reaching back through history.
  • Posts referenced without a permalink cannot be fetched. Embedded reshares appear on a page as a bare activity reference, and LinkedIn will not serve a post without its permalink token. The count is reported once per source.
  • No proxy by default. Turn on use_residential_proxy if datacenter addresses start being refused.
  • 200 sources per run and 50 posts per source. Both are hard caps. Neither is silent: hitting either emits a sources_truncated or posts_truncated row saying exactly how many were left out. LinkedIn lists newest first, so what a truncated source gives you is the most recent 50.
  • No result cache. Every run refetches every page, which is the right behavior for an actor whose job is to notice new posts, and it means a scheduled run costs the same whether or not anything changed. Use posted_since to keep the charge down: it filters before anything is billed.

โ“ FAQ

Do I need a LinkedIn account, a cookie or a session token? No. None of the three, ever. It reads the same public pages a logged out visitor sees.

Why do I only get about ten commenters on a post with hundreds? Because that is all LinkedIn renders to a logged out visitor. Measured coverage across a whole run was 178 of 4,857, which is 3.7%. commenters_collected and commenters_available are on every post row so you can read the coverage rather than guess it.

Can I get the people who reacted to a post? No, and neither can any other logged out tool. LinkedIn serves no reactor identities without a login. You do get the true reaction_count on every post.

Why is engaged_at null on some commenter rows? The exact timestamp only comes from the page's structured data, and it is copied across only when that entry is unambiguously the same comment. Roughly 30% of rows have no unambiguous match, and those keep their identity and text with a null timestamp rather than a guessed one.

Is post_id safe to use as a primary key? Yes. It is the numeric activity URN and it is stable across runs, country subdomains and both permalink spellings. The token at the end of a permalink is not.

Is this affiliated with LinkedIn? No. See the disclaimer in Support.

๐Ÿงฉ Want other GTM data?

Mamba Labs builds a fleet of GTM enrichment actors that share one flat, Clay-ready output convention, so their rows join on company_domain with no cleaning step:

๐Ÿ•ต๏ธ Agent Accessibility Auditor๐Ÿค– AI Tooling Detector
๐Ÿ“ก B2B Buying Signals Aggregator๐Ÿš€ Prospect Engine
๐Ÿ“ Publishing Frequency Trackerโฉ Sequencer Lead Push
๐Ÿ”„ Company Change-Event Feed๐Ÿงญ Company Discovery List Builder
๐Ÿข Company Firmographic Enricher๐Ÿชช Company Identity Resolver
๐ŸŒ Company Social Presence Mapper๐Ÿท๏ธ Contact Classifier
๐Ÿ“ฌ Domain Deliverability Checker๐Ÿ”— Domain to LinkedIn URL Resolver
โœ‰๏ธ Work Email Waterfall Finder๐ŸŽช Event Presence Index
๐Ÿ’ฐ Funding and Press Signal Scanner๐Ÿง‘โ€๐Ÿ’ผ GTM Hiring Signal Scraper
๐Ÿ“‹ Job Posting Monitor๐Ÿงฑ Tech Stack Detector
๐ŸŽฏ ICP Fit Scorer๐Ÿ”‘ Job Board Keyword Scanner
โš–๏ธ Legal Entity Resolver๐Ÿ’ผ LinkedIn Company Page Mapper
๐Ÿ“ธ Instagram and Facebook Brand Mapper๐Ÿ“ฎ Outbound Stack Detector
๐Ÿ“„ Page Finder and Extractor๐Ÿ‘ค People Finder and Email Verifier
๐Ÿ“Œ Pinterest Brand Presence Mapper๐Ÿ›๏ธ Government Contract Award Monitor
๐Ÿ“… Public Company Reporting Window Finder๐Ÿ‘ฅ Team Page People Extractor
๐ŸŽต TikTok Brand Presence Mapper๐Ÿ… Workplace Program Detector
โ–ถ๏ธ YouTube Channel Stats Extractor

Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything.

๐Ÿ› ๏ธ Need something custom built for you or your team? Tell us what you are trying to find and we will build it. Talk to Mamba Labs.

๐Ÿ†˜ Support

Questions, bugs and feature requests go in the Issues tab on the actor page.

โ„น๏ธ Sourcing and legal. Everything collected is served by LinkedIn to a logged out visitor with no account and no cookies. Nothing behind a login is read and no private field is inferred. This actor is unofficial and is not affiliated with, sponsored by, or endorsed by LinkedIn or Microsoft. Commenter rows are named people, carrying a display name, a public profile URL and the text of a comment they published in public. When you run this actor you are the data controller for that personal data and Apify is the processor. Your lawful basis for collecting and using it is yours to establish. We do not advise on it and nothing here is legal advice.

Built by Mamba Labs.