LinkedIn Post Scraper Without Cookies: Posts, Search avatar

LinkedIn Post Scraper Without Cookies: Posts, Search

Pricing

from $1.50 / 1,000 posts

Go to Apify Store
LinkedIn Post Scraper Without Cookies: Posts, Search

LinkedIn Post Scraper Without Cookies: Posts, Search

Scrape public LinkedIn posts from profiles, companies, post URLs and keyword search. No login, no cookies, no ban risk. Pay per post.

Pricing

from $1.50 / 1,000 posts

Rating

0.0

(0)

Developer

Vnx0

Vnx0

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

LinkedIn post scraper without cookies

Scrape public LinkedIn posts from profiles, company pages, exact post URLs and keyword searches. You get clean JSON rows with the text, author, date, engagement counts, images and guest-visible comments. No login, no li_at cookie, no LinkedIn account on your side, so there is nothing for LinkedIn to restrict.

Paste a URL, run, and the prefilled example finishes in under a minute.

What you get

Each run returns one row per post: full text, author name and profile link, publish date (ISO plus timestamp), like / comment / share counts, images, hashtags, and the comments LinkedIn shows to logged-out visitors. Every row carries _metadata with the LinkedIn post id, the input URL that produced it, and the extraction time.

Things this actor does not do: it never asks for your cookies, never logs in anywhere, and never returns null fields. If LinkedIn exposes a value, it is in the row. If not, the field is left out. Sources that cannot be read (private posts, deleted posts, rate-limited pages) come back as typed error rows such as blocked_999 or no_post_json, and those rows are free.

How to run it

  1. Open the actor page and click Run.
  2. Paste LinkedIn URLs into LinkedIn URLs, or use the dedicated fields for profiles, companies, exact posts and keyword searches.
  3. Leave Posts per source at 2 for a first try. That costs less than a cent.
  4. Click Start and open the Dataset tab. Rows stream in while the run is still going.
{
"urls": [
"https://www.linkedin.com/posts/williamhgates_the-road-ahead-reaches-a-turning-point-in-activity-7142740845631365120-Mx61",
"https://www.linkedin.com/company/microsoft"
],
"limitPerSource": 10,
"numComments": 10
}

Track a competitor's company page

{
"companyUrls": ["https://www.linkedin.com/company/openai"],
"limitPerSource": 20,
"scrapeUntil": "2026-01-01"
}

Follow what founders publish

{
"profileUrls": ["satyanadella", "https://www.linkedin.com/in/williamhgates/"],
"limitPerSource": 10
}

Find posts about a topic

{
"searchQueries": ["artificial intelligence hiring"],
"limitPerSource": 10
}

Put the last recipe on a schedule and you have a basic monitoring feed: new posts land in the dataset on every run, and a webhook can forward them anywhere.

Input reference

FieldWhat it does
urlsMixed LinkedIn URLs: posts, profiles, companies, post-search pages.
profileUrlsProfile pages (/in/...) or bare usernames.
companyUrlsCompany pages (/company/...) or bare slugs.
postUrlsExact post, feed-update or article URLs.
searchQueriesKeywords resolved to public post-search pages. Works best with residential proxy, see Limits.
limitPerSourceMax posts per profile, company or search source (default 2, max 100). Direct post URLs always return one row.
scrapeUntilISO date. Older posts are skipped and never billed.
deepScrapeAdds engagement, media, hashtags and comments. Turn off for text-only rows at full speed.
numComments / numLikesComment bodies and liker context where guest-visible. 0 means counts only.
rawDataAttaches fetch debug data for troubleshooting.
hybridWeightsRequest share per backend, default {"api": 0.8, "browser": 0.2}. The API backend is cheap HTTP; the browser backend is a Playwright fallback for rate-limited pages.
proxyConfigurationApify Proxy, RESIDENTIAL recommended. Proxy cost comes out of event revenue, so you only ever see the per-post price.

Output example

One row per post, trimmed for readability:

{
"postId": "7142740845631365120",
"url": "https://www.linkedin.com/posts/williamhgates_the-road-ahead-reaches-a-turning-point-in-activity-7142740845631365120-Mx61",
"text": "The road ahead reaches a turning point in...",
"authorName": "Bill Gates",
"authorType": "Person",
"authorProfileUrl": "https://www.linkedin.com/in/williamhgates/",
"postedAtISO": "2024-03-19T12:00:00.000Z",
"postedAtTimestamp": 1710849600000,
"numLikes": 4440,
"numComments": 367,
"hashtags": [],
"images": [],
"comments": [],
"_metadata": {
"post_id": "7142740845631365120",
"source_url": "https://www.linkedin.com/posts/williamhgates_...",
"extracted_at": "2026-09-09T14:42:44.000Z"
}
}

The dataset schema tab lists all 43 fields with types.

Pricing

One billed event: a post row in your dataset. Error rows are free. Spending limits stop the run automatically.

Posts scrapedFREE / BRONZESILVERGOLD and up
100$0.20$0.175$0.15
1,000$2.00$1.75$1.50
10,000$20.00$17.50$15.00

That is $0.002 per post on FREE and BRONZE, $0.00175 on SILVER, $0.0015 on GOLD, PLATINUM and DIAMOND, plus a $0.00005 run-start event. The Pricing tab shows the live configuration.

How it compares

This actorMulti-actor suitesCookie tools (PhantomBuster etc.)Official LinkedIn API
Login or li_at cookieNever neededNever neededRequired, your accountPartner approval, OAuth
Ban riskNone, no account involvedNoneHigh, your account gets restrictedNone
Posts, profiles, companies, search in one runYesNo, one actor per jobVariesOnly pages you own
Price per post$0.002, single event$0.002 plus extra events per enrichmentSubscription or rentalGated
Empty or failed sourcesFree error rowsPartly billedVariesNot applicable
Null-free outputYesNoVariesNot applicable

Paste this into your AI assistant

ChatGPT, Claude, Cursor or any LLM can call this actor if you give it this block:

vnx0/linkedin-post-scraper-without-cookies is an Apify Actor that scrapes
public LinkedIn posts without login or cookies and returns one flat JSON row
per post: text, author, ISO date, like/comment/share counts, images, hashtags,
guest-visible comments, plus _metadata with post_id, source_url and
extracted_at. Run with curl: curl -X POST
"https://api.apify.com/v2/acts/vnx0~linkedin-post-scraper-without-cookies/run-sync-get-dataset-items?token=APIFY_TOKEN"
-H "Content-Type: application/json" -d '{"urls":["<LINKEDIN_URL>"],"limitPerSource":10}'.
Or Python: ApifyClient("APIFY_TOKEN").actor("vnx0/linkedin-post-scraper-without-cookies").call(
run_input={"urls":[...],"limitPerSource":10}) then read the default dataset.
Inputs: urls (mixed), profileUrls, companyUrls, postUrls, searchQueries,
limitPerSource (default 2), scrapeUntil (ISO date), deepScrape, numComments,
numLikes, rawData, hybridWeights, proxyConfiguration. One post row is one
billed event; error rows (blocked_999, no_post_json,
search_requires_login_guest) are free. Full input and output schemas:
GET https://api.apify.com/v2/acts/vnx0~linkedin-post-scraper-without-cookies/build/default

FAQ

Do I need a LinkedIn account or cookies to use this?

No. The actor only opens public pages, the same HTML LinkedIn serves to a logged-out visitor. You never paste a session cookie and no account is ever involved.

Will LinkedIn ban my account if I scrape posts?

There is no account to ban here. Cookie tools get people banned because every request carries their session. This actor sends no session at all, so a restriction has nothing to attach to. Your personal LinkedIn stays untouched.

Scraping publicly visible pages without logging in sits in the safe harbor of the hiQ Labs v. LinkedIn ruling: the US Ninth Circuit held that accessing public LinkedIn pages does not violate the CFAA. That covers the collection side. What you do with the data still has to comply with privacy law (GDPR and CCPA treat names and headlines as personal data) and LinkedIn's terms, so aggregate and analyze rather than republishing full post text verbatim. This actor is independent and not affiliated with LinkedIn.

Is there a free way to try it?

Yes. Apify's free tier includes monthly platform credit, and the prefilled example run costs less than a cent. Error rows are never billed, so experimenting with URLs is free in practice.

Can I call it from Python, n8n, or my own code?

Yes. It is a normal Apify actor, so anything that can POST JSON works: the Apify Python or JS client, a curl call, n8n's HTTP node, Make, Zapier, or a scheduled run with a webhook pushing results out. The block above has copy-paste snippets for curl and Python.

How do I get the results into CSV or Google Sheets?

Open the run's dataset and export CSV or Excel directly, or connect the actor to Sheets through Make, Zapier, or Apify webhooks. Rows are flat, so they drop into a spreadsheet without transformation.

Does it work for company pages?

Yes. Put the company URL in companyUrls and you get recent posts with text, dates, engagement and media. Company pages render well for guests, so they are the most reliable source type.

Can I get comments and the names of people who reacted without logging in?

Counts, always. Comment text and liker details only where LinkedIn shows them to logged-out visitors, which varies by post. Full comment threads and reactor lists are rendered for logged-in users only, so any tool that promises them is using an account (with the ban risk that brings).

How much does it cost to scrape 1,000 LinkedIn posts?

$2.00 on the FREE and BRONZE plans, $1.75 on SILVER, $1.50 on GOLD and above. 100 posts cost $0.20. Set a spending limit and the run stops by itself when it reaches it.

Why did my run return error rows instead of posts?

Three usual causes: the post is private or deleted, LinkedIn rate-limited the fetch (HTTP 999, common for profiles from datacenter IPs), or guest search hit the login wall. Each case returns a typed error code with an explanation instead of failing the run. Retrying later or switching on the residential proxy clears most of them.

Can I watch company pages for new posts every few hours?

Yes. Save the company URLs, set a small limitPerSource, and put the run on an Apify schedule. Each scheduled run appends fresh posts to a dataset, and a webhook forwards them to Slack, email, or your database. For hundreds of companies, keep the per-source limit low so each sweep stays cheap.

Those tools drive your real LinkedIn session, which is exactly what gets accounts restricted, and sessions expire every few days so you end up babysitting cookies. This actor has no session to expire and no account to lose. The tradeoff is honest: it can only read what LinkedIn shows to strangers.

Why not just use the official LinkedIn API?

The Posts API sits behind a Marketing Developer Platform partnership and covers pages you own. If you need public posts from arbitrary profiles and company pages without an approval process, a no-cookie scraper is the shorter path.

Limits

Guest access only, by design. Full comment threads, reactor identity lists, viewer counts and private posts need a logged-in session, which this actor will never use. LinkedIn rate-limits guests in waves (HTTP 999), mostly on profiles; the actor retries, fails over to a browser backend, throttles itself, and degrades to typed error rows rather than failing the run. Keyword search depends on guest search visibility, so residential proxy is strongly recommended for it. Output reflects whatever LinkedIn publicly exposes at run time, which differs by post, region and author.

Support

Open an issue on the actor page for bugs or field requests. Issues get answered within 24 hours, and real fixes land in the changelog below.

Disclaimer

Independent tool, not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. Use extracted data in compliance with applicable data protection laws and LinkedIn's terms of service. Do not use it for spam, harassment, or unlawful purposes.