LinkedIn Post Scraper - $0.90 per 1,000, No Login
Pricing
from $0.90 / 1,000 validated public posts
LinkedIn Post Scraper - $0.90 per 1,000, No Login
Pull public posts from any LinkedIn profile: post text, title, author, image, publish time and the canonical post URL. No login, no cookies, no API key - public pages only. $0.90 per 1,000 posts plus $0.001 per run, and blocked or empty look-ups are never charged.
Pricing
from $0.90 / 1,000 validated public posts
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 hours ago
Last modified
Categories
Share
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}
| Field | Type | Default | Range / limit |
|---|---|---|---|
profileUrls | string list | [] | up to 20 public /in/ profile URLs per run |
postUrls | string list | [] | up to 100 direct public /posts/...activity-... URLs |
maxPostsPerProfile | integer | 10 | 1–25 post pages fetched per supplied profile |
maxPosts | integer | 25 | 1–100, overall cap across both inputs |
requestTimeoutSecs | integer | 20 | 5–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.
| Field | What it holds |
|---|---|
postUrl | canonical public post URL |
activityId | numeric LinkedIn activity id parsed from that URL |
sourceProfileUrl | the profile the post was discovered from, or null for direct post URLs |
authorPublicIdentifier | author slug taken from the canonical URL |
authorName | author name as published in the page title |
title | public og:title of the post page |
content | public post body as exposed to logged-out readers |
imageUrl | public post image, or null |
publishedAt | publication timestamp, when the page exposes one |
transport | direct_http |
retrievedAt | ISO timestamp of the fetch |
ok, sourceType, _sample | row-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 errorCode — BAD_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.