LinkedIn Post Search Scraper avatar

LinkedIn Post Search Scraper

Pricing

from $0.47 / 1,000 posts

Go to Apify Store
LinkedIn Post Search Scraper

LinkedIn Post Search Scraper

LinkedIn post search scraper API: search posts by keyword and get one row per public post with its text, author, date, likes, comment count, pictures, video links and hashtags. Filter by date, author, mention or kind of post, and add each post's comments. $0.47 per 1,000 posts.

Pricing

from $0.47 / 1,000 posts

Rating

5.0

(2)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

1

Bookmarked

193

Total users

61

Monthly active users

2 hours ago

Last modified

Features

Limited permissions

Share

LinkedIn post search scraper: type keywords or a hashtag and get one row per public LinkedIn post that matches, with the text, author, date, likes, comment count, pictures and video links, plus the post's comments if you want them.

You give it what the posts should be about, one search per line. You can narrow it to a date window, to certain authors, to posts that mention a person or company, or to posts with pictures or a video.

It finds public posts only, as LinkedIn shows them to someone who is not signed in. A search that finds nothing comes back as a free row saying so, and you pay only for posts that come back.

InputKeywords or hashtags, one search per line; optional date window, authors, mentions, kind of post
OutputOne row per post: text, title, author with follower count, date, likes, comment count, pictures, video link and length, hashtags, links; comments on request
Ceiling20 searches per run, 500 posts per search
Account neededNone from you
Price$0.47 per 1,000 posts, the same rate on every plan. The free plan's $5 a month covers about 10,600
Using an AI agent?
Actordami_studio/linkedin-post-search-scraper
Set one fieldsearchQueries, labelled "Search keywords" in the Console
Cap the billmaxTotalChargeUsd on the run, for example 0.10: it never charges past that
MCP, one linkhttps://mcp.apify.com/?tools=fetch-actor-details,dami_studio/linkedin-post-search-scraper
How oftenMonthly with Posted within set to the past month, to follow a topic

🔍 What LinkedIn Post Search Scraper does

It searches the public web for LinkedIn posts about your keywords, then opens each post's own public page and writes down what is on it: the full text, the author and how many people follow them, when it was published, how many likes and comments it has, and its pictures, video or linked article.

Every post is checked before it is kept. It has to contain at least one of your words, fall inside your date window, come from one of your authors when you name some, and mention every name you list under Only posts that mention. A post that fails a check is dropped and not charged.

With Add comments on, each row also carries the comments the post's public page shows, up to 10, with the commenter's name, text, date and likes.

📋 What data you get from each LinkedIn post

What you getField
The postpostUrl, activityId, text, title
WhenpublishedAt
Reactionslikes, commentsCount
Media and linksmediaType, imageUrls, videoUrl, videoDuration, articleTitle, articleSubtitle, links, hashtags
Who wrote itauthorName, authorUrl, authorFollowers, authorImageUrl
Comments (paid add-on)comments (author, authorUrl, text, publishedAt, likes)
Which search found itsearchQuery, authorFilter, scrapedAt

▶️ How to scrape LinkedIn posts by keyword

  1. Open LinkedIn Post Search Scraper and click Try for free.
  2. Type your searches into Search keywords, one per line, such as generative ai or #remotework.
  3. Set Most posts per search and, if you like, Posted within, Only posts by these authors or Kind of post.
  4. Turn on Add comments if you need them, then click Start.
  5. Download the rows as JSON, CSV or Excel, or read them from the API.

Leave everything empty and you get one free sample row showing the shape of the output, with nothing searched.

💰 How much does it cost to scrape LinkedIn posts?

$0.47 per 1,000 posts, which is $0.00047 each, the same rate on every plan. On the free plan, the $5 Apify gives you each month covers about 10,600 posts.

Comments cost $0.56 per 1,000 comments, charged for each comment returned.

Free rows are never charged: a search that found nothing, an author entry that is not a LinkedIn link, the sample row, and the row that says the run stopped at your time or cost limit. A post found by two of your searches is returned once.

📥 What you give it

{
"searchQueries": ["generative ai", "#remotework"],
"maxPosts": 25,
"postedLimit": "month",
"sortBy": "date",
"contentType": "all",
"includeComments": false
}
FieldDefaultWhat it is
searchQueriesnone, the form starts with one exampleUp to 20 searches. A post must contain at least one of the words of its search.
maxPosts251 to 500 posts per search.
postedLimitanyany, month, 3months, 6months or year.
postedAfternoneA day as YYYY-MM-DD. When set, it replaces postedLimit. Any other format is refused before anything runs.
sortByrelevancerelevance or date (newest first).
authorUrlsnoneUp to 20 profile or company links, or profile names. With no keywords, you get these authors' posts.
mentioningnoneUp to 10 names or LinkedIn links; every one must appear in the post.
contentTypeallall, images, videos or text.
includeCommentsfalseAdds up to 10 comments per post. Paid per comment.

📤 What you get back

A real row from a run on 7 November 2026, searching alzheimer in one author's posts with comments on. The text and comments are cut short:

{
"ok": true,
"recordType": "post",
"searchQuery": "alzheimer",
"authorFilter": "williamhgates",
"postUrl": "https://www.linkedin.com/posts/williamhgates_my-family-and-i-will-always-be-grateful-to-activity-7135991146253602817-WQJ9",
"activityId": "7135991146253602817",
"authorName": "Bill Gates",
"authorUrl": "https://www.linkedin.com/in/williamhgates",
"authorFollowers": 40797981,
"text": "My family and I will always be grateful to the professional caregivers who helped my dad in the 13 years he lived with Alzheimer's disease…",
"publishedAt": "2023-11-30T14:01:09.556Z",
"likes": 2098,
"commentsCount": 142,
"mediaType": "video",
"videoDuration": "PT5M8S",
"hashtags": [],
"comments": [
{
"author": null,
"text": "To keep a natural native way of the elderly love and habitual practices…",
"publishedAt": "2023-11-30T15:06:06.768Z",
"likes": 5
}
],
"scrapedAt": "2026-11-07T17:45:24.445Z"
}
FieldRead it like this
publishedAtWhen the post was published, read from the post itself
mediaTypeimage, video or text
videoDurationLength as PT5M8S, five minutes eight seconds
comments[].authorEmpty when the post page shows the comment without a name
Picture and video linksLinkedIn's own links. They stop working after a while, so save the file if you need it

🧾 Reading the output

Every real row has ok: true and recordType: "post". Rows with ok: false are free notes with errorCode and error saying what happened:

errorCodeWhat happened
NO_RESULTSNo public post matched that search and its filters
BAD_INPUTAn author entry is not a LinkedIn link or name, or the date is not YYYY-MM-DD
TIME_LIMITThe run reached its time limit; notRun lists the searches it did not get to
COST_LIMITThe run reached the maximum cost you set; notRun lists the rest

An empty run returns one sample row with _sample: true. To keep only real posts, filter on ok being true. The Comments view lists one comment per line and the Notes view lists the free rows.

💡 What people use it for

  • Marketing teams following what people post about their product category, their brand or a campaign hashtag.
  • Sales teams finding people who post about a problem they solve, to start a conversation about something real.
  • Researchers and journalists collecting public posts on a topic over a date range.
  • Recruiters spotting posts about hiring in a field.

A simple chain: run a monthly search with Posted within set to month, then send rows with more than 50 likes to a sheet or a Slack channel.

🚧 What it does not do

  • No list of who liked a post.
  • No posts from private groups or only visible to someone's connections.
  • No e-mail addresses or phone numbers.
  • Nothing from inside a LinkedIn account: no messages, nothing only signed-in members see.
  • It is not an official LinkedIn tool. Dami's Studio is independent and is not affiliated with or endorsed by LinkedIn, or by any other company named on this page.

🧭 Which LinkedIn scraper do you need?

If you wantUse
Posts that match keywordsThis one
The posts a company page publishesLinkedIn Company Posts Scraper
A company's size, industry and headquartersLinkedIn Companies Scraper
Job listingsLinkedIn Jobs Scraper
The ads a company runsLinkedIn Ads Scraper
The comments on posts you already haveLinkedIn Comments Scraper
A person's posts and repostsLinkedIn Post Scraper

❓ Questions people ask

Do I need a LinkedIn account to search posts?

No. You don't need a LinkedIn account, a cookie or a login. The actor finds and reads public posts, the ones LinkedIn shows to anyone who opens the link.

Why did I get fewer posts than I asked for?

The run returns the public posts it can find that pass every one of your filters, up to your number. Narrow keywords, a short date window or a list of mentions give fewer rows. You pay only for the rows you get.

Why do the like and comment counts differ from what I see on LinkedIn?

They are counted at the moment the run reads the post, and they keep moving. Open the post in a private browser window to compare.

Can I call it from code or an AI assistant?

Yes. The API tab has ready-made calls, and AI assistants can use it through Apify's MCP server at https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/linkedin-post-search-scraper. In Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("dami_studio/linkedin-post-search-scraper").call(
run_input={"searchQueries": ["generative ai"], "maxPosts": 10, "postedLimit": "month"},
max_total_charge_usd=0.05,
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row.get("ok") is False:
continue
print(row["publishedAt"], row["authorName"], row["likes"])

The actor reads public posts the way a signed-out visitor sees them, with no account and nothing private. Posts and comments carry personal data, so GDPR and similar laws apply to what you keep and how you use it: keep only what you need, and mind the rules on contacting people. LinkedIn's own terms still apply to what you do with the data. Apify has a good write-up on the legality of web scraping. We are not lawyers, and this is not legal advice.

🆘 If something breaks

Open an issue on the actor's Issues tab. Include the run ID and the search that went wrong, and we will look at it.