LinkedIn Company Posts Scraper avatar

LinkedIn Company Posts Scraper

Pricing

from $5.00 / 1,000 post scrapeds

Go to Apify Store
LinkedIn Company Posts Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

6

Bookmarked

70

Total users

40

Monthly active users

3 days ago

Last modified

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 getFields
PostpostUrl, postId, text, datePublished, media
Engagement (with enrichPosts)reactionCount, likeCount, commentCount, engagementCount, authorName, commentsPreview
Company (with includeCompanyProfile)companyName, companyFollowers, companyEmployeeCount, companyIndustry, companyWebsite, companyFounded, companyLocation, companyLogo
Provenancesource, 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

FieldTypeDefaultDescription
companyUrlsarray of stringsrequiredCompany page URLs (https://www.linkedin.com/company/shopify) or slugs (shopify). Duplicates are removed.
maxPostsinteger100Total post rows saved and charged across all companies (1–1000).
postedSincestringemptyKeep only posts newer than an ISO date (YYYY-MM-DD) or a window (24 hours, 7 days, 2 weeks, 1 month).
maxPagesPerCompanyinteger1Feed pages to read per company (1–7). Each page holds a small batch of recent posts.
startPageinteger1First feed page to read. Page 1 is the newest.
includeCompanyProfilebooleantrueAdds public company details to every row.
enrichPostsbooleanfalseAdds 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:

OutcomeMeaning
COMPLETEPosts saved for every company page.
PARTIALSome posts saved; some company pages could not be loaded, or the run stopped before its timeout.
VALID_EMPTYThe pages answered but had no posts (or none newer than postedSince). No result-event charge; startup billing still applies.
INVALID_INPUTNo usable company URL or slug, or an unreadable postedSince. No result-event charge; startup billing still applies.
UPSTREAM_FAILEDThe 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: 1 to see how many posts a company publishes per page, then raise it (up to 7) for a longer history.
  • Combine postedSince with a weekly schedule to pay only for new posts.
  • Keep enrichPosts off for plain content exports; turn it on when you need reaction and comment counts.
  • When OUTPUT.outcome is UPSTREAM_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

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.