LinkedIn Company Posts Scraper (Public Company Feed)
Pricing
from $1.50 / 1,000 posts
LinkedIn Company Posts Scraper (Public Company Feed)
Scrape the recent posts on public LinkedIn company pages without login: post text, posted time, reactions, comments, media, external links and post URL. Company feed only, no people profiles or commenters.
Pricing
from $1.50 / 1,000 posts
Rating
0.0
(0)
Developer
Murat Uzun
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What is LinkedIn Company Posts Scraper?
LinkedIn Company Posts Scraper reads the recent posts shown on public LinkedIn company pages, by URL or slug, and returns one row per post: text, posted time, reactions, comments, media URLs, outbound links and the post URL. It runs without a LinkedIn login and reads only the public company page (the guest view). It does not read people profiles, commenter or reactor lists, or email addresses.
What data does LinkedIn Company Posts Scraper extract?
| Field | Type | Source on the public page |
|---|---|---|
companyName | string | Company title |
postUrl | string | Post link (linkedin.com/posts/...), else the feed/update link built from the post id |
postId | string | Activity id in the card (urn:li:activity:...) |
postedAt | string (ISO) | Derived from the activity id (id shifted right 22 bits = epoch ms). Not printed on the page; checked against the relative time below |
postedAgo | string | Relative time on the card, e.g. 4h, 1d, 2w (the "Edited" marker is removed) |
authorName, authorType | string | Name and company on a company-authored post (the author link is not returned) |
text | string | Post text as shown in the card (LinkedIn may cut long posts at "see more") |
reactions, comments | number | Reaction and comment counts on the card |
hasVideo | boolean | A native video is on the card (the video URL is not returned) |
mediaCount, mediaUrls | number, array | Image URLs in the post (profile photos excluded) |
externalLinks | array | Outbound links in the post text or article card (LinkedIn redirects unwrapped, trk tracking parameter removed). lnkd.in short links are kept as LinkedIn gives them |
slug, url, source, scrapedAt | string | Company identity, source tag and UTC scrape time |
Fields the page does not show come back as null or []. They are never guessed.
Scope limits (stated plainly):
- The public company page shows about the 10 most recent posts. The scraper cannot read older posts without a login, so it returns at most that many per company per run.
- Posts written by a person (for example a CEO post shown on the company page) are skipped and counted in the run log as
personalSkipped. The actor returns company-authored posts only. On the Microsoft page on 2026-10-23, 2 of 10 items were company-authored and 8 were person-authored. postedAtis derived from the id, not shown by LinkedIn. It matched the relative time on every checked row (for example4hand1wcards), but this is a check on a sample, not a guarantee.- Reactions and comments are the counts shown at scrape time, not final values.
How to use LinkedIn Company Posts Scraper
- Open the actor in Apify Console and paste company URLs or slugs into Companies, for example
https://www.linkedin.com/company/openaioropenai. - Separate several companies with new lines or
;. Up to 100 companies per run. - Leave Proxy mode on
auto. The run uses direct requests and switches to the Residential proxy only if LinkedIn blocks them. - Start the run and download the dataset as JSON, CSV or Excel.
- Set a max total charge if you want a cap. The run stops before it exceeds the cap; one charged item is one post.
Example input
{"companies": ["openai", "https://www.linkedin.com/company/vercel"],"proxyMode": "auto"}
Example output
One row from a real cloud run (run Puqe9Beq9Jox1YgvL, 2026-10-23, Apify datacenter, direct, no proxy). The text is shortened here:
{"slug": "openai","companyName": "OpenAI","postUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7518671289675603968/","postedAt": "2026-10-21T13:55:25.616Z","postedAgo": "1d","authorName": "OpenAI","authorType": "company","text": "OpenAI models are coming to Google Cloud. We're partnering with Google Cloud to bring OpenAI's frontier models and Codex agentic workflows i…","reactions": 3375,"comments": 171,"hasVideo": false,"mediaCount": 1,"externalLinks": ["https://lnkd.in/etZTxJrq"]}
Test results
- Cloud run
Puqe9Beq9Jox1YgvL(2 inputs:openai,vercel): status SUCCEEDED, 20 rows, 0 problems, 0 person-authored items skipped. - Default input (demo
microsoft), smoke test on 2026-10-23: SUCCEEDED, 2 items (the other 8 items on that page are person-authored and skipped). - Unit tests (
npm test) run on the saved guest-page HTML ofmicrosoft,openaiandvercel, fetched 2026-10-23 with the same URLs the actor uses.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
companies | array | ["microsoft"] | Company URLs or slugs. Other input is skipped and reported in the log. |
proxyMode | string | auto | auto, never (direct only) or always (Residential from the start). |
Pricing
Pay per post: one charged event per post written to the dataset. The actor also pays a small per-run start event.
| Plan | Price per post (USD) |
|---|---|
| FREE, BRONZE | 0.0020, 0.0018 |
| SILVER | 0.0016 |
| GOLD, PLATINUM, DIAMOND | 0.0015 |
The platform stored the GOLD, PLATINUM and DIAMOND tiers at 0.0015 (the requested 0.0014 and 0.0013 were not kept; checked in the monetization response, not in the Console).
Cost side: direct runs of 2 companies took a few seconds at 512 MB. Compute cost per run was not measured (no billing read on the run). The estimate from run duration is far below the lowest tier price, so the margin is well above 70 percent for direct runs. Residential proxy use (in auto after blocks) would add cost and is not measured here.
FAQ
Does it need a LinkedIn account? No. It reads only the public guest page.
Why do I get fewer than 10 posts for a company? The public page shows at most about 10 posts, and person-authored posts are skipped. Check the run log for personalSkipped.
Can it read comments or who reacted? No. Commenter and reactor lists and people profiles are out of scope.