LinkedIn Company Posts Scraper
Pricing
from $1.05 / 1,000 posts
LinkedIn Company Posts Scraper
Scrape the latest posts from any LinkedIn company page, with no login. Just add company URLs, slugs or names and get each post's full text, date, reactions, comment count, author, media type, images and link, plus sample comments on request. Export to CSV or Excel. $1.50 per 1,000 posts.
Pricing
from $1.05 / 1,000 posts
Rating
0.0
(0)
Developer
BonCross API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What is LinkedIn Company Posts Scraper?
LinkedIn Company Posts Scraper pulls the posts off any LinkedIn company page, newest first, with the reaction and comment counts as numbers. Type the company's name, or paste its URL or slug. You get the post text, a link to each post, its media type, and a flag on anything the company reposted or quoted.
It was built for watching more than one company at a time, and the numbers show it: 670 companies at 10 posts each returned 6,262 posts in under five minutes on 2 October 2026.
Where it's stronger than you might expect:
- You can start from a name. "Monzo" is enough. The name is matched to LinkedIn's own company record and the log tells you what it matched.
- The company profile rides along free. Switch on "Include company details on every post" and each row gains industry, size, headquarters and follower count. It adds no charge.
- A date window makes a short run. Ask for the last week and paging stops once the feed drops past it. You pay for the posts inside the window only.
- Reposts are labelled. A plain repost and a quote post are told apart, each with the original post's link where LinkedIn gives one. You can keep or drop either kind.
- Companies with nothing to return are free. No public posts, or a feed that can't be read: you get a row saying so and no charge.
BonCross Verified means we tested this actor against the live site before release and kept the record:
- 18 of 18 live checks on its inputs and filters passed on 5 October 2026
- 7 companies run on 7 October 2026 by link, slug and name: 40 posts, 2 error rows
- Charges checked against the 40 posts; error rows were free
How to scrape LinkedIn company posts
- Open a free Apify account, then go to LinkedIn Company Posts Scraper.
- Enter the companies: names, URLs or slugs.
- Say how many posts you want from each (50 unless you change it) and, if you like, how far back to look.
- Press Start. One company's latest 10 posts took 5.7 to 12 seconds when we measured it.
- Download the posts as a spreadsheet, or as JSON, XML or HTML.
What data can you extract from company posts?
| 📝 Full post text | 🔗 Post permalink and activity id |
| 👍 Reaction count | 💬 Comment count |
| 📅 When it was posted | Media type: text, image, video, article or document |
| Image links | Repost and quote-post flags, with the original post's link |
| 🏢 Company name, slug and id | Author name and profile |
| Sample comments, optional | Company industry, size and followers, optional |
⬇️ Input
Start with the companies. Everything else has a default you can live with.
"Posts per company" caps each company and defaults to 50. Set it to 0 to take everything the feed will serve. "Maximum posts" caps the run across all companies, and its default of 0 means no cap. If your list lives in a file or a Google Sheet, load it through Start URLs.
Two companies, 50 posts each
{"companyUrls": ["https://www.linkedin.com/company/monzo"],"companyNames": ["Xelix"],"maxPostsPerCompany": 50}
The last month's posts, reposts left out, with comments
{"companyUrls": ["https://www.linkedin.com/company/microsoft"],"postedLimit": "month","includeReposts": false,"scrapeComments": true,"maxComments": 5}
| Field | Notes |
|---|---|
companyUrls | Full company URLs or bare slugs. Paste the slug exactly: a trailing dot is part of it. |
companyNames | Plain names, matched to LinkedIn's own company record rather than by guessing a URL from the name. The log says what each name matched. |
startUrls | The same as companyUrls, pasted or loaded in bulk from a file or a Google Sheet. |
maxPostsPerCompany | Newest first. Default 50; 0 takes everything the feed will serve. |
postedLimit, postedLimitDate | Only return posts newer than a window (1h, 24h, week, month, 3months, or any) or an explicit date such as 2026-08-01. Paging stops as soon as the feed drops past the window, so a narrow window is a short run. |
includeReposts | Posts the company reposted with no commentary added. On by default. |
includeQuotePosts | Posts where the company reshared something and added its own commentary. On by default. |
scrapeComments, maxComments | Also open each post and return the comments LinkedIn shows publicly (up to maxComments, default 10). One extra request per post, charged separately. |
maxItems | A ceiling on the whole run, across every company. |
includeCompanyDetails | Adds industry, size, headquarters, follower count and the rest of the company profile to every post. Costs no extra requests. |
delayMs, maxConcurrency | An optional extra pause before each request (default 0), and how many companies are read at once (default 8). |
For developers
- LinkedIn serves the feed 10 posts per request and the run pages through it. A larger
maxPostsPerCompanymeans more requests and a longer run, nothing else. postedLimitandpostedLimitDatestop the paging as soon as the feed drops past the window.scrapeCommentsopens each post once more for the comments LinkedIn shows publicly, up tomaxComments(default 10). Each post opened is billed aspost-comments.includeCompanyDetailsmakes no extra requests and has no event of its own.maxConcurrency(default 8, from 1 to 8) is how many companies are read at once.delayMs(default 0) adds a pause before each request.- Posts are written as they're read, so stopping a run early keeps what it had.
- In
companyUrls, a slug must be pasted exactly. A trailing dot is part of it.
⬆️ Output
Each post is one record.
{"activityUrn": "urn:li:activity:7508810949139578880","id": "7508810949139578880","url": "https://www.linkedin.com/posts/monzo_were-going-to-dedicate-this-post-to-our-activity-7508810949139578880-8VYX","text": "We’re going to dedicate this post to our lovely TechOps team. From the very first day when Monzonauts join, our TechOps team is there. They help us set up our l…","postedText": "1d Edited","postedAt": "2026-09-25","reactions": 320,"comments": 30,"authorName": "Monzo","authorUrl": "https://uk.linkedin.com/company/monzo","mediaType": "image","images": ["https://media.licdn.com/dms/image/v2/…/feedshare-image-high-res/…"],"companyUrl": "https://www.linkedin.com/company/monzo","companySlug": "monzo","companyName": "Monzo","companyId": "9471107","inputSource": "url","scrapedAt": "2026-09-26T06:56:59.665Z"}
Four things to know before you build on it:
postedAtis worked out from LinkedIn's relative wording ("1d", "2w"), which makes it approximate.postedTextis exactly what LinkedIn showed.- A repost has
isRepost: trueand a quote post hasisQuotePost: true, each withoriginalPostUrlandoriginalPostIdwhere the shared post is linked.urlalways points at the company's own post.isCanonicalUrl: truemarks a row whose link is LinkedIn's standard activity address, used when the card had no other permalink. - With comments switched on, each row adds
sampleComments(author, author profile, text, posted wording and reactions for each) andsampleCommentCount. - With company details switched on, each row adds
companyDescription,companyWebsite,companyIndustry,companySize,companyHeadquarters,companyAddressParts,companyType,companyFounded,companySpecialties,companyEmployeesCount,companySlogan,companyFollowers,companyLocationsandcompanyLogo.
A company whose feed can't be read, or which has no public posts, is a single row with an error field.
How much does it cost to scrape LinkedIn company posts?
| Event | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
actor-start, per run | $0.001 | $0.001 | $0.001 | $0.001 |
post-comments, per post opened for comments, only when scrapeComments is on | $0.001 | $0.0009 | $0.0008 | $0.0007 |
post, per post returned | $0.0015 | $0.00135 | $0.0012 | $0.00105 |
Enterprise plans pay the Business price.
$1.50 per 1,000 posts on the Free plan and $1.05 on Business. That figure is the full bill, proxy usage and platform usage included.
- Four companies at 50 posts each: $0.001 + 200 × $0.0015 = $0.301 ($0.21 on Business).
- The same run with comments on: $0.001 + 200 × $0.0015 + 200 × $0.001 = $0.501 ($0.35 on Business).
If you only want the counts, leave comments off. The comment count is on each post either way, and you save $0.001 a post.
On Apify's Free plan, the $5 of monthly credits pays for about 3,300 posts.
How far back, and how fast?
| Run | Result |
|---|---|
| One company, 10 posts | 10 posts in 5.7-12 seconds |
| 670 companies, 10 posts each | 6,262 posts in 4 minutes 16 seconds to 4 minutes 49 seconds (1,300-1,460 a minute) |
| One company, 10 posts with comments | 10 posts with their comments in 10-16 seconds |
Measured on Apify on 2 October 2026. At that pace an hour covers roughly 8,000 companies at 10 posts each, and each further 10 posts per company is one more request.
How far back a feed goes is LinkedIn's decision. The run keeps paging until LinkedIn stops returning new posts, then moves to the next company.
FAQ
Why are there fewer comments than the comment count says?
The count is the real total. LinkedIn shows a logged-out visitor roughly nine or ten comments from the thread, never all of it, and that sample is what you get.
What's the difference between a repost and a quote post?
A repost shares someone else's post with nothing added. A quote post shares it with the company's own commentary on top. "Include reposts" and "Include quote posts" are separate switches, both on by default.
How exact is the date window?
To within about a day. LinkedIn gives "3d" or "2w" where you'd want a date, so postedAt is derived and the window inherits that. A post whose date can't be read is kept, not dropped.
A company I know is active returned an error row. Why?
A company that has never posted returns an error row, and LinkedIn sometimes answers a repeated request the same way. Run that company again a few minutes later.
Do I need proxies or a LinkedIn login?
You need neither. The posts are read from pages LinkedIn shows to anyone who isn't signed in, and the proxy usage is part of the price.
How do I collect only new posts each day?
Schedule the run daily and set "Posted within" to 24h. For a weekly digest use week.
What are the limits?
- Comments are a public sample of roughly nine or ten per post, on request. The full thread isn't available.
- Timestamps are relative on LinkedIn, so dates are approximate.
- A count of zero is returned as 0, not left empty.
- Feed depth is set by LinkedIn.
Is scraping LinkedIn company posts legal?
Company posts are published for anyone to read, and this actor reads them without an account and collects no private data. Scraping public data is generally lawful in the UK, EU and US, with hiQ v LinkedIn the usual reference. How you use the results is on you, GDPR included where a row identifies a person, such as a comment author.
Monitoring, dashboards and code
A watched-company alert is the common setup: an Apify Schedule, a 24h window, and the Slack integration posting whatever came back. For reporting, send the dataset to Google Sheets or through Airbyte and chart reactions per post by media type.
To call it yourself, POST https://api.apify.com/v2/acts/boncross~linkedin-company-posts-scraper/run-sync-get-dataset-items with the input as JSON. That returns the posts directly on a short run. apify-client on NPM or PyPI handles the longer ones.
It's also available to AI agents through the Apify MCP server at mcp.apify.com. An agent can fetch a competitor's last month of posts and tell you what themes they're pushing.
More from BonCross
- LinkedIn Company Scraper: LinkedIn company pages by URL, slug or name, with no login.
- LinkedIn Jobs Scraper: LinkedIn jobs from keywords and locations or search URLs, no login needed.
- LinkedIn Post Scraper: Any public LinkedIn post by URL, with no login.
- Marriott Hotel Details Scraper: Everything a Marriott property publishes: address, coordinates, phones, brand, guest…
- Marriott Hotel Search Scraper: Every Marriott hotel for a destination and dates.
- Marriott Reviews Scraper: Guest reviews for any Marriott hotel.
Your feedback
If a post's link, date or counts don't match what you see on LinkedIn, send us the company and the post on the Issues tab in Apify Console. We check each one against the live page and reply in the thread.