LinkedIn Posts Scraper [$0.99πŸ’° No Cookies] Profile + Companies avatar

LinkedIn Posts Scraper [$0.99πŸ’° No Cookies] Profile + Companies

Pricing

from $0.99 / 1,000 results

Go to Apify Store
LinkedIn Posts Scraper [$0.99πŸ’° No Cookies] Profile + Companies

LinkedIn Posts Scraper [$0.99πŸ’° No Cookies] Profile + Companies

[Only $0.99πŸ’°] Track any LinkedIn creator or company's posts β€” no login, no cookies. Get text, author, reactions with types, comment counts and media, plus a unique 0–100 engagement-quality score and a monitoring mode that returns only new posts on a schedule. Profiles, companies, post URLs

Pricing

from $0.99 / 1,000 results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

LinkedIn Posts Scraper (No Cookies)

How It Works

Turn any LinkedIn profile URL, company URL, post URL, or activity id into clean, structured post rows β€” no LinkedIn account, no cookie, no login. Each post comes back as one tidy row: post text, author (name + profile + headline + photo), reactions (with types), comment counts, media, post type β€” plus an exact post date you can filter by range and a 0–100 engagement-quality score nobody else surfaces. Add monitoring mode to get only-new posts on a schedule. JSON or CSV out.

Why Use This Scraper?

  • βœ… Cookie-free β€” no LinkedIn login, no account, nothing to paste
  • βœ… Clean structured rows β€” 18 fields per post, ready for a spreadsheet or a model
  • βœ… Author included β€” name, profile URL, headline, and photo on every post
  • βœ… Engagement β€” reaction count, reaction types (LIKE/EMPATHY/PRAISE/…), and comment count
  • βœ… Engagement-quality score β€” a 0–100 score + tier (viral / high / solid / low / quiet) computed from reactions, comment ratio, and reaction depth β€” rank posts at a glance
  • βœ… Date-range filter β€” dateFrom / dateTo keep only posts published in a window; dates are derived from the post id, so out-of-range posts are skipped before fetching (you don't pay for them)
  • βœ… Monitoring mode β€” schedule it and get only new posts each run (de-dupes against what it already returned)
  • βœ… Company posts too β€” paste a company URL for its recent posts
  • βœ… Flexible input β€” profile URLs, company URLs, post URLs, or raw activity ids
  • βœ… Cheap to run β€” built to use the lightest egress tier first

Overview

The LinkedIn Posts Scraper is built for marketers, founders, researchers, and analysts who need a quick, structured pull of someone's recent LinkedIn posts without managing logins or accounts.

The output is post-shaped rows β€” one row per post.

  • Paste a post URL or activity id β†’ you get that post. Works for any public post.
  • Paste a profile URL β†’ you get that person's recent public posts β€” but only for profiles that expose their activity publicly (creators, influencers, and active public posters). Many regular profiles keep their post feed behind login; cookie-free, those return no posts, and you'd pass the individual post URLs instead.
  • Paste a company URL β†’ you get that company's ~12–15 most recent posts (a small share of company posts are partially login-gated and may come back with engagement but truncated text).

The author (name, profile, headline, photo) and engagement counts ride along on every row.

This is the lightweight, cookie-free option. It reads only LinkedIn's public surfaces, so it's honest about its limits (below) rather than pretending to do everything. If you need unlimited post history, full comment threads, company feeds, or keyword search, those require logged-in scraping β€” out of scope here by design.

Supported Inputs

Input typePatternExample
Profile URLhttps://www.linkedin.com/in/{slug}https://www.linkedin.com/in/williamhgates
Company URLhttps://www.linkedin.com/company/{slug}https://www.linkedin.com/company/microsoft
Post URL.../feed/update/urn:li:activity:{id} or .../posts/...-activity-{id}-{hash}https://www.linkedin.com/feed/update/urn:li:activity:7469496437156925441
Activity id / URN{id} or urn:li:activity:{id}7469496437156925441

Copy-pasteable startUrls

{
"startUrls": [
"https://www.linkedin.com/in/williamhgates",
"https://www.linkedin.com/feed/update/urn:li:activity:7469496437156925441",
"7468855929338310656"
]
}

Unsupported inputs

  • ❌ Keyword / content search β€” requires a logged-in session
  • ❌ Person search or connection data
  • ❌ Any host outside linkedin.com

Use Cases

AudienceUse case
Marketers / ghostwritersPull a creator's recent posts to study format, hooks, and engagement
Founders / salesWatch a prospect's or competitor's recent posts for timely outreach angles
Researchers / analystsBulk-export public posts from a list of profiles for content analysis
Social teamsTrack a roster of voices and benchmark reactions/comments over time

How It Works

How It Works

  1. Input β€” provide LinkedIn profile URLs, post URLs, or activity ids
  2. List posts β€” for a profile, the actor reads its public page and collects up to ~15 recent post ids
  3. Fetch each post β€” it pulls each post's public embed widget (a small ~24 KB page), cookie-free
  4. Structure β€” author, text, engagement counts, media, and type are parsed into one clean row
  5. Output β€” export as JSON or CSV

Input Configuration

FieldTypeRequiredNotes
startUrlsarray<string>yesProfile URLs, post URLs, or activity ids/URNs
maxPostsPerProfileintegeroptionalPosts to pull per profile. LinkedIn's cookie-free limit is 15, so higher values are capped. Default 15
maxItemsintegeroptionalHard cap on total post rows. Default 1000
maxConcurrencyintegeroptionalParallel requests. Default 3
maxRequestRetriesintegeroptionalRetries per request before giving up. Default 2
dateFromstringoptionalKeep only posts published on/after this date (YYYY-MM-DD). Derived from the post id, so filtering happens before fetch.
dateTostringoptionalKeep only posts published on/before this date (YYYY-MM-DD, inclusive).
onlyNewPostsbooleanoptionalMonitoring mode. Remembers the posts it has already returned and, on each re-run, emits only posts it hasn't seen before β€” so a schedule pays only for genuinely new content. Default false
dedupeStoreNamestringoptionalMonitoring only: the named storage holding the "already-seen" ids. Give each independent monitor its own name (e.g. seen-microsoft). Default linkedin-posts-seen
sdoKeystring (secret)optionalLeave blank β€” built-in egress is used by default. Advanced: paste your own scrape.do token to bill unblocker usage to your own account

Example input

{
"startUrls": ["https://www.linkedin.com/in/williamhgates"],
"maxPostsPerProfile": 10,
"maxConcurrency": 3
}

Output Overview

Each dataset item is one post:

  • Identity β€” urn, activityId, postUrl
  • Content β€” postText, postType (article / video / image / text), mediaUrl, articleUrl (for published LinkedIn articles)
  • Author β€” author.name, author.profileUrl, author.headline, author.image, author.isInfluencer
  • Engagement β€” reactions, comments (counts), reactionTypes (e.g. ["LIKE","EMPATHY","PRAISE"])
  • Engagement score β€” engagement.score (0–100), engagement.tier (viral/high/solid/low/quiet), engagement.total, engagement.commentRatio, engagement.reactionDepth
  • Meta β€” postedAt (exact ISO date, derived from the activity id), postedRelative (e.g. "1d", "3w"), sourceProfile, scrapedAt

Output Sample

Profile start (linkedin.com/in/williamhgates)

{
"urn": "urn:li:activity:7469496437156925441",
"activityId": "7469496437156925441",
"postUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7469496437156925441",
"postText": "Alzheimer's research has historically faced problems with scale: not enough people diagnosed early enough…",
"postType": "article",
"author": {
"name": "Bill Gates",
"profileUrl": "https://www.linkedin.com/in/williamhgates",
"headline": "Chair, Gates Foundation and Founder, Breakthrough Energy"
},
"reactions": 5332,
"comments": 692,
"reactionTypes": ["LIKE", "EMPATHY", "PRAISE", "INTEREST"],
"engagement": {
"total": 6024,
"commentRatio": 0.11,
"reactionDepth": 3,
"score": 71,
"tier": "high"
},
"mediaUrl": "https://dms.licdn.com/playlist/vid/v2/…",
"postedRelative": "1d",
"postedAt": "2026-06-08T14:20:11.000Z",
"sourceProfile": "https://www.linkedin.com/in/williamhgates",
"scrapedAt": "2026-06-09T16:32:00.000Z"
}

Key Output Fields

Post

  • urn, activityId, postUrl, postText, postType, mediaUrl, postedAt, postedRelative

Author

  • author.name, author.profileUrl, author.headline

Engagement

  • reactions, comments (counts), reactionTypes
  • engagement.score (0–100), engagement.tier (viral / high / solid / low / quiet), plus the raw total, commentRatio, and reactionDepth inputs

FAQ

No. This actor reads only LinkedIn's public surfaces, so you provide nothing but the URLs.

Why did a profile return 0 posts?

Cookie-free, LinkedIn only exposes a profile's post feed publicly for creator / influencer-style profiles (and people who've made their activity public). Many regular profiles keep their feed behind login, so they come back empty. Post URLs and activity ids always work for any public post β€” so for those profiles, pass the individual post links directly.

How many posts do I get per profile?

For profiles that do expose activity, up to about 15 most-recent posts β€” LinkedIn's hard cap for cookie-free access (no deeper pagination without login).

Do I get the comment text?

No β€” you get the comment count, not the comment bodies. Comment threads and reaction lists are only available to logged-in sessions, which this actor deliberately doesn't use.

Can I scrape company pages?

Yes β€” paste a company URL (linkedin.com/company/{name}) and you get its ~12–15 most recent posts. A small share of company posts are partially login-gated; those rows come back with engagement counts but truncated text.

Can I search by keyword?

No. Content search is login-walled. This actor is profile-, company-, and post-level only.

Is the posted date exact?

Yes. postedAt is an exact ISO timestamp derived from the post's activity id β€” LinkedIn encodes the creation time in the id itself, so you get a precise date cookie-free. postedRelative ("1d", "3w") is included too, as LinkedIn displays it. Use dateFrom / dateTo to keep only posts published in a date range β€” they're filtered before fetching, so out-of-range posts cost nothing.

What if a profile or post is private?

Only publicly visible posts are returned. Private/connections-only content is out of scope.

What is the engagement score?

A transparent 0–100 quality score computed per post from public signals only β€” no extra requests, no guessing. It blends three things: volume (reactions + comments, log-scaled so a 5k-reaction post isn't 100Γ— a 50-reaction one), comment ratio (comments are higher-effort than reactions, so a real conversation scores higher), and reaction depth (how many reaction types beyond a plain LIKE β€” praise/empathy/insightful/funny/support signal stronger sentiment). The score maps to a tier: viral (80+), high (60+), solid (40+), low (20+), quiet (<20). The raw inputs (total, commentRatio, reactionDepth) ride along so you can re-rank with your own weights.

How do I monitor a profile or company for new posts?

Turn on onlyNewPosts and put the actor on an Apify Schedule (e.g. every 6 hours). On each run it remembers the post ids it already returned (in a named storage) and emits only posts it hasn't seen before β€” so your dataset and your bill only grow with genuinely new content. Running several independent monitors? Give each its own dedupeStoreName (e.g. seen-microsoft, seen-billgates) so they don't share state. A monitoring run that finds nothing new simply returns 0 rows β€” that's the expected "all quiet" result, not an error.

Support

Additional Services

Need deeper LinkedIn data (full comments, reactions lists, company feeds, search)? That requires a logged-in approach β€” email muhamed.didovic@gmail.com to discuss a custom build.

Explore More Scrapers


⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or Microsoft Corporation. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available LinkedIn pages β€” no authenticated endpoints, no login, and no content behind LinkedIn's login wall. Users are responsible for ensuring their use complies with LinkedIn's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization. Scrape responsibly and respect the rights of the individuals whose public posts you collect.


SEO Keywords

linkedin posts scraper, scrape linkedin posts, linkedin post scraper, linkedin scraper no cookies, cookie-free linkedin scraper, linkedin profile posts, linkedin activity scraper, linkedin post data, linkedin content scraper, linkedin engagement data, linkedin engagement score, linkedin post monitoring, linkedin new posts alert, linkedin post tracker, social media scraper, linkedin api alternative, linkedin posts export, linkedin author data, linkedin post extractor, Apify linkedin, linkedin marketing data, creator content analysis, linkedin posts json, linkedin posts csv