LinkedIn Company Posts Scraper (No Cookies)
Pricing
from $0.01 / 1,000 results
LinkedIn Company Posts Scraper (No Cookies)
Get the latest public posts of any LinkedIn company, newest first, from a company link or name. Each post has text, exact date, author, reactions, comments, top comments, images, video and links as clean JSON. Date filter, live results, no login needed.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
Insights Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Security
Limited permissionsShare
📰 What is LinkedIn Company Posts Scraper (No Cookies)?
LinkedIn Company Posts Scraper (No Cookies) helps you track competitor posts and follow any brand on LinkedIn by collecting the recent publicly discoverable posts of a company page, with the text, exact date, reactions, comment count, public comments and media of each post. It is built for marketing, social media, research and recruiting teams who need LinkedIn competitor analysis and LinkedIn brand monitoring without logging in or sharing cookies. Paste a company link or name and click Start; you can try it with the $5 monthly credit of the Apify Free plan.
This LinkedIn company post scraper also reads single posts from a post link or post ID, so you can mix companies and posts in one run. Each post is saved to your results as soon as it is read, newest first for every company. Very new posts may be missing; paste their links to read them directly.
- 🔭 Track competitor posts: see what rival companies publish, how often they post, and which posts get the most reactions and comments.
- 📊 Measure LinkedIn post engagement: compare reaction counts, comment counts and total engagement per post, post type and company.
- 📣 Run LinkedIn brand monitoring: keep a dated record of your own or a client's company posts and the public comments under them.
- 👂 Do LinkedIn social listening: read what people write in the public comments under company posts.
- 🤝 Research LinkedIn employer branding: follow the hiring, culture and event posts of the employers you compete with for talent.
- 🧭 Support LinkedIn market research and content strategy: collect announcements, launches, hashtags and shared links across a market, then plan your own LinkedIn content strategy from what works.
What can LinkedIn Company Posts Scraper do?
- 🎯 Read posts from four kinds of input: a company page link, a company name, a post link or a 19-digit post ID, one per line
- 📅 Filter by date: keep only posts from the last 24 hours, week, month, 90 days or year, or posts on or after an exact date
- 💬 Collect public comments: text, commenter name when it is public, likes and time, at no extra charge
- 🖼️ Get media: image links, the direct video file link with duration, thumbnail and size, and shared-article cards
- 🗂️ Get four extra tables: authors, comments, links and tags, and media, plus a run summary
- 📦 Export and automate: download JSON, CSV, Excel, XML or HTML, run it through the API, schedule it, or connect it to Google Sheets, Slack, Make, Zapier or n8n
Unlike a general LinkedIn posts scraper that searches by keyword, this Actor starts from the company pages you choose, so every row belongs to a company you want to follow.
📋 LinkedIn Company Posts Scraper data: what you can extract
Every post becomes one row in the main All posts table. As a LinkedIn post data scraper, it returns these fields (names as in the dataset):
| Field group | Fields |
|---|---|
| 🆔 Post identity | type (text, image, video or article), id, urn (LinkedIn's full ID string for the post, urn:li:activity:<id>), linkedinUrl |
| 📝 Text | content (full post text) |
| 🏷️ Tags | hashtags, mentions |
| 🔗 Links | links (short links replaced by their destination when readable), linksRaw (the original short links) |
| 🏢 Author company | author.name, author.publicIdentifier, author.linkedinUrl, author.type, author.avatar (logo) |
| 📅 Date | postedAt.timestamp (epoch milliseconds: the time as a number of milliseconds since 1 January 1970, handy for sorting), postedAt.date (ISO date and time) |
| 👍 Engagement | engagement.reactions, engagement.comments, engagement.totalEngagement (reactions + comments), engagement.shares, engagement.impressions |
| 💬 Comments | comments with text, authorName, likes, date |
| 🖼️ Media | media.type, media.images, media.video (url, duration in seconds, thumbnail, width, height), media.article (title, image), media.document |
| 🕒 Run info | scrapedFrom (discovered = found from a company, direct = a post link you pasted), scrapedAt (UTC) |
This LinkedIn post data gives you the content and the counts in one place. The tool also works as a LinkedIn post comments scraper and a LinkedIn post engagement scraper for the companies you choose.
Note:
engagement.sharesandengagement.impressionsare alwaysnull, because LinkedIn shows them only to logged-in viewers.media.documentis alwaysnull.linksRawappears only when a post has short links.postedAt.date,postedAt.timestampandauthorNamecan benullwhen LinkedIn doesn't show them publicly for a post.
What data can't LinkedIn Company Posts Scraper extract?
- Share counts, impressions or views
- The reaction breakdown by type and the list of people who reacted
- Replies to comments, and comments beyond the ones LinkedIn shows to logged-out visitors
- Members-only, private or deleted posts
- Follower counts and other company page details (you get the company name, page name, link and logo)
- Posts of employees' personal profiles
For posts found by keyword, author or company, use LinkedIn Post Search Scraper (No Cookies). For the people who work at a company, use LinkedIn Company Employees Scraper.
🚀 How to scrape LinkedIn posts from a company page
LinkedIn Company Posts Scraper is designed for an easy start, even if you've never extracted data from the web before. You can scrape LinkedIn posts from several companies in one run.
- Create a free Apify account using your email.
- Open LinkedIn Company Posts Scraper (No Cookies).
- Add one company link per line in Company links or post links. To get a valid link, open the company's page on LinkedIn and copy the address from your browser: it looks like
https://www.linkedin.com/company/stripe. You can also paste post links. - Click Start and watch the posts appear in the Output tab while the run is going.
- Download your data from Storage → Datasets → Export in JSON, CSV, Excel, XML or HTML.
💡 First run checklist
- Keep the prefilled company (
https://www.linkedin.com/company/stripe) or paste your own company link.- Leave Max posts per company at 10. On the Free plan, 10 posts cost at most $0.0401 (each post is $0.004 plus a $0.00001 row fee), plus a $0.00005 start fee per run and platform usage. A small test run like this shows the full cost on the run page.
- Optional: set a maximum charge limit in the run options below the input form.
- Click Start, then open the Output tab.
💲 How much does it cost to scrape LinkedIn company posts?
LinkedIn Company Posts Scraper uses pay-per-event pricing, which means you pay for the events of a run (here: saved posts and the start) instead of a monthly rental. Your bill has three parts:
- Results: you pay for each post saved to the main All posts table. The price depends on your Apify plan (table below). Each saved post also has a flat row fee of $0.00001 (a small fee for storing the row in the main results table), the same on every plan ($0.01 per 1,000 posts).
- Start fee: $0.00005 per run (the Actor runs with 1 GB of memory by default).
- Platform usage: the compute and traffic the run uses, billed at your Apify plan's own rates.
| 💲 Apify plan | Price per post | Price per 1,000 posts | With the $0.00001 row fee, per 1,000 posts |
|---|---|---|---|
| 💲 Free | $0.004 | $4.00 | $4.01 |
| 💲 Starter | $0.0035 | $3.50 | $3.51 |
| 💲 Scale | $0.0032 | $3.20 | $3.21 |
| 💲 Business and higher | $0.0028 | $2.80 | $2.81 |
The plan discount applies to the result price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.
Example: the default input (one company, 10 posts) costs 10 × $0.004 = $0.04 in post charges on the Free plan, plus $0.0001 in row fees, the $0.00005 start fee and platform usage. A weekly check of 5 competitors with 10 posts each saves at most 50 posts: 50 × $0.00401 = $0.2005 per run on the Free plan, plus the start fee and platform usage. 1,000 posts cost $4.01 on the Free plan ($2.81 on Business), plus the start fee and platform usage. Platform usage depends on the run, so the best way to know your full cost is a small test run: the run page shows the exact cost when it finishes.
What is not billed: posts that could not be read, posts outside your date filter, the comments, the rows in the four extra tables, and the run summary.
See the pricing tab for the current prices.
Is scraping LinkedIn company posts free?
You can start for free. The Apify Free plan gives you $5 in monthly credit, which pays for result charges and platform usage. Free-plan runs work the same as paid runs: there is no extra cap on posts per run.
How do I cap the cost of a run?
Set a maximum charge limit in the run options below the input form before you click Start (through the API, the same limit is the maxTotalChargeUsd parameter). It caps the post and row charges of that run; platform usage comes on top. When the limit is reached, the Actor stops and keeps every post it already saved.
⬇️ LinkedIn Company Posts Scraper input
The only required field is Company links or post links. Everything else is optional and has a default.
Settings most people change
- Company links or post links (
urls): one entry per line. A company page link (https://www.linkedin.com/company/stripe) or its page name (stripe, the last part of the link) returns that company's recent publicly discoverable posts. A post link or a post ID returns that single post. Duplicates are removed. - Max posts per company (
maxPosts): the maximum posts for each company, newest first. The default is 10.0means all publicly discoverable posts. It does not limit post links you paste. - Posted within (
postedLimit): the form shows Any time, Last 24 hours, Last week, Last month, Last 90 days and Last year (API valuesany,24h,week,month,90d,year). The default is Any time. - Posted on or after (
postedLimitDate): an exact date inYYYY-MM-DDformat. It takes priority over Posted within. - Collect comments (
scrapeComments) and Max comments per post (maxComments): comments are on by default, with up to 5 per post. You can raise it to 100, but only the comments LinkedIn shows publicly can be saved.
Here's an example that reads the 10 newest posts of Stripe with up to 5 comments each:
{"urls": ["https://www.linkedin.com/company/stripe"],"maxPosts": 10,"postedLimit": "any","scrapeComments": true,"maxComments": 5}
| Setting | Field | Default | What it does |
|---|---|---|---|
| 🎯 Company links or post links | urls | Stripe company page (prefill) | Required. Company links, company page names, post links or post IDs, one per line |
| 🔢 Max posts per company | maxPosts | 10 | Posts per company, newest first. 0 = all publicly discoverable posts |
| ⏰ Posted within | postedLimit | any (Any time) | Any time, Last 24 hours, Last week, Last month, Last 90 days, Last year |
| 📅 Posted on or after | postedLimitDate | empty | YYYY-MM-DD. Wins over Posted within |
| 💬 Collect comments | scrapeComments | true | Saves the public comments of each post |
| 🔢 Max comments per post | maxComments | 5 | Up to 100 of the comments LinkedIn shows publicly. 0 = all comments shown. Values above 100 are lowered to 100 |
| 🌍 Context country | contextCountry | Default | Asks LinkedIn for pages in that country's language setting. Safe to leave on Default. It does not translate posts or dates |
| 🌐 Proxy configuration | proxyConfiguration | no proxy | Optional. Choose Apify Proxy or your own proxy URLs, or leave it off. If LinkedIn refuses requests, the Actor switches to a proxy automatically; that proxy traffic counts as platform usage |
See the input tab for the full field descriptions.
Company links or post links
Use the company page link when you can. A company name only works when it matches the company's LinkedIn page name: the Actor turns it into lowercase and replaces spaces with hyphens.
- ✅ Good:
https://www.linkedin.com/company/stripe,stripe,https://www.linkedin.com/posts/stripe_...-activity-7519107159457038336-81L5,7519107159457038336 - ❌ Bad:
Stripe Inc.(a display name instead of the page name), a personal profile link
⚠️ Entries that are not a company link, company name, post link or post ID are skipped with a warning in the log. If no entry is valid, the run stops with "Nothing to scrape".
Max posts per company
The limit counts per company, not per run. Five companies with Max posts per company at 10 can save up to 50 posts. Post links you paste are read regardless of this number.
- ✅ Good:
10for a regular check of each company - ❌ Bad:
0in a scheduled run, because the cost then grows with every publicly discoverable post
Posted within and Posted on or after
For companies, posts older than your filter are skipped before they are read. Pasted post links outside the window are read but not saved, so they are not charged. Posts whose date can't be read are kept, so you don't lose them silently.
Max comments per post
Only the comments LinkedIn shows to logged-out visitors can be saved, which is the first page of comments under a post. A higher number does not unlock more: you get up to 100 of the comments shown publicly, and the default is 5. The Actor lowers any value above 100 to 100.
⬆️ LinkedIn Company Posts Scraper output
Results are stored in a dataset (a results table on the Apify platform). Open the Output tab of a run to see All posts as a table or JSON, with views for Posts overview, Engagement, Text, tags and links and All details. The same tab links the four extra tables and the run summary. To download, go to Storage → Datasets → Export and pick JSON, CSV, Excel, XML or HTML, so you can export LinkedIn posts to a spreadsheet or turn LinkedIn posts to CSV for your own tools.
JSON example
An example row for the input above (shortened; the media.video values are example values):
{"type": "video","id": "7519107159457038336","urn": "urn:li:activity:7519107159457038336","linkedinUrl": "https://www.linkedin.com/posts/stripe_toto-wolff-activity-7519107159457038336-81L5","content": "Toto Wolff of the Mercedes-AMG PETRONAS Formula One Team joins John Collison...","hashtags": ["Stripe"],"mentions": [],"links": ["https://stripe.com"],"author": {"name": "Stripe","publicIdentifier": "stripe","linkedinUrl": "https://www.linkedin.com/company/stripe","type": "COMPANY","avatar": "https://media.licdn.com/..."},"postedAt": { "timestamp": 1792694845068, "date": "2026-10-22T18:47:25.068Z" },"media": {"type": "video","images": [],"video": { "url": "https://dms.licdn.com/...", "duration": 55, "thumbnail": "https://media.licdn.com/...", "width": 720, "height": 720 },"article": null,"document": null},"engagement": { "reactions": 372, "comments": 15, "shares": null, "impressions": null, "totalEngagement": 387 },"comments": [{ "text": "Great talk", "authorName": null, "likes": 0, "date": "2026-10-23T05:02:43.599Z" }],"scrapedFrom": "discovered","scrapedAt": "2026-10-30T10:00:00Z"}
Extra tables and run summary
Each post is also split into flat tables, so you get a clean LinkedIn posts dataset for every angle:
| Table | One row per | Main fields |
|---|---|---|
| 🏢 Authors | post | author_name, author_id, author_type, author_url, author_avatar, post_type, posted_at, reactions, comments, total_engagement |
| 💬 Comments | public comment | text, comment_author, likes, commented_at |
| 🔗 Links and tags | link, short link, hashtag or mention | kind, value, short_url |
| 🖼️ Media | image, video or article card | kind, url, thumbnail_url, duration_seconds, width, height, title |
Every extra row also has post_id, post_url, post_author and scraped_at, so you can join it back to the main table.
🧮 The Run summary is saved in the run's key-value store (a small file store attached to each run; open the run's Storage tab, then Key-value store) as RUN_SUMMARY. It is also linked in the Output tab. It counts companies_requested, post_links_requested, posts_saved, rows_charged, posts_not_readable and posts_outside_date_filter, and lists up to 100 problems (the input and post ID that could not be read), plus duration_seconds and spend_limit_reached.
💡 Tips and advanced usage
How many posts can you scrape with LinkedIn Company Posts Scraper?
There is no fixed cap per run. For each company, the run stops at Max posts per company. It reads the recent publicly discoverable posts of each company, so very large post histories may not be complete. Very new posts may be missing; paste their links to read them directly. The best way to know for your companies is a small test run.
How to keep costs low
- Use Posted within or Posted on or after: for companies, older posts are skipped before they are read and are never charged.
- Keep Max posts per company small for regular checks, for example 10.
- Turn off Collect comments if you only need the counts. Comments are free, so this only keeps your tables smaller.
Run it on a schedule
A weekly competitor report takes four steps:
- Fill in your competitors' company links, set Max posts per company to
10and Posted within toweek. - Save the input as a task (a saved input you can run again with one click) from the Actor page.
- In the task, add an Apify schedule, for example every Monday at 08:00.
- Each run creates a new dataset. The Actor doesn't compare runs itself, so remove duplicates by
id(the post ID) orlinkedinUrl: for example, append each run's posts to one Google Sheet and use Data → Data cleanup → Remove duplicates on theidcolumn. A post ID that wasn't there last week is a new post.
Cost for this schedule: 5 competitors × 10 posts = at most 50 posts, which is at most $0.2005 per weekly run on the Free plan (50 × $0.00401), plus the start fee and platform usage.
If something goes wrong
| What you see | What is charged | What to do |
|---|---|---|
| ⚠️ "Nothing to scrape" and the run stops | Start fee and platform usage only | Add at least one company link, company name, post link or post ID. Copy the company link from your browser |
| ⚠️ "No posts were collected" | Start fee and platform usage only | Check the company link, or paste post links directly, then run again later |
⚠️ A post is listed in problems in the run summary | Nothing for that post | It may be deleted, private or members-only |
| ⚠️ "LinkedIn is refusing too many requests right now" | Posts saved before the stop, plus the start fee and usage so far | Try again later. If LinkedIn refuses requests, the Actor switches to a proxy automatically; that proxy traffic counts as platform usage |
| ⚠️ "The maximum charge limit was reached" | Posts saved up to the limit | Raising the limit and running again saves and charges the posts you already have again. To avoid paying twice, also set Posted on or after to a date after your newest saved post, or paste only the post links you still need |
A new run never knows what earlier runs saved, so every run charges the posts it saves.
🔌 Integrations and API
Can I use LinkedIn Company Posts Scraper as an API?
Yes. The Apify API lets you start runs, schedule them and fetch results, so you can use this Actor as a LinkedIn company posts API for the public posts of any company page. Use the apify-client NPM package for Node.js or the apify-client PyPI package for Python. The API tab has ready-to-use code.
How to scrape LinkedIn posts with Python
Here is a minimal script to scrape LinkedIn posts Python-first, using the apify-client package:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("insights_data/linkedin-company-posts-scraper-no-cookies").call(run_input={"urls": ["https://www.linkedin.com/company/stripe"],"maxPosts": 10,"postedLimit": "any","scrapeComments": True,"maxComments": 5,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["postedAt"]["date"], item["engagement"]["reactions"], item["linkedinUrl"])
Can I integrate LinkedIn Company Posts Scraper with other apps?
Yes. Connect it with Apify integrations such as Make, Zapier, Slack, Google Sheets, Google Drive, Airbyte, GitHub and LangChain. A webhook (an automatic message Apify sends to another app's web address) fires on run events, for example when a run succeeds, not on each new post.
Two workflows that fit this Actor:
- Shared sheet: schedule a weekly run for your competitors and add the Google Sheets integration to the task, so every run adds its rows to one LinkedIn posts Google Sheets file that your team can sort by
engagement.totalEngagement. - Slack digest through n8n or Make: add a webhook for "run succeeded" that calls an n8n or Make scenario. It reads the finished run's dataset and posts a digest of that run's posts with their links to a Slack channel. To post only posts you haven't seen, keep a list of
idorlinkedinUrlvalues (for example in a Google Sheet) and let the scenario skip the ones already on it. Your LinkedIn post scraper n8n flow then needs only three steps: a webhook trigger, a dataset read and a Slack message.
Can I use LinkedIn Company Posts Scraper with AI agents (MCP)?
Yes. MCP (Model Context Protocol) is a standard way for AI assistants such as Claude to call outside tools. Add it through the Apify MCP server as a LinkedIn scraper MCP tool, and the assistant runs it and reads the posts for LinkedIn content analysis or summaries. Open the MCP tab for setup steps.
🧩 Other LinkedIn scrapers
These Actors cover other LinkedIn data, so you can pick the right LinkedIn scraper for each job:
| Actor | What it adds |
|---|---|
| 🔎 LinkedIn Post Search Scraper (No Cookies) | Find public posts by keyword, author or company, with author followers and an exact date filter |
| 🔎 LinkedIn Posts Search Scraper | Search public posts by keyword, phrase or hashtag, or paste post, profile and company links; finds emails in the text |
| 👥 LinkedIn Company Employees Scraper | Public employees of a company with title, seniority, department and location, plus work emails as an option |
| 📇 LinkedIn Profile Extractor & Enricher (No Login Required) | Public profiles from URLs or IDs: headline, experience, education, skills and more |
| 💼 Advanced LinkedIn Job Search API | Public LinkedIn jobs with salary, seniority, applicants and the full description |
❓ FAQ
Is it legal to scrape LinkedIn?
Scraping publicly available data is generally legal, but you are responsible for how you use it. This Actor reads only posts that anyone can see without logging in. Company posts are public business content, but comments can contain personal data, so collect and store them only with a legitimate reason and in line with privacy laws such as GDPR. Take LinkedIn's User Agreement into account. This is not legal advice.
How does LinkedIn Company Posts Scraper work?
It works like a person reading LinkedIn without an account, only automated. For each company, it finds the company's publicly discoverable posts, orders them newest first and skips the ones outside your date filter. It then reads each public post page and saves the text, date, counts, comments and media. Post links you paste are read directly. At the end, it writes the run summary.
Do I need a LinkedIn account or cookies?
No. With this LinkedIn scraper no cookies or passwords are shared, and you don't need a LinkedIn account. You can read LinkedIn posts without login because the Actor only reads what any visitor can see.
How is it different from LinkedIn Post Search Scraper (No Cookies)?
Both read public LinkedIn posts without an account. The difference is where they start:
| LinkedIn Company Posts Scraper (No Cookies) | LinkedIn Post Search Scraper (No Cookies) | |
|---|---|---|
| Starts from | Company links or names, post links, post IDs | Keyword, author or company search |
| Date filter | Time window or exact on-or-after date | Exact date filter |
| Comments | Public comments shown on the post (default 5, up to 100) | Comments |
| Author followers | No | Yes |
Choose this Actor to follow specific company pages. Choose the search scraper to find posts about a topic.
Is this a LinkedIn post scraper for any post?
Yes, for public posts. Paste a post link or a post ID and it reads that post, even if it comes from a company you didn't add. Through the API, developers can use it as a LinkedIn post scraper API for lists of post links, and as a LinkedIn posts API for company feeds. Members-only, private and deleted posts can't be read.
Can I scrape LinkedIn company page details with it?
Partly. Each post includes the company name, page name, page link and logo. It is not a full LinkedIn company page scraper: follower counts, employee numbers and the About section are not included. For people at a company, use LinkedIn Company Employees Scraper.
Does it give LinkedIn post analytics such as impressions?
It gives the public part of LinkedIn post analytics: reactions, comments and total engagement per post, plus the post type and exact time. Impressions, views and shares are only visible to logged-in viewers or the page owner, so they are null. That is still enough for competitor content analysis, such as which post types and topics get the most engagement.
How do I download LinkedIn posts to Excel or CSV?
Run the Actor, then go to Storage → Datasets → Export and choose Excel or CSV. You can download LinkedIn posts from all your companies in one file, or export the comments, links and media tables separately.
Why am I getting fewer posts than expected?
- The Actor reads the recent publicly discoverable posts of a company. Very new posts may be missing; paste their links to read them directly.
- Your date filter may skip older posts. The log shows how many older posts were skipped for each company.
posts_outside_date_filterin the run summary counts only posts that were read and then fell outside the filter (for example pasted post links). - Some posts are members-only, private or deleted. They are listed in
problemsin the run summary. - A company name that doesn't match the LinkedIn page name finds nothing. Use the company link.
- The maximum charge limit may have stopped the run. Check
spend_limit_reachedin the run summary.
Which LinkedIn data scraper should I use for people, jobs or keyword searches?
Use this Actor for the posts of company pages. For other data, use the sibling Actors listed in the Other LinkedIn scrapers section above: employees, profiles, jobs, or posts found by keyword.
Can I use it for LinkedIn content analysis with AI?
Yes. The full post text, hashtags and links come as clean JSON, so you can send them to a language model, a spreadsheet or a BI tool. You can use it as a LinkedIn company posts extractor for LinkedIn content analysis and LinkedIn market research.
📧 Support and feedback
Found a bug or have a feature request? Please create an issue on the Issues tab and include the input you used.
Need a custom solution or more data? Contact us at hello.insights.data@gmail.com.
Built and maintained by insights_data.