LinkedIn Profile & Company Posts Scraper
Pricing
from $2.99 / 1,000 results
LinkedIn Profile & Company Posts Scraper
LinkedIn Profile & Company Posts Scraper — Extract posts from LinkedIn profiles and company pages, including post text, authors, timestamps, likes, comments, shares, media, hashtags, and post URLs. Useful for content research, lead generation, competitor analysis, and social media insights.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
Social Data API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
LinkedIn Profile & Company Posts Scraper — Text, Likes and Comments
LinkedIn Profile & Company Posts Scraper extracts public posts from LinkedIn company, school, showcase and personal profile pages, or a single post by its URL. Each post comes with its full text, publish date, media links, like and comment counts, mentions, public comments and the author's name, headline and photo. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a social listening pipeline. No LinkedIn account or cookies needed. Start with one company page, then add your competitors.
What data can I extract with LinkedIn Profile & Company Posts Scraper?
Using this LinkedIn Post API, you will be able to extract the following LinkedIn post data:
| 📝 Post text | 🔗 Post link | 📅 Publish date and time | ⏳ Time since posted |
|---|---|---|---|
| 👍 Like count | 💬 Comment count | 🗨️ Public comments (full detail) | 🏷️ Mentioned people and companies |
| 🖼️ Images and video posters | 🎞️ Media type (text, image, video, article, document, poll) | 🔁 Repost flag | 🌱 Original post flag |
| 👤 Author name | 💼 Author headline or description | 🆔 Author LinkedIn ID | 📷 Author photo and cover image |
| 🏢 Author type (person or company) | 🌐 Scraped page URL | 🔖 Post URN | 📌 Pinned comment flag |
How to use LinkedIn Profile & Company Posts Scraper
Marketing, sales and research teams use it as a LinkedIn profile posts scraper and a reader of LinkedIn company page posts, and get one clean JSON item per post from a single run.
Copy to your AI assistant:
LinkedIn Profile & Company Posts Scraper is an Apify Actor that returns public posts from LinkedIn company, school, showcase and personal profile pages, or single posts by URL, as structured JSON: post text, post link, publish date, media type and images, like count, comment count, mentioned people and companies, public comments, and the author's name, headline, ID and photo. Use it whenever someone needs LinkedIn posts without cookies, a login, or a browser - tracking competitor company pages, following what industry voices post, collecting post text for content research. Inputs: urls (array of LinkedIn company, school, showcase, profile or post URLs, required), limit (integer, maximum posts for each URL; a single post URL returns one post; default 20, 1-2000), deepScrape (boolean, full post detail with comments and exact counts, default true), scrapeUntil (string YYYY-MM-DD, only posts on or after this date; not applied to single post URLs), proxyConfiguration (object, your own proxy URLs are used from the start; Apify Proxy is the automatic fallback when blocked). Every item is one post; there are no summary or error rows, and only saved posts are billed (one row_result event each). LinkedIn does not show the list of people who reacted, the share count or permission flags to logged-out visitors, so those fields are always empty or null; comments are the ones the public post page shows, and the comments-truncated flag tells when more exist.
LinkedIn Profile & Company Posts Scraper MCP Server: use these Actors from ChatGPT, Claude or Cursor
Point your AI assistant at the Apify MCP server and it can find, add and call this Actor on its own through the server's search, add and call tools. No glue code, no scraping logic in your prompts.
$claude mcp add --transport http apify "https://mcp.apify.com"
Step by step
- Create a free Apify account.
- Open this Actor in the Apify Store.
- Paste the LinkedIn company, school, showcase, profile or post URLs, one per line.
- Click Start (or send your API request).
- Download or stream your results in JSON, CSV or Excel.
How to scale LinkedIn Profile & Company Posts Scraper to bulk
Put every URL you follow in the URL list of one run, including LinkedIn school and showcase posts pages next to company pages and profiles. The post limit you set applies to each URL, so 3 pages with a limit of 100 can return up to 300 posts; a page with fewer public posts simply returns what it has. To track competitor LinkedIn posts every week, save the input as a task and run it on an Apify schedule, adding a date filter so each run only returns new posts. You can also start runs from your own code through the Apify API and collect the dataset when the run finishes.
✨ Features
LinkedIn Profile & Company Posts Scraper fetches clean, structured posts from LinkedIn ⚡. It's ideal for watching competitor company pages, running a LinkedIn influencer posts scraper over the voices you follow, the moment you need to scrape LinkedIn company updates for a newsletter, and building post datasets for AI agents.
It extracts, per post:
- Post text – the full text with its line breaks
- Publish date – exact date and time, plus LinkedIn's relative age
- Like and comment counts – the numbers shown on the post
- Comments – the public comments with commenter name, text, time and mentions, so it doubles as a LinkedIn post comments scraper
- Mentions – people and companies tagged in the post text
- Media – media type and every image or video poster link
- Author – name, headline or description, LinkedIn ID, photo and cover image
⚡ Every post is checked on its own public page before it is saved, so you only get real posts by the page you asked for.
Use cases 💡
- Marketing manager — track competitor LinkedIn posts and compare likes and comment counts weekly.
- Sales rep — read a prospect company's recent posts before an outreach call.
- Recruiter — follow school and showcase pages for employer-brand and hiring posts.
- Analyst — collect a year of company updates with the date filter for trend reports.
- AI engineer — feed post text and comments into a RAG index for a market-research agent.
Building an AI agent? Connect LinkedIn Profile & Company Posts Scraper over MCP and let it call the actor on its own.
Why choose this actor?
- Company and personal pages in one run. A recorded run took one company page and one personal profile and saved 10 posts with full detail, 5 from each page, in 41 seconds.
- The full conversation behind each post. A recorded company post came back with 7,284 likes, 299 comments and 10 public comments with each commenter's name and text.
- 34 fields, 5 kinds of LinkedIn URL. Company, school, showcase, profile and single post URLs all work in the same list, with a per-URL post limit, a date filter and a light mode for quicker runs.
⬇️ Input
The actor accepts a list of LinkedIn URLs; the URL list is the only required field. Accepted formats:
- Company pages:
https://www.linkedin.com/company/google/ - School pages: links that contain
linkedin.com/school/ - Showcase pages: links that contain
linkedin.com/showcase/ - Personal profiles:
https://www.linkedin.com/in/ajjames - Single posts:
https://www.linkedin.com/posts/...orhttps://www.linkedin.com/feed/update/urn:li:activity:...
| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
urls | Yes | array | LinkedIn company, school, showcase, profile or post URLs, one per line. An unsupported URL stops the run with a message naming it. | ["https://www.linkedin.com/company/google/"] |
limit | No | integer | Maximum posts for each URL; a single post URL returns one post. Default 20, allowed 1–2000. | 10 |
deepScrape | No | boolean | Read each post's own page for full text, exact counts and public comments, and add details for commenters and mentioned people. Default true. | true |
scrapeUntil | No | string | Only posts published on or after this date (YYYY-MM-DD). Not applied to single post URLs. No default. | "2026-09-01" |
proxyConfiguration | No | object | Your own proxy URLs are used from the start; otherwise the run starts direct and switches to Apify Proxy when blocked. | {"useApifyProxy": true} |
Example input
{"urls": ["https://www.linkedin.com/company/google/","https://www.linkedin.com/in/ajjames"],"limit": 10,"deepScrape": true,"proxyConfiguration": {"useApifyProxy": true}}
⬆️ Output
Every post is one typed, normalized JSON item with the same schema on every run; a count LinkedIn does not show comes back as null. Export it as JSON (default), CSV or Excel. The example below is a real item from the recorded run, with its comment and mention lists shortened.
Example output
{"urn": "urn:li:activity:7423612752902111232","text": "Three people I think are worth following right now... Who are your 3?\n1. Tariq H.\n2. Calvin McDonald\n3. Allie K. Miller","url": "https://www.linkedin.com/posts/ajjames_three-people-i-think-are-worth-following-activity-7423612752902111232-YQFC","postedAtTimestamp": 1769927204320,"postedAtISO": "2026-02-01T06:26:44.320000Z","timeSincePosted": "8mo","isRepost": false,"authorType": "Person","authorProfileUrl": "https://www.linkedin.com/in/ajjames","authorProfileId": "4444590","authorHeadline": null,"authorFullName": "Anthony J James","image": "https://media.licdn.com/dms/image/v2/D4D22AQHV40QtRE_dsQ/feedshare-shrink_1280/B4DZwX4dbpJYAc-/0/1769927202872?e=2147483647&v=beta&t=pDpaj6F9kKTEWYhxreUsbAABoeE56cZQ_ofeixGoWs4","type": "image","images": ["https://media.licdn.com/dms/image/v2/D4D22AQHV40QtRE_dsQ/feedshare-shrink_1280/B4DZwX4dbpJYAc-/0/1769927202872?e=2147483647&v=beta&t=pDpaj6F9kKTEWYhxreUsbAABoeE56cZQ_ofeixGoWs4"],"author": {"firstName": "Anthony","lastName": "J James","occupation": null,"id": "4444590","publicId": "ajjames","trackingId": null,"profileId": "4444590","picture": "https://media.licdn.com/dms/image/v2/D4D03AQHDupY3VfUK1w/profile-displayphoto-scale_200_200/B4DZt9ct3mG8AY-/0/1767336239298?e=2147483647&v=beta&t=b1CBdITFeUxMLsSieq18kcU6dnf2yvUSrhGKqGryuDM","backgroundImage": "https://media.licdn.com/dms/image/v2/D4D16AQF34_sPS3-NGA/profile-displaybackgroundimage-shrink_200_800/B4DZt9Z1wxI4AY-/0/1767335485349?e=2147483647&v=beta&t=lrOXK9eb1SLJEcxDgEDF7d3-Sj4Cau08mj1TiJr8rVM"},"authorName": "Anthony J James","authorTitle": null,"attributes": [{"start": 73,"length": 8,"type": "PROFILE_MENTION","profile": {"firstName": "Tariq","lastName": "H.","occupation": null,"id": null,"publicId": "tariqhassan1","trackingId": null,"profileId": null,"picture": null,"backgroundImage": null}}],"comments": [{"time": 1769959079853,"link": "https://www.linkedin.com/feed/update/urn:li:share:7423612751710666752?commentUrn=urn%3Ali%3Acomment%3A%28urn%3Ali%3Aactivity%3A7423612752902111232%2C7423746448464269312%29","text": "Here are my three people that everyone should follow: Cory Warfield Madeline Mann Maria Malik","entities": [{"start": 54,"length": 13,"type": "PROFILE_MENTION","profile": {"firstName": "Cory","lastName": "Warfield","occupation": null,"id": null,"publicId": "corywarfield","trackingId": null,"profileId": null,"picture": null,"backgroundImage": null}},{"start": 68,"length": 13,"type": "PROFILE_MENTION","profile": {"firstName": "Madeline","lastName": "Mann","occupation": null,"id": null,"publicId": "madelinemann","trackingId": null,"profileId": null,"picture": null,"backgroundImage": null}}],"pinned": false,"originalLanguage": null,"author": {"firstName": "David","lastName": "Alto","occupation": null,"id": null,"publicId": "davidalto","trackingId": null,"profileId": null,"picture": "https://media.licdn.com/dms/image/v2/D5603AQFH3NKp6VeuiQ/profile-displayphoto-scale_400_400/B56aBiv0qbGcAg-/0/1788363101282?e=2147483647&v=beta&t=8N0jRaPB4b3YKPetWkZXI5a9mFkEQqDrrpRMqXM5uVQ","backgroundImage": null,"distance": null}}],"reactions": [],"numShares": null,"numLikes": 44,"numComments": 5,"commentsTruncated": false,"commentsComplete": true,"reactionsTruncated": true,"canReact": null,"canPostComments": null,"canShare": null,"commentingDisabled": null,"allowedCommentersScope": null,"rootShare": true,"shareAudience": "PUBLIC"}
How does it work?
The actor reads LinkedIn the way a logged-out visitor does, using plain HTTP requests with no browser. It opens each company, school, showcase or profile page you give it, collects the posts shown there, and keeps looking for older public posts by the same author until your limit is reached. Every post is checked on its own public page before it is saved, so posts by other people are left out. When LinkedIn slows down or blocks requests, the actor retries on a fresh session and switches to a proxy on its own. It returns only publicly visible data: what any visitor sees without signing in. Hidden fields stay empty instead of being guessed, and the schema stays the same from run to run. Each post is saved the moment it is ready, so a stopped run keeps everything collected so far.
How do you integrate LinkedIn Profile & Company Posts Scraper into your stack?
It works with what you already use: the REST API from any language, MCP for AI agents, and no-code tools.
MCP integration for AI agents
Add the Apify MCP server to your agent with one command:
$claude mcp add --transport http apify "https://mcp.apify.com"
This registers LinkedIn Profile & Company Posts Scraper as a tool your agent can call directly: the agent finds it with the server's search tool, adds it, and calls it with a list of LinkedIn URLs. It works in Claude Code, Cursor and Windsurf, and any MCP-compatible client can use the same server address.
No-code tools (n8n, Make, LangChain)
- n8n — use the Apify node's "Run an Actor" operation, then read the run's dataset items in the next node. You can also call the Apify API's run-sync endpoint from an HTTP Request node with your token.
- Make — add the Apify app's "Run an Actor" module, then "Get Dataset Items" to send each post to a sheet, Slack or your CRM.
- LangChain — install
langchain-apifyand load the run's dataset withApifyDatasetLoader, mapping each post's text and comments to a document for your agent or vector store.
Is it legal to scrape LinkedIn data?
Collecting publicly available LinkedIn data is generally legal, but how you store and use it is regulated. LinkedIn Profile & Company Posts Scraper returns only publicly available data — what any user sees without logging in — and never signs in to an account. Posts, comments and author details can include personal data, so under GDPR and similar laws scraping public data is generally permissible, but storing and using it must comply with local data-protection law. Keep only what you need and respect people's rights over their data. Consult legal counsel if your use case involves bulk storage of personal data.
Frequently asked questions
What fields does LinkedIn Profile & Company Posts Scraper return?
It returns each post's text, publish date, like and comment counts, media links and the author's name and headline, plus mentions and public comments. See the data fields section for the full list.
Does LinkedIn Profile & Company Posts Scraper require a LinkedIn account or login?
No. Only public post data is extracted. No credentials, cookies or LinkedIn account are needed.
How fast does LinkedIn Profile & Company Posts Scraper run?
A recorded run with one company page and one personal profile saved 10 posts with full detail, 5 from each page, in 41 seconds. Data is read live on every run, not from a cache; turning full post detail off makes runs lighter.
What happens if a page is private or doesn't exist?
A page that does not exist or stays blocked is skipped and named in the run log, and the other URLs keep going. Posts that are deleted or not public are skipped. Skipped items produce no dataset item and no charge, so in code simply count the items you receive per page URL. Used as a LinkedIn person posts scraper it works the same way: only public posts can be returned.
Can I scrape multiple LinkedIn pages at once?
Yes. Put all the URLs in one list, so one run works as a LinkedIn profile activity scraper for a whole list of people and companies; the post limit applies to each URL, so every page or profile in the list can return up to that many posts.
Does LinkedIn Profile & Company Posts Scraper work with Claude, ChatGPT, and other AI agent tools?
Yes — LinkedIn Profile & Company Posts Scraper is available as an MCP tool through the Apify MCP server. Register it in Claude Code, Cursor or Windsurf with claude mcp add --transport http apify "https://mcp.apify.com". Any agent that can call an HTTP endpoint can use the REST API directly.
Does LinkedIn Profile & Company Posts Scraper return data in a format LLMs can use directly?
Yes. Typed, normalized JSON with consistent field names. No HTML parsing, no selectors. Pass it straight to an LLM, index it into a vector store, or feed it to an agent tool — no transformation step.
What happens when LinkedIn changes its layout or updates its anti-bot system?
The actor is actively maintained. When LinkedIn changes, the actor is updated — your calls keep returning the same JSON schema with no changes on your end.
Can I use LinkedIn Profile & Company Posts Scraper without managing proxies or browser infrastructure?
Yes. Retries and the switch to a proxy when LinkedIn blocks requests run on the actor's side. You send one request and get structured JSON back. No proxy accounts, no headless browser setup, no maintenance.
Which LinkedIn post fields work best for AI training data and RAG indexing?
For RAG, use the text-rich fields: the post text, the comment texts and the author headline. For training data, use the numeric and true/false fields: like count, comment count, publish timestamp, media type and the repost flag. All fields are typed primitives — strings, integers, booleans — no normalization needed.
Your feedback
Found a bug or missing a field? Let us know through the Issues tab on this Actor's page. Every report is read, and fixes ship as updates to the actor.