LinkedIn Company Posts Scraper avatar

LinkedIn Company Posts Scraper

Pricing

from $1.12 / 1,000 posts

Go to Apify Store
LinkedIn Company Posts Scraper

LinkedIn Company Posts Scraper

Scrape the latest posts of LinkedIn company pages, no login or cookies: post text, date, likes, comments, images and link, with the company's follower count. Filter by date and likes, or get only new posts on a schedule. Export data, run via API or plug into AI workflows.

Pricing

from $1.12 / 1,000 posts

Rating

5.0

(1)

Developer

BlueskyScraper

BlueskyScraper

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

3 days ago

Last modified

Share

LinkedIn Company Posts Scraper collects the latest posts of LinkedIn company pages, without a login, cookies or an API key: post text, publish date, likes and reactions, comments count, images, video, documents, link cards, mentions and hashtags, reposts, the post's activity id, and the company's name, tagline and follower count. Filter by date and likes, or put it on a schedule with Only posts not delivered before to get every new post once. $1.6 per 1,000 posts.

What is LinkedIn Company Posts Scraper?

A LinkedIn company posts scraper and page-posts API for competitor monitoring, social listening, content research and AI pipelines. Paste company page URLs or slugs (hubspot, stripe) and get one row per post in a table you can export to Excel, CSV or JSON. No official LinkedIn API access is needed and your own LinkedIn account is never used.

What data can LinkedIn Company Posts Scraper extract?

FieldExample
sourceNameStripe
publishedAt2026-09-30T16:10:57.761Z
textWe're welcoming Parafin to Stripe. Together, we'll expand revenue opportunities…
likes926
comments31
images / imageUrlimage links of the post
postUrlhttps://www.linkedin.com/posts/stripe_…
activityId7511095253190246400 — a stable key to dedupe on
commentsCount / reactionsCount / topReactionTypes31 / 926 / LIKE, PRAISE, EMPATHY
videoUrl / videoThumbnailthe post video (MP4) and its cover
documentTitle / documentUrl / documentPageCountan attached document or carousel
articleTitle / articleUrl / articleSubtitlethe shared link card
hashtags / mentions / linkshashtags; tagged people and companies (name, URL, type); other links
authorHeadline / authorImageUrlthe author's headline (people) and photo or logo
isRepost / repostedAt / repostedBy / originalActivityIdreposts of other people's posts (switch off with 🔁 Include reposts)
quotedPostthe post a quote-share comments on: author, text
topCommentsthe top ~8–10 comments shown to logged-out visitors: author, text, date, likes, link (with 💬 Add top comments or for single post URLs)
sourceHeadlineHelp increase the GDP of the internet.
sourceFollowers1746338
postType, authorName, authorUrl, sourceUrl, sourceType, shareUrn, scrapedAt—

Every post row has every field (null or [] when the card does not show it). Since 5 October 2026 posts are read from the visible post cards as well as the page's search-engine data — that is what finds posts like most of Microsoft's (its search-engine data lists 1 post, its feed 7) and fills video, documents and mentions. A page with fewer posts than Maximum posts per page adds one free notice row saying how many LinkedIn showed.

Measured on 20 company pages (3 October 2026): 138 posts, a median of 9 per company (18 of 20 pages showed posts, the most was 10); comments was filled on 128 of 138 posts.

💰 How much does it cost to scrape LinkedIn company posts?

RowPrice
Post$0.0016 — $1.6 per 1,000

No start fee, proxies included. Posts removed by your date or likes filter, posts already delivered (with Only posts not delivered before) and pages that do not exist are free. Apify's free plan ($5 of monthly credit) covers about 3,000 posts a month — roughly 300 company pages. Paid Apify plans get tiered discounts automatically.

How to scrape posts from LinkedIn company pages

  1. Click Try for free.
  2. Paste company URLs or slugs into 🏢 LinkedIn companies, or link a Google Sheet / CSV in 📄 URLs from a file or sheet.
  3. Optional: 📅 Only posts published after, 👍 Minimum likes, 🔔 Only posts not delivered before.
  4. Click Start, or save it as a task and schedule it daily.

⬇️ Input

{
"companyUrls": [
"https://www.linkedin.com/company/hubspot",
"https://www.linkedin.com/company/stripe",
"canva"
],
"postedAfter": "2026-09-01",
"minLikes": 0,
"includeReposts": true,
"onlyNewPosts": false
}

⬆️ Output

{
"type": "post",
"postType": "post",
"sourceName": "Stripe",
"sourceType": "company",
"publishedAt": "2026-09-30T16:10:57.761Z",
"text": "We’re welcoming Parafin to Stripe. Together, we’ll expand revenue opportunities for platforms and help small businesses grow.",
"likes": 926,
"comments": 31,
"commentsCount": 31,
"reactionsCount": 926,
"topReactionTypes": ["LIKE", "PRAISE", "EMPATHY"],
"imageUrl": "https://media.licdn.com/dms/image/v2/D5622AQHJLzspyYQChQ/feedshare-shrink_1280/…",
"images": ["https://media.licdn.com/dms/image/v2/D5622AQHJLzspyYQChQ/feedshare-shrink_1280/…"],
"videoUrl": null,
"mentions": [{ "name": "Parafin", "linkedinUrl": "https://www.linkedin.com/company/buildparafin", "type": "company" }],
"links": ["https://lnkd.in/gkndBiWh"],
"hashtags": [],
"isRepost": false,
"quotedPost": null,
"postUrl": "https://www.linkedin.com/posts/stripe_were-welcoming-parafin-to-stripe-together-activity-7511095253190246400-rDs4",
"activityId": "7511095253190246400",
"sourceFollowers": 1746338
}

One row per post, newest first within each company.

What LinkedIn shows without a login

A logged-out visitor sees the posts in a company's "Updates" feed — about 7–10 — and there is no paging back to older posts without an account, so this is not a full post history. To build one from today on, schedule the Actor daily with 🔔 Only posts not delivered before: each run returns only posts it has not delivered to your account before, and repeats are free. A company that has not posted shows no posts; a slug that does not exist is a free error row. Reposts of other people's posts come as rows with isRepost: true; switch 🔁 Include reposts off to keep only the company's own posts. Posts a company targets to one country or language are not shown to logged-out visitors. When a page gives fewer posts than you asked for, a free notice row says how many LinkedIn showed.

Use cases for LinkedIn company posts

Competitor monitoring

A daily feed of what competitors announce — launches, hires, partnerships — into Slack or a sheet.

Content research

Which topics and formats get the most likes and comments in your industry.

Brand and PR tracking

Collect every post of your own and partner pages with engagement over time.

AI summaries

Send new posts to an LLM for a weekly digest through the API, Make, n8n or the MCP server.

Single posts and their top comments

Paste links to single posts — https://www.linkedin.com/posts/… or https://www.linkedin.com/feed/update/urn:li:activity:… — into 💬 Single post URLs. Each gives one post row (billed as one post) with every post field plus topComments: the top ~8–10 comments a logged-out visitor sees, not all (a post with 129 comments shows 8), with author, text, date and likes. Measured on 12 posts (5 October 2026): 8–10 comments on every post, each with author URL, date and likes.

{
"postUrls": ["https://www.linkedin.com/posts/satyanadella_at-linkedin-every-day-we-talk-to-recruiters-activity-7510854041028108288-1zhY"],
"includeComments": true
}

includeComments adds the same top comments to posts found on the pages you list (off by default: topComments is then null).

Integrations and API

Use LinkedIn Company Posts Scraper like any Apify Actor:

  • API: start a run and read the dataset over HTTP — see the API tab for ready-made calls.
  • Python:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("blueskyscraper/linkedin-company-posts-scraper").call(run_input={"companyUrls": ["https://www.linkedin.com/company/hubspot", "https://www.linkedin.com/company/stripe", "https://www.linkedin.com/company/canva"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)
  • JavaScript:
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('blueskyscraper/linkedin-company-posts-scraper').call({"companyUrls": ["https://www.linkedin.com/company/hubspot", "https://www.linkedin.com/company/stripe", "https://www.linkedin.com/company/canva"]});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
  • No-code: Make, Zapier, n8n, Google Sheets, Airtable, Slack and webhooks through Apify integrations — send every finished run's rows wherever your team works.
  • AI agents (MCP): add the Actor to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server (https://mcp.apify.com) and ask for LinkedIn data in plain words.
  • Schedules: run it every day or week from the Schedules page; combine with Maximum results per run to cap the bill.

❓ FAQ

The Actor reads only pages that LinkedIn shows to anyone without an account. Scraping public data is generally lawful, but names, job titles and e-mails are personal data under laws such as the GDPR and CCPA: have a lawful reason to process them, keep them safe, and honour opt-outs. When in doubt, ask a lawyer.

Do I need a LinkedIn account, cookies or a proxy?

No. Nothing to log in to, no cookies to paste, no proxy to set up — your own LinkedIn account is never touched, so it cannot be restricted. Proxies are included in the price.

Can I use it with the Apify API?

Yes — every run can be started and read over the Apify API, from Python, JavaScript or any HTTP client. See Integrations and API above.

Can I use it through an MCP server?

Yes. Add it to the Apify MCP server (https://mcp.apify.com) and your AI assistant can call it directly.

Can I integrate it with other apps?

Yes: Make, Zapier, n8n, Google Sheets, Airtable, Slack and webhooks through Apify integrations.

Why did some pages come back as error rows?

Either the page does not exist (404), or LinkedIn hides it from logged-out visitors. Both are free — you pay only for rows with data. The error field says which.

Do I pay for errors, filtered-out posts or the start of a run?

No. There is no start fee; error rows and posts removed by your filters are never billed. Maximum results per run and Apify's Max cost per run are hard ceilings — when the cost limit is reached, the run stops by itself with everything written already paid for.

Can I get posts of a person, not a company?

Yes — a person's profile URL in the same field works too, or use LinkedIn Profile Posts Scraper.

Can I get the comments' text?

Yes — the top ~8–10 comments a logged-out visitor sees, in topComments (author name, profile URL, photo, text, images, date, likes, comment link). LinkedIn does not show logged-out visitors all comments of a post, nor replies: commentsCount gives the full number, topComments only what is visible. Paste post links into 💬 Single post URLs (comments always included), or switch on 💬 Add top comments to posts from pages to add them to the posts found on pages — one extra page request per post, so the run is slower; no extra charge. Per-type reaction counts and repost counts need a login.

Your feedback

Something missing or wrong? Open an issue on the Issues tab — we read every one.

You might also like

ActorWhat it does
LinkedIn ScraperProfiles, work e-mails, company pages and latest posts in one Actor
LinkedIn Profile Details ScraperFull public profiles from a list of profile URLs
LinkedIn Profile Email FinderWork e-mail for each profile, with layout evidence and confidence
LinkedIn Company Details ScraperCompany pages: website, industry, size, followers, address
LinkedIn Profile Posts ScraperLatest posts and articles of people