LinkedIn Company Posts Scraper
Pricing
from $5.00 / 1,000 post scrapeds
LinkedIn Company Posts Scraper
Scrape public LinkedIn company posts by company URL or slug, with a posted-since date filter applied before billing. Each row has post text, URL, date, media and optional reactions and comments, plus company followers, industry, website and size. No cookies or login.
Pricing
from $5.00 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
6
Bookmarked
70
Total users
40
Monthly active users
3 days ago
Last modified
Categories
Share
What is LinkedIn Company Posts Scraper?
LinkedIn Company Posts Scraper collects public posts from LinkedIn company pages without cookies or a LinkedIn login. Paste company page URLs or bare slugs such as shopify, and the Actor saves one dataset row per post: post URL, text, published date, media, optional reaction and comment counts, and public company details such as followers, industry, employee count and website.
Use postedSince (for example "7 days" or an ISO date) to keep only fresh posts. Older posts are skipped and not charged, which makes scheduled competitor monitoring cheap and predictable.
| What you get | Fields |
|---|---|
| Post | postUrl, postId, text, datePublished, media |
Engagement (with enrichPosts) | reactionCount, likeCount, commentCount, engagementCount, authorName, commentsPreview |
Company (with includeCompanyProfile) | companyName, companyFollowers, companyEmployeeCount, companyIndustry, companyWebsite, companyFounded, companyLocation, companyLogo |
| Provenance | source, sourcePage, scrapedAt |
Best fit
- Competitor content monitoring: track what rival brands post every week.
- Account research: read a target account's recent announcements before outreach.
- Agency content audits: export a client's or prospect's recent company posts to a sheet.
- AI agents: one call returns clean, flat post rows for summarising or tagging.
This Actor reads company pages (/company/...). For a person's posts, use LinkedIn Profile Posts Scraper. For keyword search across all of LinkedIn, use LinkedIn Post Search Scraper.
Practical scenario
A growth marketer tracks five competitors. Every Monday a schedule runs the Actor with their five company slugs, postedSince: "7 days" and includeCompanyProfile: true. The run returns only last week's posts, so the bill matches new content, not the whole feed. She sorts by datePublished, scans text for launches and hiring news, and opens postUrl for the posts worth a closer look.
Input
| Field | Type | Default | Description |
|---|---|---|---|
companyUrls | array of strings | required | Company page URLs (https://www.linkedin.com/company/shopify) or slugs (shopify). Duplicates are removed. |
maxPosts | integer | 100 | Total post rows saved and charged across all companies (1–1000). |
postedSince | string | empty | Keep only posts newer than an ISO date (YYYY-MM-DD) or a window (24 hours, 7 days, 2 weeks, 1 month). |
maxPagesPerCompany | integer | 1 | Feed pages to read per company (1–7). Each page holds a small batch of recent posts. |
startPage | integer | 1 | First feed page to read. Page 1 is the newest. |
includeCompanyProfile | boolean | true | Adds public company details to every row. |
enrichPosts | boolean | false | Adds reaction and comment counts, author fields and a comments preview. One extra lookup per post. |
{"companyUrls": ["https://www.linkedin.com/company/shopify", "hubspot"],"maxPosts": 50,"postedSince": "7 days","maxPagesPerCompany": 3,"includeCompanyProfile": true,"enrichPosts": false}
Output
One dataset row per public post. Sample row (company description and post text shortened):
{"companyUrl": "https://www.linkedin.com/company/shopify","companyId": "784652","companyName": "Shopify","companyHandle": "shopify","companyFollowers": 1114601,"companyEmployeeCount": 30334,"companyWebsite": "https://www.shopify.com","companyIndustry": "Software Development","companyType": "Public Company","companyFounded": 2006,"companyLocation": "Ottawa, ON, CA","postId": "7514433004245684225","postUrl": "https://www.linkedin.com/posts/shopify_run-your-shopify-store-from-gemini-add-activity-7514433004245684225-KMdB","text": "Run your Shopify store from Gemini.\n\nAdd products, check orders, and pull reports right in the chat.","datePublished": "2026-10-09T21:13:59.625Z","source": "primary","sourcePage": 1,"scrapedAt": "2026-10-12T06:18:31.262Z"}
Each row carries only the fields LinkedIn shows for that post, so every value is real. Reaction and comment counts appear when enrichPosts is on.
Each run also writes OUTPUT and RUN_SUMMARY to the default key-value store with an outcome:
| Outcome | Meaning |
|---|---|
COMPLETE | Posts saved for every company page. |
PARTIAL | Some posts saved; some company pages could not be loaded, or the run stopped before its timeout. |
VALID_EMPTY | The pages answered but had no posts (or none newer than postedSince). No result-event charge; startup billing still applies. |
INVALID_INPUT | No usable company URL or slug, or an unreadable postedSince. No result-event charge; startup billing still applies. |
UPSTREAM_FAILED | The post source was unavailable for every company page. Retry the same input later. |
Pricing
Startup billing and empty runs
The apify-actor-start event costs $0.00005 per startup unit. Apify charges one startup unit per GB of allocated memory, with a minimum of one unit, so a 2 GB run incurs two units. This startup charge still applies when input is invalid, no results are found, or an upstream request fails. Statements about free, unbilled, or skipped results refer only to the corresponding result event; they do not waive the startup charge. Apify platform usage is included in the event prices and is not passed through as an additional customer charge. Check the live Pricing tab for current events, tiers, and rates. Result limits cap result events, not the entire run cost.
Pay per event, with Apify platform usage included. You pay the post-scraped event once for each post saved to the dataset, plus the small apify-actor-start event. Posts skipped by postedSince, duplicates and empty runs do not incur post-result charges. maxPosts is a hard cap on post-scraped events. See the Pricing tab for current event prices.
Use with AI agents (MCP)
Actor identity: khadinakbar/linkedin-company-posts-scraper.
Get the LinkedIn posts that Stripe and Notion published in the last 14 days, with company follower counts, and summarise the main announcements.
{ "companyUrls": ["stripe", "notionhq"], "postedSince": "14 days", "maxPagesPerCompany": 3, "maxPosts": 60 }
How to read the result: postUrl is the link for each post, datePublished orders them, text holds the content, and companyName groups rows. Check OUTPUT.outcome first: VALID_EMPTY means the pages had no matching posts in your window.
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/linkedin-company-posts-scraper').call({companyUrls: ['https://www.linkedin.com/company/shopify'],postedSince: '7 days',maxPosts: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems({ clean: true });console.log(items.map((p) => [p.datePublished, p.postUrl]));
Best results
- Start with
maxPagesPerCompany: 1to see how many posts a company publishes per page, then raise it (up to 7) for a longer history. - Combine
postedSincewith a weekly schedule to pay only for new posts. - Keep
enrichPostsoff for plain content exports; turn it on when you need reaction and comment counts. - When
OUTPUT.outcomeisUPSTREAM_FAILED, retry the same input later.
Builder's note
I built this for buyers who want "what did these companies say recently" rather than the whole archive. I designed the date filter to run before billing and paging to stop as soon as a whole page is older than your cutoff: you only pay for posts inside your window.
Continue the workflow
- Before monitoring, search for more companies to track with LinkedIn Company Search Scraper.
- Then enrich your company list with full firmographics using LinkedIn Company Profile Scraper.
- After you find a strong post, pass its URL to LinkedIn Post Comments & Engagements Scraper to turn commenters into leads.
FAQ
Do I need a LinkedIn account or cookies?
No. The Actor reads public company page data only.
How many posts can I get per company?
Up to 7 feed pages per company. The number of posts per page depends on the company; set maxPagesPerCompany to 7 for the longest history available.
Why are reaction counts missing?
The feed listing gives text and dates. Turn on enrichPosts to add reaction and comment counts per post.
Can I pass a company name instead of a URL?
Pass the company slug from its LinkedIn URL, for example notionhq from linkedin.com/company/notionhq.
Responsible use
This Actor collects publicly available company posts. Use the data in line with LinkedIn's terms, privacy law and your own data policies. This Actor is not affiliated with or endorsed by LinkedIn.