LinkedIn Company Posts Scraper
Pricing
from $0.50 / 1,000 post scrapeds
LinkedIn Company Posts Scraper
Extract recent posts from LinkedIn company pages — headlines, full post body text, dates, like counts, post URLs, and author info. No login required. Accepts company slugs or full URLs. Batch multiple companies in one run.
Pricing
from $0.50 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
10
Bookmarked
594
Total users
178
Monthly active users
0.27 hours
Issues response
11 minutes ago
Last modified
Categories
Share
What does LinkedIn Company Posts Scraper do?
LinkedIn Company Posts Scraper extracts recent posts from LinkedIn company pages — get post headlines, full post body text, publish dates, post URLs, and author info without logging in or using the LinkedIn API.
No login required. This scraper uses pure HTTP requests with residential proxy to fetch public LinkedIn company pages and follows LinkedIn's public "load more" feed. Each company yields up to about 70 of its most recent posts (the most LinkedIn shows logged-out visitors), with full text, publish date, reaction and comment counts, and image or video links.
Try it now — paste a company URL, or just type a slug like google, microsoft, or apify and click Start.
Buying-signal workflow: Use this actor to monitor what competitors and target accounts publish on LinkedIn. Schedule daily or weekly runs for company slugs, flag posts about launches, funding, hiring, events, pricing, or pain-point keywords, then pass the highest-intent post URLs into a post-engager workflow when you need the people who interacted with those posts.
This actor returns public company-post text, aggregate engagement counts and metadata. It does not extract likers, commenters, or reaction breakdowns; it helps you find the posts that justify deeper engagement analysis.
Suggested workflow:
- Monitor 10–50 competitor or target-company pages with scheduled runs.
- Filter posts by intent keywords (for example:
webinar,hiring,migration,launch,funding, and key competitor or product names). - Send selected post URLs to a LinkedIn post-engagers step when available, or to external enrichment sources.
- Enrich resulting profile/company URLs with LinkedIn Profile Scraper and LinkedIn Company Scraper.
- Export to HubSpot, Salesforce, Clay, Airtable, Zapier, Make, n8n, or a custom scoring agent.
Why this scraper stands out:
- Extracts full post text plus reaction and comment counts on every post — no extra option needed
- Up to about 70 recent posts per company without login
- No LinkedIn account or API key needed
- Accepts full URLs, partial URLs, or simple slugs
- Batch scrape multiple companies in one run
- Filter by an inclusive publish-date cutoff for recurring monitoring
- Lower-cost than many competing LinkedIn company post extractors (we charge $0.001/post on the Free tier and $0.0009/post on Starter)
Who is it for?
LinkedIn Company Posts Scraper is built for revenue, recruiting, competitive-intelligence, and marketing teams that monitor public company-page content for buying signals, hiring signals, and market updates.
Who is LinkedIn Company Posts Scraper for?
B2B Marketing & Competitive Intelligence Teams
- Monitor what competitors are publishing and which topics get the most engagement
- Track company announcements, product launches, and PR activity via LinkedIn
- Build a content calendar by analyzing top-performing posts in your industry
Sales & Business Development Professionals
- Stay informed about prospect companies before outreach — reference their recent posts
- Track funding announcements, partnerships, and product news from target accounts
- Trigger outreach sequences when companies post about topics relevant to your product
Market Researchers & Analysts
- Collect thought leadership content across a sector for trend analysis
- Analyze posting cadence and content strategy of industry players
- Feed LinkedIn company post data into AI models for sentiment analysis and topic extraction
Data Engineers & Developers
- Integrate LinkedIn company content into monitoring pipelines via the Apify API
- Automate competitive intelligence dashboards with scheduled scraping runs
- Connect LinkedIn data to AI agents via MCP for real-time company research
Why use LinkedIn Company Posts Scraper?
- 🔓 No login or cookies required — scrapes public company pages without authentication
- 📝 Full post body text — get the complete text of each post, not just the headline
- 📈 Engagement on every row — reaction and comment counts, image or video URL, and a repost flag
- 💰 Cost-effective pricing — $0.001/post on the Free tier, with lower per-post rates on paid Apify plans
- ⚡ Pure HTTP — fast and lightweight, no browser overhead
- 🏢 Flexible input — accepts full LinkedIn URLs, partial URLs, or just company slugs
- 🔄 Batch scraping — process dozens of companies in a single run
- ⏰ Scheduling — set up recurring runs for ongoing competitor monitoring
- 📁 Export — download results as JSON, CSV, or Excel
- 🏠 Residential proxy included — all proxy costs built into the per-post price
- 🤖 MCP compatible — connect directly to Claude and other AI assistants
What data can you extract?
Each post yields up to 16 structured fields:
| Category | Fields |
|---|---|
| 🏢 Company | companyName, companySlug, companyUrl |
| 📝 Post Content | postType (Article / DiscussionForumPosting / SocialMediaPosting), headline, text (full body) |
| 📅 Dates | datePublished |
| 🔗 Links | postUrl |
| ✍️ Author | authorName, isRepost |
| 📈 Engagement and media | reactionCount, commentCount, mediaUrl, mediaType (every post when LinkedIn shows them); repostCount when a post page shows it (enrichPostDetails) |
| 🕐 Metadata | scrapedAt |
Post types explained:
- Article — long-form LinkedIn articles published by the company
- DiscussionForumPosting — legacy structured type for standard feed posts
- SocialMediaPosting — current structured type for standard feed posts, updates, and announcements
Important note on data scope: The scraper reads the public company page and LinkedIn's public feed pages, returning up to about 70 recent posts per company with full body text, exact publish dates, reaction and comment counts, and media links. headline is LinkedIn's own title when the page provides one, otherwise the first line of the post. When enrichPostDetails is enabled, the scraper also visits each public post page and adds the repost count when LinkedIn exposes it. It does not extract reaction breakdowns, commenter or reactor identities, or any data that requires authentication.
How much does it cost to scrape LinkedIn company posts?
This Actor uses pay-per-event pricing — you pay only for what you scrape. No monthly subscription. All platform and residential proxy costs are included.
| Free | Starter ($29/mo) | Scale ($199/mo) | Business ($999/mo) | |
|---|---|---|---|---|
| Per post | $0.001 | $0.0009 | $0.0007 | $0.0005 |
| 1,000 posts | $1.00 | $0.90 | $0.70 | $0.50 |
| 10,000 posts | $10.00 | $9.00 | $7.00 | $5.00 |
A one-time $0.01 start fee applies per run that returns at least one post. Runs that return nothing (for example, only invalid company slugs) are not charged.
Real-world cost examples (Free tier):
| Input | Companies | Posts | Duration | Cost |
|---|---|---|---|---|
| 1 company, 30 posts | 1 | 30 | ~15s | ~$0.040 |
| 5 companies, 30 posts each | 5 | 150 | ~1min | ~$0.160 |
| 20 companies, 30 posts each | 20 | 600 | ~4min | ~$0.610 |
Each company returns up to about 70 recent posts; set maxPostsPerCompany and publishedAfter to pay only for what you need. You pay per post scraped. The free plan ($5 credit) lets you scrape approximately 5,000+ posts before spending a dollar.
How to scrape LinkedIn company posts
- 🔗 Go to LinkedIn Company Posts Scraper on Apify Store
- 📋 Click Try for free to open the Actor in Apify Console
- 🏢 Enter company URLs or slugs (e.g.,
google,microsoft,https://www.linkedin.com/company/apify/) - 📅 Optionally set Published On or After to return only posts at or after an ISO date or date-time cutoff
- ⚙️ Set Max Posts Per Company if you want to limit results (default: 30)
- ▶️ Click Start and wait for the run to finish
- 📊 Preview results in the Dataset tab — switch to Posts view for a table layout
- 💾 Export as JSON, CSV, or Excel — or connect via API
Input examples for different scenarios:
Monitor a list of competitors and exclude older posts:
{"companyUrls": ["salesforce", "hubspot", "zendesk"],"maxPostsPerCompany": 20,"publishedAfter": "2026-09-01"}
publishedAfter is inclusive and accepts either YYYY-MM-DD (midnight UTC) or an ISO date-time with a timezone, such as 2026-09-01T09:00:00-04:00. When it is set, posts with missing or invalid publication dates are excluded. Omit it to preserve the default behavior and return all recent posts exposed on the public company page.
Use full LinkedIn URLs:
{"companyUrls": ["https://www.linkedin.com/company/google/","https://www.linkedin.com/company/microsoft/"],"maxPostsPerCompany": 30}
Quick single company check:
{"companyUrls": ["openai"],"maxPostsPerCompany": 10,"maxCompanies": 1}
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
companyUrls | Array of strings | Yes | — | LinkedIn company URLs or slugs. Accepts https://www.linkedin.com/company/google/, linkedin.com/company/google, or just google. |
maxPostsPerCompany | Integer | No | 30 | Maximum posts to extract per company (1–100). LinkedIn shows logged-out visitors up to about 70 recent posts per company. |
maxCompanies | Integer | No | 100 | Maximum number of companies to process. Useful when you have a long list but only want a subset. |
publishedAfter | String | No | — | Inclusive ISO publish-date cutoff (YYYY-MM-DD or a timezone-qualified ISO date-time). When set, posts with missing or invalid dates are excluded. |
enrichPostDetails | Boolean | No | false | Visit each post's public page and add the repost count when LinkedIn shows it, plus reaction and comment counts and media from that page. Only the top of each page is read. Failed detail requests keep the base post row. Pages the fast route cannot read are retried through a backup route for up to 10 pages plus one in five enriched posts per run; the status message says if any rows kept only their feed data. |
Output examples
Each company produces multiple post objects in the dataset. Here is a sample:
{"companyName": "Google","companySlug": "google","companyUrl": "https://www.linkedin.com/company/google","postType": "SocialMediaPosting","headline": "New AI capabilities are coming to Google Vids","text": "New AI capabilities, powered by Lyria 3 and Veo 3.1, are starting to roll out to Google Vids. With these new features, you'll be able to: ✨ Generate high-quality video clips from just a simple prompt or photo ✨ Score your video with custom music generation in Lyria 3...","datePublished": "2026-04-02T18:10:18.151Z","postUrl": "https://www.linkedin.com/posts/google_new-ai-capabilities-are-coming-to-google-activity-7445533082427858945-QyGB","authorName": "Google","isRepost": false,"scrapedAt": "2026-04-04T00:38:29.585Z","reactionCount": 1469,"commentCount": 52,"mediaUrl": "https://media.licdn.com/dms/image/v2/D4E10AQEPfJsbEndMDA/image-shrink_1280/...","mediaType": "image"}
{"companyName": "Apify","companySlug": "apify","companyUrl": "https://www.linkedin.com/company/apify","postType": "SocialMediaPosting","headline": "Build smarter AI agents with the Actor SDK","text": "We just released a major update to the Apify Actor SDK. Here's what's new...","datePublished": "2026-04-01T14:22:00.000Z","postUrl": "https://www.linkedin.com/posts/apify_build-smarter-ai-agents-activity-7444900123456789012-AbCd","authorName": "Apify","isRepost": false,"scrapedAt": "2026-04-04T00:40:12.183Z","reactionCount": 87,"commentCount": 4}
Tips for best results
- 🎯 Start small — test with 1-2 companies first to verify the data meets your needs before scaling up
- 🔄 Schedule recurring runs — set up daily or weekly runs and update
publishedAfterto avoid emitting and paying for older posts - 📋 Use slugs for convenience —
googleis easier to type than the full URL and works just as well - ⚠️ Post count varies by company — active companies like Google return about 70 recent posts; smaller companies return all the public posts they have
- 🏢 Company vs personal profiles — this scraper is for company pages only. For personal profiles, use LinkedIn Post Scraper
- 🧮 Budget planning — each post costs $0.001 (Free tier) plus a one-time $0.01 start fee. For 10 companies × 20 posts = 200 posts + start fee = $0.21
- 🔎 Enable details only when needed —
enrichPostDetailsmakes one extra public request per post, so runs take longer. The feed already includes reaction and comment counts and media; turn it on only if you want the repost count, which LinkedIn often hides from logged-out visitors. It remains off by default; base rows are kept when a detail page is unavailable. - 🔍 Check post count — if a company returns fewer posts than expected, they may have limited their public visibility or the scraper hit LinkedIn's anti-bot protection (retry later)
Integrations
LinkedIn Company Posts Scraper works with the full Apify ecosystem and thousands of external tools.
Competitor content monitoring pipeline
- Schedule daily runs for a list of 10-20 competitor company slugs
- Connect to Google Sheets via Zapier to append new posts to a running log
- Set up Slack alerts when specific keywords appear in competitor posts
AI-powered competitive intelligence
- Run the scraper on 5-10 target companies weekly
- Feed post text to Claude or GPT for topic classification and sentiment analysis
- Automatically generate competitive intelligence briefings for your team
Sales trigger workflow
- Scrape posts from 50+ target accounts weekly
- Push results to HubSpot when a prospect posts about a topic relevant to your product
- Trigger personalized email sequences based on specific company announcements
Content research and ideation
- Collect posts from 20 industry thought leaders weekly
- Send results to Airtable for your content team's review
- Use engagement patterns and topics to inform your own content calendar
Supported integrations:
- 🔗 Zapier, Make (Integromat), n8n
- 📊 Google Sheets, Airtable, Excel
- 💼 HubSpot, Salesforce, Pipedrive
- 💬 Slack, Microsoft Teams, Discord
- 🗄️ S3, Google Cloud Storage, Dropbox
- 🔌 REST API, webhooks
API usage
Use the Apify API examples below to start runs, pass company slugs or URLs, and download recent post datasets from your own scripts or monitoring workflows.
Using the Apify API
Call LinkedIn Company Posts Scraper programmatically using the Apify API.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('automation-lab/linkedin-company-posts-scraper').call({companyUrls: ['google', 'microsoft', 'apify'],maxPostsPerCompany: 20,publishedAfter: '2026-09-01',});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((post) => {console.log(`${post.companyName}: ${post.headline}`);console.log(`Published: ${post.datePublished}`);console.log(`URL: ${post.postUrl}`);});
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("automation-lab/linkedin-company-posts-scraper").call(run_input={"companyUrls": ["google", "microsoft", "apify"],"maxPostsPerCompany": 20,})for post in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{post['companyName']}: {post['headline']}")print(f"Published: {post['datePublished']}")print(f"URL: {post['postUrl']}")
cURL
# Start the actor runcurl -X POST "https://api.apify.com/v2/acts/automation-lab~linkedin-company-posts-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"companyUrls": ["google", "microsoft", "apify"],"maxPostsPerCompany": 20}'# Fetch results (replace DATASET_ID with the value from the run response)curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_APIFY_TOKEN&format=json"
Use with AI agents via MCP
LinkedIn Company Posts Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).
Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/linkedin-company-posts-scraper"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/linkedin-company-posts-scraper"}}}
Your AI assistant will use OAuth to authenticate with your Apify account on first use.
Example prompts
Once connected, try asking your AI assistant:
- "Use automation-lab/linkedin-company-posts-scraper to fetch the last 20 posts from Google, Microsoft, and OpenAI and summarize what each company is talking about this week"
- "Get LinkedIn posts from salesforce and hubspot for the past month and identify their top content themes"
- "Scrape recent posts from apple and samsung on LinkedIn, then tell me what product launches or announcements they've made"
Learn more in the Apify MCP documentation.
Is it legal to scrape LinkedIn company posts?
Web scraping of publicly available data is generally legal, as confirmed by the US Ninth Circuit ruling in hiQ Labs v. LinkedIn (2022), which held that scraping public LinkedIn profiles does not violate the Computer Fraud and Abuse Act (CFAA).
This Actor only accesses publicly available LinkedIn company pages — the same data any visitor can see without logging in. It does not bypass any authentication, access private data, or violate LinkedIn's login barriers.
However, you should:
- Review LinkedIn's Terms of Service for your use case
- Comply with applicable data protection laws (GDPR, CCPA, etc.)
- Use the collected data responsibly and ethically
- Consult legal counsel if you have specific compliance questions
For more information, see Apify's guide on the legality of web scraping.
LinkedIn is a third-party trademark; this Actor is not affiliated with or endorsed by LinkedIn.
Data handling and AI
The Actor sends requested public company URLs through Apify's residential proxy service and writes extracted public post data only to the run's Apify dataset. It keeps no separate external copy or cache; dataset, key-value-store, and log retention follow your Apify account settings, and you can delete them with Apify's storage controls. Do not provide credentials or private data in the input.
When an operation fails, the Actor sends sanitized diagnostic input, the exception, and the Actor, build and run IDs to our private GlitchTip error-tracking service so we can repair it. Secret fields and URL query strings are removed, and reports are kept for 30 days.
The Actor itself does not call an AI model or send results to an AI provider. If you connect it to an MCP or other AI client, that client processes results under your own model-provider configuration.
FAQ
How many posts can I get per company? Up to about 70 of the most recent posts per company. That is how far LinkedIn's public feed goes for logged-out visitors, and the scraper follows it to the end. Companies with fewer public posts return all of them. The run's final status message says how many posts were delivered and why it stopped.
Why did a company return 0 posts? This can happen when: (a) LinkedIn's anti-bot protection blocked the request — wait 10-15 minutes and retry; (b) the company doesn't have public posts visible without login; (c) the company slug is incorrect (check the URL at linkedin.com/company/SLUG). Invalid company slugs return a 404 and are skipped automatically.
Can I get comment counts, repost counts, or reaction breakdowns?
Reaction and comment counts are included on every post LinkedIn's feed shows them for. Enable enrichPostDetails to visit each post page and add the repost count when LinkedIn exposes it there (it usually does not for logged-out visitors). The Actor does not extract reaction breakdowns, commenter or reactor identities, and it never uses authenticated access.
What happens if a run is charged but the posts cannot be saved?
Posts are charged first and saved right after. If saving still fails after retries (a rare Apify storage outage), the run fails and keeps the paid posts in its key-value store record PENDING_DELIVERY. Resurrect the run from the Apify Console and it adds those posts to the dataset without charging them again. If the charge itself could not be confirmed, the posts are held in a sealed form; resurrecting the run delivers them only if the charge went through and discards them otherwise. Resurrecting more than once is safe: posts that already reached the dataset are never added twice.
Does this scraper work for personal LinkedIn profiles? No — this scraper is designed for company pages only (linkedin.com/company/SLUG). For personal profiles, use LinkedIn Post Scraper.
Why is the scraper slower than expected? LinkedIn uses anti-bot detection that sometimes requires multiple attempts with different residential proxy IPs. The scraper makes up to 2 attempts with exponential backoff. A 1-second delay between company requests also helps avoid rate limiting.
Does this require a LinkedIn account or API key? No. LinkedIn Company Posts Scraper works entirely without login. It fetches the public version of company pages using residential proxies, reading the server-rendered feed and structured data (JSON-LD) in the HTML.
How does this compare to apimaestro/linkedin-company-posts? Both scrapers extract posts from LinkedIn company pages without login. Our scraper starts at $0.001/post on the Free tier, with lower rates on paid Apify plans. The main trade-off: our scraper returns up to about 70 recent posts per company with full text and engagement counts without any LinkedIn account; Actors that use logged-in accounts can go further back and list individual reactors or comments. Try both and compare on your specific use case.
Related actors
Use these related LinkedIn actors when you need profile, company, jobs, or personal-post data alongside company-page posts.
Other LinkedIn scrapers
- 👤 LinkedIn Post Scraper — Extract recent posts from LinkedIn personal profiles with headlines, dates, and like counts
- 🏢 LinkedIn Company Scraper — Extract company profile data: size, industry, headquarters, employee count, founded year
- 💼 LinkedIn Jobs Scraper — Scrape job listings from LinkedIn job search results with full job descriptions
- 👥 LinkedIn Profile Scraper — Extract detailed LinkedIn profile data: experience, education, skills, and contact info