LinkedIn Post Search ✅ NO COOKIES avatar

LinkedIn Post Search ✅ NO COOKIES

Pricing

from $1.60 / 1,000 post scrapeds

Go to Apify Store
LinkedIn Post Search ✅ NO COOKIES

LinkedIn Post Search ✅ NO COOKIES

Search LinkedIn posts by keyword: author, full text, engagement and date. Filter by date, media type, author headline or industry, or posts mentioning a company or person. No account or cookies needed. Add-ons return the author's profile, who reacted and who commented. Up to 500 posts per search.

Pricing

from $1.60 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Atomus APIs

Atomus APIs

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 hours ago

Last modified

Share

LinkedIn Post Search

LINKEDIN POST SEARCH  •  LINKEDIN POST SEARCH API

Find everyone talking
about your market.


Search LinkedIn posts by keyword and get the author, the full text, the engagement counts and the date for every match. Search several terms in one run. Narrow it by date, media type, the author's headline or industry, to posts written by specific people or companies, or to posts that mention one. Add the author's full profile or company record and turn a search into a lead list. No LinkedIn account, no login, no cookies, no ban risk.

CAP YOUR SPEND PER RUN  PART OF A FLEET THAT HAS DELIVERED 2.4M+ RESULTS 

Copy to your AI assistant

Paste this into ChatGPT, Claude, Cursor, or any LLM to start using this Actor right away.

atomus/linkedin-post-search is an Apify Actor that searches LinkedIn posts by keyword and returns them as structured JSON: post text, media, mentions, repost data, author details, and reaction/comment/share counts. Use it whenever someone needs to find LinkedIn posts ABOUT a topic rather than posts FROM a known account - market monitoring, brand mentions, finding people who are talking about a problem you solve, or building a lead list from a conversation. Run it with curl: curl -X POST "https://api.apify.com/v2/acts/atomus~linkedin-post-search/run-sync-get-dataset-items?token=APIFY_TOKEN" -H "Content-Type: application/json" -d '{"search":["ai agents"],"maxPosts":100,"postedLimit":"week"}'. Or in Python: ApifyClient("APIFY_TOKEN").actor("atomus/linkedin-post-search").call(run_input={"search":["ai agents"],"maxPosts":100}) then client.dataset(run["defaultDatasetId"]).list_items().items. Inputs: search (list of strings, required, max 20, each term is its own search, and a post found by two terms is delivered and billed once), maxPosts (int, 1-500, per term), postedLimit ("any"|"1h"|"24h"|"week"|"month"|"3months"|"6months"|"year"), postedAfter (string "YYYY-MM-DD", an exact cutoff date that takes precedence over postedLimit; the date is included, and posts older than it are neither delivered nor charged), contentType ("all"|"videos"|"images"|"documents"|"jobs"|"live_videos"|"collaborative_articles"), profile (list, posts BY these people: profile URL, handle or the author.linkedin_id from a previous run), company (list, posts by these company or showcase pages: URL, handle or numeric id), authorsCompany (list, posts by anyone who works at these companies), group (string, one LinkedIn group URL or id), authorKeywords (string, matched on the author headline), authorsIndustryId (the author's company industry, a dropdown of all 487 industries LinkedIn publishes in the form and their numeric IDs over the API, e.g. 4 Software Development, 96 IT Services and IT Consulting; full list at learn.microsoft.com/en-us/linkedin/shared/references/reference-tables/industry-codes-v2), mentioningCompany (list, company URL or handle), mentioningMember (list, profile URL or handle), and the paid add-ons includeAuthorDetails (bool), includeReactions (bool) with maxReactionsPerPost, includeComments (bool) with maxCommentsPerPost. Rows carry a "type" field: "post", "author_profile", "author_company", "reaction", "comment", "summary" or "error" - filter on it before exporting. Each post row carries author.type ("profile" or "company"), author.username and author.linkedin_id, which are the values the profile and company filters take, so a search can be narrowed to the authors a previous run found. Billing is one event per post returned; each unique author is billed once per run however many of their posts match; each search term that returns nothing bills a single lookup event. LinkedIn stops serving new results for a search at around 500 posts per term, whatever total it reports. Full input schema, every enum and default, and the complete output field list: GET https://api.apify.com/v2/acts/atomus~linkedin-post-search/build/default

LinkedIn MCP Server: use these Actors from ChatGPT, Claude or Cursor

Point your AI assistant at Atomus and it can read LinkedIn on its own: search posts by topic, then pull the profiles, reactions, comments, companies and employees behind them. No glue code, no scraping logic in your prompts.

{
"mcpServers": {
"atomus": {
"url": "https://mcp.apify.com?tools=atomus/linkedin-post-search,atomus/linkedin-posts-scraper-pro,atomus/linkedin-profile-scraper,atomus/linkedin-reactions-scraper-pro,atomus/linkedin-comments-scraper-pro,atomus/linkedin-company-scraper,atomus/linkedin-company-employees,atomus/leads-finder",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Then ask, in plain language:

"Find last week's LinkedIn posts complaining about CRM data quality, keep the ones written by heads of sales, and give me each author's company and headcount."

That one sentence is a search, a filter and an enrichment, and this Actor does all three. Pinning the tools= list is what keeps your assistant on these Actors instead of reaching for whatever scraper it finds first.


How to search LinkedIn posts

What is being said about a topic right now

{ "search": ["ai agents"], "postedLimit": "week", "maxPosts": 100 }

The past week's posts on a topic, ranked by LinkedIn's own relevance. This is the one to schedule daily.

Everything since a date you pick

{ "search": ["ai agents"], "postedAfter": "2026-09-01", "maxPosts": 200 }

When none of the fixed windows is the right shape, give an exact date instead. The date itself is included, and posts published before it are neither delivered nor charged.

Who is talking about a company

{ "search": ["crm"], "mentioningCompany": ["https://www.linkedin.com/company/salesforce/"], "maxPosts": 200 }

Brand monitoring rather than scraping: posts that mention a company, written by people who do not work there. No competitor exposes this well.

Find buyers by what they complain about

{
"search": ["spreadsheet chaos", "manual data entry"],
"authorKeywords": "head of operations",
"postedLimit": "month",
"includeAuthorDetails": true
}

The topic finds the pain, the headline filter keeps the seniority, and the add-on returns each author's full profile. A search becomes a lead list in one run. Two terms means two searches, and maxPosts applies to each of them.

Watch the accounts that matter

{
"search": ["hiring"],
"profile": ["https://www.linkedin.com/in/williamhgates", "satyanadella"],
"company": ["microsoft", "1035"],
"postedLimit": "month"
}

profile and company each take a profile or page URL, a plain handle, or the author.linkedin_id a previous run returned, so the natural loop is: search a topic once, keep the accounts worth watching, then run only those on a schedule. authorsCompany widens it from a company page to everyone who works there, and takes a company URL or company id (not a person's id).

Everyone who engaged with a conversation

{
"search": ["series a announcement"],
"postedLimit": "24h",
"maxPosts": 25,
"includeReactions": true,
"maxReactionsPerPost": 50,
"includeComments": true
}

The posts, plus the people behind every reaction and comment. Reactions are the warm list; comments carry the intent.

Only video posts, newest first

{ "search": ["product demo"], "contentType": "videos", "maxPosts": 50 }

Rows arrive newest first, whatever the window. The run picks how LinkedIn serves your term, so there is nothing to choose: every window is searched by relevance, which comes back full and covers the whole window, and the dates are put back in order before the rows are delivered. Measured 2026-09-07, postedLimit: "24h" returned 49 posts all published inside 24 hours, and postedLimit: "week" returned 49 spanning 125 hours. The one exception is postedLimit: "1h", served by LinkedIn's live feed instead, which returns 50 of 50 inside the hour where relevance returns 5.

Ordering the search itself by date does not reach further back: widening the filter shrinks the set if anything (week reported 125, month 111), so that ordering is a feed of what was just published rather than a chronological archive. That is why the run reads the whole window and orders the rows itself.

The ordering is applied per search term, so each term's posts are delivered together, newest first. Every term is short (about 6 seconds at the default 100 posts, about 30 at the 500 ceiling), and near the run timeout the rows are delivered as they arrive rather than held.


Input

FieldTypeDefaultWhat it does
searchlist of strings, required, max 20-The keywords, exactly as you would type them in the LinkedIn search box. Each term is its own search, and maxPosts applies to each. A post found by two terms is delivered and billed once.
maxPostsinteger 1 to 500100How many posts to return per term, at most.
postedLimitany | 1h | 24h | week | month | 3months | 6months | yearanyOnly posts published inside this window. Not used when postedAfter is set.
postedAfterdate, YYYY-MM-DD-Only posts published on or after this exact date, instead of a fixed window. The date itself is included, and posts older than it are neither delivered nor charged. Takes precedence over postedLimit.
contentTypeall | videos | images | documents | jobs | live_videos | collaborative_articlesallBiases the search towards one kind of post.
profilelist of strings-Only posts written by these people, as https://www.linkedin.com/in/williamhgates, williamhgates or the author.linkedin_id a previous run returned (ACoAAA8BYqEB...). All three resolve to the same author.
companylist of strings-Only posts published by these company pages, as https://www.linkedin.com/company/microsoft/, microsoft or 1035. Showcase pages work.
authorsCompanylist of strings-Only posts whose author works at one of these companies, as https://www.linkedin.com/company/microsoft/ or 1035.
groupstring-Only posts published inside one LinkedIn group, as https://www.linkedin.com/groups/12345/ or 12345. One group per run: extra values are ignored and the run says so.
authorKeywordsstring-Matched against the author's headline: founder, recruiter, head of data.
authorsIndustryIdlist of strings-The industry of the author's company. In the form it is a dropdown of all 487 industries LinkedIn publishes; over the API it takes their numeric IDs, for example 4 Software Development, 96 IT Services and IT Consulting, 6 Technology, Information and Internet, 43 Financial Services. Full list, published by LinkedIn.
mentioningCompanylist of strings-Only posts mentioning this company, as https://www.linkedin.com/company/microsoft/ or microsoft.
mentioningMemberlist of strings-Only posts mentioning this person, as https://www.linkedin.com/in/williamhgates or williamhgates.
includeAuthorDetailsbooleanfalsePaid add-on. The author's full profile, or company record for a company page.
includeReactionsbooleanfalsePaid add-on. Who reacted to each post.
maxReactionsPerPostinteger 1 to 1005Caps reactions per post.
includeCommentsbooleanfalsePaid add-on. Who commented on each post.
maxCommentsPerPostinteger 1 to 1005Caps comments per post.

Three things worth knowing before your first run, all of them measured rather than assumed:

  • The result window ends near 500 posts. LinkedIn keeps reporting a much bigger total, but stops serving new results well before it. maxPosts is capped at 500 for that reason: past it you would be paying for pages that come back empty.
  • contentType is a bias, not a hard filter. On 50 results per type, roughly 1 in 8 came back without that media. Expect a few extras rather than a clean set.
  • A term LinkedIn does not recognise does not return nothing. It falls back to loosely related posts. If your results look off-topic, the term is what to change, not the filters.

What data does the LinkedIn Post Search return?

Every row carries a type field, because one run can produce several shapes. Filter on it before you export.

typeWhen it appearsWhat it carries
postAlwaysThe post and its author.
author_profileincludeAuthorDetails, person authorThe full person record: role, experience, education, skills, location, links.
author_companyincludeAuthorDetails, company authorThe company record: industry, headcount, revenue band, funding, HQ, technologies.
reactionincludeReactionsOne person who reacted, and which reaction.
commentincludeCommentsOne comment, its text, its author and its date.
summaryAn add-on lookup found nothingSays which lookup was empty, so a billed line is never a mystery.
errorBad input or a free-tier stopA plain-language explanation.

A post row, trimmed to show the shape:

{
"type": "post",
"post_type": "video",
"author_name": "Satya Nadella",
"content": "No one becomes a clinician to do paperwork...",
"post_url": "https://www.linkedin.com/posts/satyanadella_activity-7302346926123798528",
"posted_at": "2026-03-15",
"posted_ago": "3d",
"is_repost": false,
"images": [],
"video_url": "https://dms.licdn.com/playlist/vid/...",
"article": null,
"doc": null,
"mentions": [{ "start": 42, "length": 9, "type": "COMPANY", "url": "https://www.linkedin.com/company/microsoft/", "name": "Microsoft" }],
"share_url": "https://www.linkedin.com/feed/update/urn:li:activity:7302346926123798528",
"engagement": { "total_reactions": 1240, "comments": 87, "shares": 33, "reactions": [{ "type": "LIKE", "count": 900 }] },
"author": {
"name": "Satya Nadella",
"type": "profile",
"username": "satyanadella",
"headline": "Chairman and CEO at Microsoft",
"linkedinUrl": "https://www.linkedin.com/in/satyanadella/",
"avatar": "https://media.licdn.com/dms/image/v2/...",
"linkedin_id": "ACoAAAF...",
"website_url": null,
"website_label": null
},
"reposted_by": null,
"_metadata": { "post_id": "urn:li:activity:7302346926123798528", "extracted_at": "2026-09-06T18:00:00.000Z", "search_term": "ai agents" }
}

post_type is derived from the post itself, not guessed from the text: document, video, poll, article, image or text. A document post that also carries cover images is still a document. One honest limitation: a job post carries no media at all, so it comes back as text even when contentType: "jobs" found it.

Join the add-on rows to the posts on the author handle: author_slug on an author_profile or author_company row matches author.username on the post rows, and post_id on a reaction or comment row matches _metadata.post_id. Both handles are lowercased, so the join works whatever case LinkedIn spells the profile with.

author.type is profile for a person and company for a company or showcase page, and it tells you where the handle goes back in: a profile handle into "Posts by these people", a company handle into "Posts by these companies". That is the loop this actor is built for: search broadly, keep the authors worth watching, then search only them.


How much does it cost to search LinkedIn posts?

Pay per event, and the price drops on the higher Apify plans. Check the Actor's pricing tab for the exact figure on your plan.

What you getEvent
A postpost-scraped
An author's full profileprofile-enriched
An author's company recordcompany-enriched
One person who reactedreaction-scraped
One commentcomment-scraped
A search term that returned nothingempty-search

Three rules that decide what your bill actually looks like:

  • Each author is billed once per run, however many of their posts come back and across every search term in that run. A topic is usually dominated by a handful of accounts, so this is the difference between paying per author and paying per post.
  • A lookup that finds nothing still bills one item. A search request, or a reactions lookup on a post with no reactions, does the same work whether it comes back full or empty. That single item covers the request, which is what keeps thin results worth running instead of being refused outright. Lookups that fail are free.
  • The free tier gives you 20 chargeable events a month so you can inspect every field before paying. Any paid Apify plan removes it.

What do people use the LinkedIn Post Search for?

  • Market and topic monitoring: schedule a daily run on the terms your market uses and read what changed, instead of scrolling a feed an algorithm chose for you.
  • Brand and competitor mentions: mentioningCompany returns posts about a company written by people outside it. That is the conversation your competitor cannot see either.
  • Sales prospecting from intent: people describing a problem in public are the warmest inbound there is. Search the problem, filter the headline, enrich the author, export the list.
  • Recruiting: find who is posting about a technology or discipline, then pull their profile in the same run.
  • Content research: see what actually got engagement on a topic before writing your own post, with the reaction and comment counts attached.
  • Building a warm audience: the reactions and comments add-ons turn one high-engagement post into a list of people who already care about the subject.
  • Feeding an AI agent: the MCP section above wires this into ChatGPT or Claude so the search, the filter and the enrichment happen in one prompt.

LinkedIn Post Search vs cookie-based tools vs the official LinkedIn API

This ActorCookie or browser toolsOfficial LinkedIn API
LinkedIn account neededNoYes, and it is the one at riskYes, plus partner approval
Search posts by keywordYesYes, until the session breaksNo. Post search is not exposed
Ban riskNone, nothing runs as youReal, this is the whole risk modelNone
Author enrichmentBuilt in, one lookup per authorAnother tool, another sessionNot available
Runs unattendedYesOnly while the cookie livesYes
SetupPaste a keywordExtract a session cookie, refresh it foreverAn approval process measured in weeks

The official API is the honest comparison to make: it is the safest option and it simply does not offer this. Keyword search over public posts is not a LinkedIn API product, at any tier.

🏆 Top LinkedIn Scrapers

Profile Scraper
Any profile URL to 72 structured fields, no cookies
Posts Scraper
Text, media and engagement from any profile or company
Post Search  YOU ARE HERE 
Reactions Scraper
Every person who reacted to a post, with their headline
Comments Scraper
Comments and nested replies, with reaction counts
Company Scraper
Headcount, industry, HQ, tech stack and IT spend of a company
Company Employees Scraper
Every employee of a company, filterable by seniority and department

FAQ

Can I search for posts from a specific person or company? Yes. profile takes people, company takes company and showcase pages, and authorsCompany takes everyone who works somewhere. All three take a list, and profile and company accept a URL, a plain handle, or the author.linkedin_id a previous run returned. authorsCompany names the employer, so it takes a company URL or company id. Combine any of them with a search term to ask "what did these accounts say about this topic".

One limit worth knowing: filtering the search by author returns fewer posts per account than reading their feed directly. When you want everything one account posted, LinkedIn Posts Scraper is the Actor for that.

Can I use this from ChatGPT or Claude? Yes. The LinkedIn MCP Server section above is the whole setup: paste the JSON into your assistant's config and ask in plain language. Pin the tools= list so it stays on these Actors.

Why did I get fewer results than the total LinkedIn reported? Two reasons, both measured. The reported total always runs a little ahead of what actually arrives: a term reporting 457 delivered 443, and one reporting 110 delivered 100. And LinkedIn serves a search in pages of 50 and stops at 10 pages, so 500 is the ceiling however big the total looks. The run stops at the first empty page rather than paying for the rest.

My results look unrelated to my search term. Is it broken? No, and this one surprises everyone: LinkedIn does not return an empty result for a term it does not recognise. It falls back to loosely related posts. Change the term, not the filters.

Do I pay for a search that finds nothing? One empty-search event for each term that comes back empty. The request costs the same whether it comes back full or empty, and a run with five terms makes five requests. A term that delivered posts is never also charged the floor, and a run that fails outright bills nothing.

Are reposts included? Yes, all of them, and every row tells you which is which: is_repost is true for a repost, and reposted_by names who shared it when LinkedIn says. Filtering your export to originals only is one column away.

Does the author add-on work for company pages too? Yes. A person author returns an author_profile row, a company page returns an author_company row with industry, headcount, revenue band and funding. Both are billed once per author per run.

Do I need a LinkedIn account or cookies? No. Nothing runs as you, so there is nothing to get restricted.

All Atomus scrapers

2.4M+ RESULTS DELIVERED

LinkedInProfile · Posts · Post search · Reactions · Comments · Company · Employees
Lead genLeads Finder
Google MapsPlaces & local businesses
TikTokVideos · Comments
X (Twitter)Tweets & profiles
RedNote 小红书Notes, users & comments
Douyin 抖音Profiles, videos & comments
Weibo 微博Posts & profiles
Bilibili 哔哩哔哩Videos & creators

Support

Hey, I'm Chico, founder of Atomus. I built this Actor and I answer the messages about it. Something broke? A field you need isn't there? Not sure it fits what you're doing? Send me a message, most answers come the same day.

💬  DM me on LinkedIn    or hello@dendelabs.com

⚠️ Disclaimer

This Actor collects only publicly available LinkedIn posts, the kind anyone can see without logging in. It does not log into any account, use cookies, or access private or connection-only content. You are responsible for using the output in line with LinkedIn's terms and with the data-protection law that applies to you, including GDPR and CCPA where relevant.