Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
LinkedIn Profile Posts Scraper icon

LinkedIn Profile Posts Scraper

LinkedIn profile posts scraper at $0.90 per 1,000 posts, flat on every plan. Post text, author, image, publish time and URL.

37 runs on Apify $0.0009 per validated public post ($0.9 / 1,000)
Run this in the cloudRun on Apify →

Social Media Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust profileUrls, postUrls, maxPostsPerProfile (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0009 per validated public post = $0.9 per 1,000

You are charged forWhenPrice
Validated public postA canonical public LinkedIn post row written to the dataset.$0.0009
Actor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).$0.001

Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-04, and they are what you are actually charged.

Inputs

FieldWhat it doesType
profileUrlsPublic /in/ profile URLs. The actor reads only public post links that LinkedIn includes in that profile response.array
postUrlsOptional direct public /posts/...activity-... URLs. This does not discover or access private posts.array
maxPostsPerProfileBounded number of public post pages to fetch from each supplied public profile.integer
maxPostsOverall cap for direct post URLs and post links discovered from profiles.integer
requestTimeoutSecsTimeout for each public LinkedIn page request.integer

What you get

A structured dataset — each result includes fields like:

authorNamecontentpostUrlactivityIdtransport

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Social Media Scrapers

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

LinkedIn Company Posts Scraper iconSocial Media Scrapers

LinkedIn Company Posts Scraper

LinkedIn company posts scraper at $0.90 per 1,000 posts plus a $0.001 run start. Public post text, reactions, comments and URLs. No login or cookies needed.

Ready to run — no setup

LinkedIn Post Comments Scraper iconSocial Media Scrapers

LinkedIn Post Comments Scraper

Scrape public LinkedIn post comments: author name, profile URL, reaction count. No login or cookie. Up to 10 per post.

Ready to run — no setup

RedNote Scraper iconSocial Media Scrapers

RedNote Scraper

Scrape public RedNote (Xiaohongshu) notes: description, author, likes, collects, comments, shares and images.

Ready to run — no setup

RedNote (Xiaohongshu) Profile Scraper iconSocial Media Scrapers

RedNote (Xiaohongshu) Profile Scraper

RedNote (Xiaohongshu) profile scraper API. Nickname, RedNote ID, follower counts, likes and collects, verification, IP location, gender and recent notes.

Ready to run — no setup

Douyin Hot Search Scraper iconSocial Media Scrapers

Douyin Hot Search Scraper

Scrape Douyin trending topics: rank, hot value, views, video count, badge and cover image from the hot and society boards. No login.

Ready to run — no setup

Facebook Comments Scraper iconSocial Media Scrapers

Facebook Comments Scraper

Scrape comments from any public Facebook post or reel: author, text, date, likes, replies. No login or cookies.

Ready to run — no setup

See all Social Media Scrapers →

LinkedIn Profile Posts Scraper

Extract only public LinkedIn posts that LinkedIn itself exposes through supplied public profile or post URLs. This actor does not use a login, cookies, private endpoints, residential proxies, contact enrichment, profile search, or data behind a sign-in wall.

Pricing

$0.90 per 1,000 posts ($0.0009 each), plus $0.001 each time a run starts. Flat rate — no volume tiers, no plan gates — and you are charged only for posts actually returned.

A post event is charged only after a validated genuine row has been written to the dataset. Samples, diagnostics, duplicates, blocked look-ups and no-result runs never incur the per-result fee — a run that returns nothing costs only the $0.001 start fee.

Input

{
  "profileUrls": ["https://www.linkedin.com/in/reidhoffman/"],
  "postUrls": [],
  "maxPostsPerProfile": 10,
  "maxPosts": 25,
  "requestTimeoutSecs": 20
}
FieldTypeDefaultRange / limit
profileUrlsstring list[]up to 20 public /in/ profile URLs per run
postUrlsstring list[]up to 100 direct public /posts/...activity-... URLs
maxPostsPerProfileinteger101–25 post pages fetched per supplied profile
maxPostsinteger251–100, overall cap across both inputs
requestTimeoutSecsinteger205–60 seconds per page request

profileUrls must be public https://www.linkedin.com/in/<identifier>/ pages. The actor only follows matching public /posts/...activity-... links present in each returned profile page. postUrls is optional, for exact public post pages. The two inputs can be combined in a single run: direct URLs and profile-discovered URLs are de-duplicated by activity id before anything is fetched, so the same post is never fetched — or charged — twice.

Output

Each genuine row is verified against a matching canonical public post page before it is written or charged.

FieldWhat it holds
postUrlcanonical public post URL
activityIdnumeric LinkedIn activity id parsed from that URL
sourceProfileUrlthe profile the post was discovered from, or null for direct post URLs
authorPublicIdentifierauthor slug taken from the canonical URL
authorNameauthor name as published in the page title
titlepublic og:title of the post page
contentpublic post body as exposed to logged-out readers
imageUrlpublic post image, or null
publishedAtpublication timestamp, when the page exposes one
transportdirect_http
retrievedAtISO timestamp of the fetch
ok, sourceType, _samplerow-type markers, so genuine rows can be filtered in one pass

A row is emitted only when the canonical URL matches the requested activity id and the page exposes public title or body text. Pages that redirect, block, rate-limit, omit public post links, or expose no matching canonical metadata return an uncharged diagnostic row carrying a machine-readable errorCodeBAD_INPUT, BLOCKED, RATE_LIMITED, SERVER_ERROR, NETWORK or NO_RESULTS — plus the URL that failed and a short reason. The actor does not infer missing content or author data. Reaction and comment counts are not returned: LinkedIn does not expose them to logged-out requests, so they are not promised here.

Proxy policy

The actor uses direct HTTP only. It never starts residential or SERP proxy traffic, so there is no bandwidth surcharge sitting behind the per-post price. Public profile discovery can be blocked by LinkedIn's cloud IP controls; when that happens, supply exact public postUrls instead, or take the free diagnostic row. No proxy fallback is attempted.

Empty input

Empty input returns exactly one clearly labelled _sample: true row without making any LinkedIn request. It is always uncharged, so you can inspect the exact output shape before spending anything.