LinkedIn Profile Posts Scraper avatar

LinkedIn Profile Posts Scraper

Pricing

Pay per event

Go to Apify Store
LinkedIn Profile Posts Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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.

FieldDescription
profileNamePublic profile name when available
profileSlugLinkedIn profile slug
profileUrlNormalized profile URL
postUrlCanonical post or article URL
postUrnActivity URN when present in the URL
postTypeJSON-LD item type such as Article
textPublic post text when available
headlineHeadline or title
datePublishedPublished timestamp
dateModifiedModified timestamp when available
authorNameAuthor name
imageUrlPublic image URL when available
likeCountPublic like/reaction count when available
commentCountPublic comment count when available
sourceUrlInput URL that produced the row
scrapedAtExtraction 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

  1. Open the actor on Apify.
  2. Add one or more LinkedIn profile URLs or slugs.
  3. Set maxPostsPerProfile.
  4. Set maxItems for a global safety cap.
  5. Run the actor.
  6. 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 maxPostsPerProfile modest 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 999 or 429 response.

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 ApifyClient
client = 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.

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.