LinkedIn Profile Posts Scraper
Pricing
Pay per event
LinkedIn Profile Posts Scraper
Extract recent public LinkedIn profile posts and articles from known profiles or post URLs. No customer cookies required.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract recent public posts from LinkedIn profile activity pages and individual LinkedIn post URLs without asking users for account cookies.
What does LinkedIn Profile Posts Scraper do?
LinkedIn Profile Posts Scraper turns a list of public LinkedIn profile URLs or slugs into a clean dataset of recent public posts.
It is designed for repeat workflows where you already know the people you want to monitor.
The actor visits public LinkedIn profile activity pages, reads structured public page data, and saves one dataset item per post.
It can also accept individual LinkedIn post URLs when your workflow starts from a saved link.
Who is it for?
- πΌ Sales teams tracking buying signals from target accounts and executives.
- π§² Recruiters monitoring public thought leadership from candidate pools.
- π£ Founder, analyst, and influencer monitoring teams.
- π΅οΈ Competitive intelligence teams following public LinkedIn narratives.
- π€ Automation builders who need LinkedIn posts in a dataset, API, or webhook.
Why use this actor?
- No customer LinkedIn cookies are required.
- Outputs structured rows instead of screenshots or page HTML.
- Supports profile slugs, full profile URLs, activity URLs, and post URLs.
- Uses conservative retries and proxy sessions for public LinkedIn pages.
- Works well in recurring Apify tasks for monitoring known profiles.
What LinkedIn data can it extract?
The actor extracts public post metadata that LinkedIn exposes on reachable public pages.
| Field | Description |
|---|---|
profileName | Public profile name when available |
profileSlug | LinkedIn profile slug |
profileUrl | Normalized profile URL |
postUrl | Canonical post or article URL |
postUrn | Activity URN when present in the URL |
postType | JSON-LD item type such as Article |
text | Public post text when available |
headline | Headline or title |
datePublished | Published timestamp |
dateModified | Modified timestamp when available |
authorName | Author name |
imageUrl | Public image URL when available |
likeCount | Public like/reaction count when available |
commentCount | Public comment count when available |
sourceUrl | Input URL that produced the row |
scrapedAt | Extraction timestamp |
How much does it cost to scrape LinkedIn profile posts?
The actor uses pay-per-event pricing.
There is a small start fee per run and a per-post fee for each saved dataset item.
Small test runs are inexpensive because you can set maxItems and maxPostsPerProfile to low values.
For recurring monitoring, schedule smaller batches instead of one huge run if you need predictable spend.
Quick start
- Open the actor on Apify.
- Add one or more LinkedIn profile URLs or slugs.
- Set
maxPostsPerProfile. - Set
maxItemsfor a global safety cap. - Run the actor.
- Export the dataset as JSON, CSV, Excel, or via API.
Input examples
Use a public profile activity URL:
{"profileUrls": ["https://www.linkedin.com/in/satyanadella/recent-activity/all/"],"maxPostsPerProfile": 10,"maxItems": 10,"proxyCountryCode": "US"}
Use profile slugs:
{"profileUrls": ["satyanadella", "garyvaynerchuk", "simonsinek"],"maxPostsPerProfile": 10,"maxItems": 30}
Use individual post URLs:
{"profileUrls": [],"postUrls": ["https://www.linkedin.com/feed/update/urn:li:activity:1234567890/"],"maxItems": 1}
Input fields
profileUrls
Array of LinkedIn profile URLs, profile activity URLs, or slugs.
The actor normalizes each entry to the public recent activity page.
postUrls
Optional array of individual LinkedIn post URLs.
Use this when your system already captured post links.
maxPostsPerProfile
Maximum posts saved from each profile.
Start with 5-10 for testing.
maxItems
Global maximum number of rows saved by the run.
This protects budgets when you provide many sources.
proxyCountryCode
Residential proxy country code.
US is the safest default for public LinkedIn pages.
Output example
{"profileName": "Satya Nadella","profileSlug": "satyanadella","profileUrl": "https://www.linkedin.com/in/satyanadella/","postUrl": "https://www.linkedin.com/pulse/how-do-we-build-frontier-intelligence-ecosystem-satya-nadella-73jhc","postType": "Article","headline": "How do we build a frontier intelligence ecosystem?","datePublished": "2026-06-02T19:41:31.000+00:00","authorName": "Satya Nadella","likeCount": 2531,"sourceUrl": "https://www.linkedin.com/in/satyanadella/recent-activity/all/","scrapedAt": "2026-07-07T05:30:58.959Z"}
Tips for reliable runs
- Prefer public profile activity URLs when you have them.
- Use known public creator or executive profiles.
- Keep
maxPostsPerProfilemodest for recurring monitoring. - Split very large watchlists into multiple scheduled tasks.
- Expect some profiles to be unavailable or blocked by LinkedIn.
- Re-run later if a profile returns a temporary LinkedIn
999or429response.
Common workflows
Sales trigger monitoring
Monitor public posts from target executives and route new rows to a CRM or Slack.
Recruiting intelligence
Track public posts from candidates, hiring managers, or talent communities.
Influencer tracking
Build a recurring dataset of public LinkedIn posts by industry voices.
Founder and investor watchlists
Follow public posts from founders, investors, and operators relevant to a thesis.
Integrations
Use Apify integrations to send results to:
- Google Sheets for analyst review.
- Make or Zapier for CRM enrichment.
- Slack for public-post alerts.
- Webhooks for custom monitoring systems.
- Dataset API consumers in Python, Node.js, or BI tools.
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/linkedin-profile-posts-scraper').call({profileUrls: ['satyanadella'],maxPostsPerProfile: 10,maxItems: 10,});console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/linkedin-profile-posts-scraper').call(run_input={'profileUrls': ['satyanadella'],'maxPostsPerProfile': 10,'maxItems': 10,})print(run['defaultDatasetId'])
cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~linkedin-profile-posts-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"profileUrls":["satyanadella"],"maxPostsPerProfile":10,"maxItems":10}'
MCP usage
Connect Apify MCP at:
https://mcp.apify.com/?tools=automation-lab/linkedin-profile-posts-scraper
Claude Code setup:
$claude mcp add apify-linkedin-profile-posts https://mcp.apify.com/?tools=automation-lab/linkedin-profile-posts-scraper
Claude Desktop JSON config:
{"mcpServers": {"apify-linkedin-profile-posts": {"url": "https://mcp.apify.com/?tools=automation-lab/linkedin-profile-posts-scraper"}}}
Example prompts:
- "Run the LinkedIn Profile Posts Scraper for these five founder profiles."
- "Export the latest dataset rows as a summary of public buying signals."
- "Create a weekly task that monitors these LinkedIn profiles for new posts."
Scheduling
Create an Apify task with your profile watchlist.
Set a weekly or daily schedule depending on how often you need updates.
Use maxItems to control spend for each scheduled run.
Data quality notes
LinkedIn changes public page markup and access controls frequently.
Some rows may have a headline but no full text.
Some rows may have like counts but no comment counts.
Unavailable profiles are skipped so one blocked source does not fail the whole run.
FAQ and troubleshooting
Why did a profile return zero posts?
The profile may not expose public recent activity, LinkedIn may have returned a temporary block page, or the profile may require login.
Try another public profile, reduce batch size, or rerun later.
Why are some fields null?
The actor only returns values that are publicly present in LinkedIn structured page data.
Null values are expected when LinkedIn hides a metric or text field.
Do I need LinkedIn cookies?
No. This actor is designed for public, no-cookie extraction.
Legality and privacy
This actor extracts public web data only.
Do not use it to collect private LinkedIn account data, bypass access controls, or violate LinkedIn terms or applicable law.
You are responsible for ensuring your use case complies with local rules and platform policies.
Related scrapers
- https://apify.com/automation-lab/linkedin-profile-scraper
- https://apify.com/automation-lab/linkedin-company-posts-scraper
- https://apify.com/automation-lab/linkedin-post-scraper
- https://apify.com/automation-lab/linkedin-post-comments-reactions-scraper
Changelog
0.1
Initial private build for public LinkedIn profile post extraction.
Support
If a run fails, include the run ID, input JSON, and expected public profile URL when requesting help.