LinkedIn Posts Search Scraper
Pricing
from $2.80 / 1,000 results
LinkedIn Posts Search Scraper
Search public LinkedIn posts by keyword, phrase or hashtag, or paste post, profile and company links. Get full text, author, reactions, comments, date, hashtags, media and emails in the text as clean JSON. Bulk input, no account or cookies needed.
Pricing
from $2.80 / 1,000 results
Rating
0.0
(0)
Developer
Insights Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
๐งฒ What is LinkedIn Posts Search Scraper?
LinkedIn Posts Search Scraper helps sales teams, recruiters and marketers with LinkedIn lead generation, hiring signals and brand mentions: you enter keywords, phrases or hashtags (or post, profile and company links) and get the matching public posts with author, company details, reactions, comments, date and media. This LinkedIn posts scraper needs no LinkedIn account and no cookies. You can try it on the Apify Free plan with the $5 monthly credit, and Free-plan runs work the same as paid runs.
Use it to collect LinkedIn hiring posts, to find people who ask for a product like yours, or for social listening around your brand.
- ๐ฏ Find leads in conversations: collect posts where people ask for a tool, an agency or a freelancer. You get the author's company, industry, size and website when LinkedIn shows them publicly, plus any email or phone number the author wrote in the post.
- ๐ฃ Spot companies that are hiring: search
hiringwith a role and see who is posting openings in your market. - ๐ Track your brand: a daily search for your brand or product name gives you simple LinkedIn brand monitoring and LinkedIn social listening, with reactions and comments.
- ๐ฅ Watch competitors: paste competitor company pages for LinkedIn competitor analysis: what they post, which formats they use, and how much engagement each post gets.
- ๐ Learn from top creators: collect LinkedIn thought leadership posts in your niche and see which hooks and formats get reactions.
- ๐ค Build a LinkedIn posts dataset: get clean, structured JSON for analysis, dashboards or AI pipelines.
What can LinkedIn Posts Search Scraper do?
- ๐ Search public posts by keyword, exact phrase, alternatives with
OR, excluded words with-word, or hashtag. - ๐ Read pasted links: post links, bare post IDs, profile links (
/in/โฆ) and company links (/company/โฆ). - ๐๏ธ Filter by date (past hour, 24 hours, week or month) and sort by relevance or newest first.
- ๐ฅ Keep only popular posts with a minimum number of reactions.
- ๐ค Add author details such as company, location, industry, company size, website and followers, when LinkedIn shows them publicly.
- ๐ Pull contacts out of the text: emails, phone numbers and web links, when the author wrote them in the post.
- ๐๏ธ Get separate tables for authors, comments, mentions and contacts, filled while the run is going, plus an Inputs table with one status row per keyword or link, written when all inputs are done.
- ๐ Use the Apify platform: run it via API, schedule runs, and connect Slack, Make, Zapier or n8n.
๐ What LinkedIn posts data can LinkedIn Posts Search Scraper extract?
You get one row per post with these fields (names as in the dataset):
| Field | What you get |
|---|---|
๐ post_url | Link to the post |
๐ text | Full post text, plus word_count |
๐ activity_id, full_urn | LinkedIn post ID and URN |
๐ค author | name, type (person, company or school), public_id, profile_url, image_url, followers |
๐ข author details | company, location, country_code, connections, industry, company_size, headquarters, company_type, website, specialties, tagline, about (with Add author details on) |
โค๏ธ stats | total_reactions and comments |
๐๏ธ posted_at | display_text (age such as 5h or 2d), date (UTC) and timestamp |
๐ท๏ธ hashtags | Hashtags in the post text |
๐ผ๏ธ content | Attachment type (text, image, images, video, article, document or job) with title, link, images, video thumbnail and duration, article source, or job company and location |
๐ is_reshare, reshared_post | Whether the post reshares another one, with the original author, text and link |
๐ mentions | People and companies tagged in the post |
๐ง emails | Email addresses written in the post text |
โ๏ธ phones | Phone numbers written in the post text |
๐ links | Web links in the post text |
๐ฌ top_comments | Comments shown publicly under the post (author, text, date, likes) |
โน๏ธ metadata, search_input | Rank in the list of posts found, the time the run started (scraped_at, the same for every post in a run), and the keyword or link that found the post |
Note: author details come from public profile and company pages, and LinkedIn does not show every detail to visitors, so some author fields can be empty.
emails,phonesandlinksare filled only when the author typed them into the post. Most posts contain none, so expect empty lists for many rows. The Contacts table collects LinkedIn emails from posts only where an address was typed.
About
0counters: a public post page leaves out the reaction or comment counter when it is zero, and the Actor saves a missing counter as0. If you set Minimum reactions above 0, posts saved with0are skipped.
What data can't LinkedIn Posts Search Scraper extract?
- The author's headline, the reaction breakdown by type, share counts and numeric member IDs.
- The full comment list: only comments that LinkedIn shows publicly under the post.
- Private posts or posts that only logged-in members can see.
- Media files: you get image and video links, not downloads.
For full profile data such as headline, experience, education and skills, run the author links through LinkedIn Profile Extractor & Enricher (No Login Required).
๐ How to scrape LinkedIn posts
You don't need any coding or scraping experience.
- Create a free Apify account with your email.
- Open LinkedIn Posts Search Scraper and click Try for free.
- In Keywords or LinkedIn links, add one keyword or link per line, for example
hiring "marketing manager". - Pick Posted within and Posts per keyword or link, then click Start.
- Watch posts appear in the run's Output tab. When the run ends, export LinkedIn posts from the run's Storage tab: pick the table, then Export (CSV, Excel, JSON, XML or HTML).
You can start with the default input (hiring, 10 posts) to see the output before you add your own keywords.
What to type for hiring and lead searches
All words on one line must appear in the post (as whole words, upper or lower case). Quotes keep a phrase together. Copy one of these lines and change the words:
| You want | Type this line |
|---|---|
| ๐ฃ Marketing manager openings | hiring "marketing manager" |
| ๐ฃ Openings that mention a city | hiring developer London |
| ๐ฃ "We are hiring" posts for a role | "we are hiring" designer |
| ๐ฏ People asking for a tool, without job posts | "looking for" CRM -job |
| ๐ฏ People asking for an agency | "recommend an agency" |
โ ๏ธ The words are matched against the post text, the author name, the hashtags, the reshared text and the attachment title. A city such as
Londonmust be written in the post. It is not matched against the author's location. There is no job-title or location filter, so put these words into the keyword line.
๐ฒ LinkedIn posts scraper pricing: how much does it cost?
LinkedIn Posts Search Scraper uses pay-per-event pricing. Your bill has three parts:
- Saved posts: one charge for each post saved to the main Posts table. Keywords or links that save nothing cost nothing here. The Authors, Comments, Mentions, Contacts and Inputs tables are free.
- Start fee: a tiny fee each time a run starts, $0.00005 at the default memory.
- Platform usage: the compute your run uses, billed at your Apify plan's rates.
| Apify plan | Price per post | Price per 1,000 posts |
|---|---|---|
| ๐ Free | $0.004 | $4.00 |
| โญ Starter | $0.0036 | $3.60 |
| ๐ Scale | $0.0032 | $3.20 |
| ๐๏ธ Business and higher | $0.0028 | $2.80 |
The plan discount applies to the result price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.
For example, 1,000 saved posts cost $3.60 in result fees on the Starter plan, plus the start fee and platform usage. Platform usage depends on your keywords and settings, so check your real total with a small test run: after the run, open it in Apify Console, and the run page shows what it cost. See the pricing tab for the event list.
Overlapping keywords are charged once per keyword
Each keyword or link gets its own list of posts. If two of your lines find the same post, it is saved and charged once for each line (check search_input). For example, hiring and #hiring find largely the same posts, because the # sign is ignored when matching. With both lines and 10 posts each, you can pay for the same post twice. Pick keywords that don't overlap.
Is the LinkedIn posts scraper free?
You can try it on the Apify Free plan:
- Your $5 monthly credit pays for the post charges ($0.004 per post on Free) and the platform usage of your runs.
- Free-plan runs work the same as paid runs: Posts per keyword or link decides how many posts you get.
- Start with a small test run and set a maximum charge limit so you know what a run costs.
How do I control my spend?
Set a maximum charge limit in the run options before you click Start. When the limit is reached, the run stops, keeps every post saved so far, and its status says "Maximum charge limit reached."
โฌ๏ธ LinkedIn posts scraper input
The only required field is Keywords or LinkedIn links. Every other field has a default. Fill in the Console form, or send JSON via the API (the value names are shown in brackets).
Settings most people change
| Setting | What it does | Default |
|---|---|---|
๐ Keywords or LinkedIn links (urls) | Keywords, phrases, hashtags, or LinkedIn post, profile and company links, one per line | hiring (prefill) |
๐๏ธ Posted within (date_filter) | Any time (any), Past hour (past-1h), Past 24 hours (past-24h), Past week (past-week), Past month (past-month) | Any time |
๐งญ Sort posts by (sort_type) | Relevance (relevance) or Newest first (date_posted) | Relevance |
๐ข Posts per keyword or link (total_posts) | Posts to save for each line. 0 = everything that can be found | 10 |
๐ฅ Minimum reactions (min_reactions) | Keep only posts with at least this many reactions. 0 = no filter | 0 |
๐ค Add author details (enrich_authors) | Adds company, location, industry, size and website for each author when public. Turn it off for a faster run | On |
๐ก๏ธ Proxy (proxyConfiguration) | Optional. Leave as is unless you want to use your own proxy | Off |
Here's an example that finds this week's newest hiring posts:
{"urls": ["hiring"],"date_filter": "past-week","sort_type": "date_posted","total_posts": 10,"min_reactions": 0,"enrich_authors": true}
See the input tab for every field.
LinkedIn posts search syntax
Each keyword line is a LinkedIn posts search with a few simple rules:
- โ
"product launch": the exact phrase. - โ
"hiring" OR "growth": either one. WriteORin capital letters. - โ
marketing -crypto: posts with marketing but without crypto. - โ
#ai: posts that use the tag #ai or the word ai. The#sign is ignored when matching, so a hashtag line works like the same word typed without it. - โ
https://www.linkedin.com/search/results/content/?keywords=hiring: a LinkedIn search page is not a post, profile or company link, so it is treated as a plain keyword. Type the keyword instead.
Posts that don't match the line are skipped and not charged.
Company and profile links
Paste a company link (https://www.linkedin.com/company/microsoft) or a profile link (https://www.linkedin.com/in/โฆ) to get that author's recent public posts that can be found. That makes the Actor a LinkedIn company posts scraper for competitor pages and a LinkedIn profile posts scraper for people you follow. Post links (/posts/โฆ or /feed/update/โฆ) and bare post IDs return exactly that post. Links are not checked against keywords, but the date filter and minimum reactions still apply.
Choose a date range
Posted within gives you a LinkedIn post search by date. It keeps only posts published inside the range, for keywords and pasted links. A pasted post that is older than the range is skipped, so choose Any time when you paste specific posts.
โฌ๏ธ LinkedIn posts scraper output
Posts are saved the moment they are read, so you can watch them in the run's Output tab. The extra tables are in the same run, under its Output and Storage tabs. To download, use one path: open the run's Storage tab, pick the table, then Export.
Tables are separate lists. Only the first one is billed:
| Table | One row per |
|---|---|
| ๐ฐ Posts | Saved post (the only billed table) |
| ๐ค Authors table | Author seen in the run, with all public author details |
| ๐ฌ Comments table | Public comment under a saved post |
| ๐ Mentions table | Person or company tagged in a post |
| ๐ Contacts table | Email, phone number or web link found in post text |
| ๐งพ Inputs table | Keyword or link you entered: type, status, posts found, posts saved |
The run also saves a Run summary record (shown in the Output tab) with totals: posts saved and charged, inputs with problems, posts checked, skipped posts by reason, and whether your maximum charge limit was reached.
Views are column sets of the Posts table, not extra data: Posts, Author columns, Engagement (reactions, comments, age, word count and rank, useful for LinkedIn engagement analysis), Media & links, Contact columns and Reshares.
The status in the Inputs table means:
ok: posts were saved, but fewer than Posts per keyword or link, usually because no more matching posts were found.limit: the number you asked for was reached, or the run stopped at your maximum charge limit.empty: no matching posts were found. Try a broader keyword or a wider date range.error: the link is not a valid post link, or the profile or company page could not be read. Check the link.unreachable: LinkedIn could not be reached and nothing was saved for this input, so it has no post charges. Wait a while and run again. If it keeps happening, open an issue.
JSON example
One post from the input example above (shortened):
{"activity_id": "7519060723906301953","post_url": "https://www.linkedin.com/posts/beach-commute_57-hidden-remote-jobs-hiring-october-activity-7519060723906301953-UEuo","text": "Apply quickly!! Your odds of applying early increase your odds of getting an interview up to 8x!","full_urn": "urn:li:activity:7519060723906301953","author": {"name": "Beach Commute","type": "company","public_id": "beach-commute","profile_url": "https://www.linkedin.com/company/beach-commute","followers": 4232,"industry": "Professional Training and Coaching","company_size": "11-50 employees","website": "https://beachcommute.com"},"stats": { "total_reactions": 0, "comments": 0 },"posted_at": { "display_text": "5h", "date": "2026-10-22 15:42:53", "timestamp": 1792683773972 },"hashtags": [],"content": { "type": "article", "title": "57 Hidden remote jobs hiring October 22nd, 2026", "source": "Jeff Baker on LinkedIn" },"is_reshare": true,"reshared_post": { "author_name": "Jeff Baker", "author_url": "https://www.linkedin.com/in/find-remote-job" },"mentions": [],"emails": [],"phones": [],"links": [],"top_comments": [],"word_count": 17,"metadata": { "rank": 34, "scraped_at": "2026-10-22 21:07:24" },"search_input": "hiring"}
How to read this example:
- It matched
hiringthrough the attached article title. The post text itself does not contain the word. - It is a reshare, so
reshared_postnames the original author. rank: 34is its position in the list of posts found for the keyword. Several posts are read at a time, and some found posts don't pass the filters, so a saved post can have a rank above your Posts per keyword or link number. That is normal.0reactions and comments mean LinkedIn showed no counter on the public page.- The contact lists are empty because the post contains no email, phone or link.
๐ก Tips and advanced usage
How many posts can you get?
You get up to Posts per keyword or link posts for each line, so 3 keywords with 50 give up to 150 posts. The real number depends on how many public posts match, the date range and Minimum reactions. 0 does not mean unlimited: each run checks only a limited number of posts for each keyword or link. With a very strict filter, the run can stop before it reaches your number and says so in the log. You only pay for saved posts. To cap the cost, set a maximum charge limit.
Find LinkedIn viral posts with Minimum reactions
Set Minimum reactions to, for example, 100 and Sort posts by to Relevance. You keep only posts with real traction on your topic and can see which hooks, formats and hashtags work.
Get faster or cheaper runs
- Turn off Add author details when you only need the posts.
- Use a narrower date range and a lower Posts per keyword or link for a test run.
- Avoid overlapping keywords (see pricing).
Run it on a schedule for LinkedIn keyword monitoring
- Enter your brand, product or competitor names, or
hiringplus a role, in Keywords or LinkedIn links. Set Posted within to Past 24 hours and Sort posts by to Newest first. - Save the input as a task: on the Actor's input page in Apify Console, save it as a new task (or create one under Saved tasks).
- In Apify Console, open Schedules, create a schedule, add your task and run it daily (see Apify schedules).
- The Actor does not remember earlier runs. A post can show up in two daily runs, so expect some repeats and remove them in your sheet or database by
post_url(see the Google Sheets tip below).
๐ Integrations and API
Get a Slack message after each run
Open your task in Apify Console, go to the Integrations tab, choose Slack, connect your workspace and pick a channel. You get a message with a link to the run each time it finishes, so your team can check new brand or hiring posts every morning. This is the simplest way to set up LinkedIn post monitoring.
Send posts to a Google Sheet with Make or Zapier
Build a LinkedIn posts Google Sheets tracker with Make or Zapier: use the Apify "run finished" trigger, get the dataset items, and add each post as a row. Because daily runs can repeat posts, clean the sheet from time to time: select the sheet, open Data โ Data cleanup โ Remove duplicates and tick only the post_url column.
Use n8n
The Apify node is a simple way to scrape LinkedIn posts n8n workflows can reuse: add the node, choose this Actor, pass your keywords as input, and send the posts to your CRM, a database or an AI step that sorts leads from non-leads.
Can I use the LinkedIn posts scraper API from my own code?
Yes. With the Apify API you can use the Actor as a LinkedIn posts API: start runs, schedule them and fetch the results as JSON. Use apify-client for Node.js or Python, or copy ready-made code from the API tab. The snippet below is a short way to scrape LinkedIn posts Python scripts can run on a schedule:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("insights_data/posts-search-scraper-for-linkedin-no-cookies").call(run_input={"urls": ["hiring"],"date_filter": "past-week","sort_type": "date_posted","total_posts": 10,})for post in client.dataset(run["defaultDatasetId"]).iterate_items():print(post["post_url"], post["stats"]["total_reactions"])
In API input, other key names such as keyword, query, maxItems, datePosted and sortBy are also accepted. Filters by company, industry, job title or member (for example author_company_urns or author_job_title) need a LinkedIn login, so they are ignored with a warning in the log.
Can I use it with AI agents (MCP)?
Yes. Through the Apify MCP server you can add it as a LinkedIn scraper MCP tool in Claude and other AI assistants. Open the MCP tab for setup steps.
๐ Other LinkedIn scrapers and social listening tools
If you need a LinkedIn data scraper for jobs or profiles rather than posts, or the same kind of search on other networks, these Actors from the same developer can help:
- ๐ผ Advanced LinkedIn Job Search API: public LinkedIn jobs by search URL, job URL or title and location, with salary, seniority, applicants and full description.
- ๐ค LinkedIn Profile Extractor & Enricher (No Login Required): public profiles with headline, current role, experience, education and skills.
- ๐งต Search Threads By Keywords: Threads posts by keyword, #hashtag, phrase or @username.
- ๐ Facebook Post Scraper: public Facebook posts from pages, profiles, groups and post links.
- ๐๏ธ Google News Scraper: news by search term, topic or link, with date, country and language filters.
โ FAQ
Is it legal to scrape LinkedIn?
Collecting publicly available data is generally legal, but you are responsible for how you use it. Posts and author details can contain personal data, so you need a legitimate reason under laws such as the GDPR, and you should take LinkedIn's User Agreement into account. This is not legal advice; ask a lawyer for your use case.
How does LinkedIn Posts Search Scraper work?
This LinkedIn posts search scraper works like a visitor reading public LinkedIn posts, only faster. For each keyword it finds public posts, opens each one, checks your keyword, date range and minimum reactions, adds public author details, and saves the post. It never uses your LinkedIn account. Each keyword or link runs side by side with its own number of posts.
Can I run a LinkedIn scraper without login or cookies?
Yes. This is a LinkedIn post scraper no cookies are needed for: you don't paste a session cookie or log in anywhere. Like any LinkedIn post scraper that reads only public pages, it can't see posts that are visible only to logged-in members. Unlike a browser-extension LinkedIn post extractor, it runs in the cloud, so you can schedule it.
How is this different from LinkedIn post search?
LinkedIn post search on linkedin.com runs inside your own account and is made for reading, one screen at a time. This Actor gives you the posts as structured data in bulk, with author details and contacts pulled out, ready to filter, export or schedule.
Can I use it as a LinkedIn hashtag scraper?
Yes. Type the tag, for example #remotework. You get posts that use the tag or the same word, because the # sign is ignored when matching. For a stricter LinkedIn hashtag search, combine the tag with another word that must also appear, such as #remotework jobs.
Why scrape LinkedIn posts?
- Sales: find buying signals and companies to contact.
- Recruiting: follow hiring posts by role and city.
- Marketing: track brand mentions, campaign hashtags and competitors, and do LinkedIn content research on which posts get traction.
- Research: use the posts for LinkedIn market research and LinkedIn trend analysis.
Why am I getting fewer posts than expected?
- Only public posts that match your keyword and filters are returned. A narrow keyword, a short date range or a high minimum reactions gives fewer posts.
- The date filter also removes pasted post links that are older than the range.
- With very strict filters, the run can stop after checking its limit of posts (see Tips).
- Open the Inputs table: the
statusshows what happened for each keyword or link.
Why are some author fields empty?
LinkedIn shows only some details publicly, and it sometimes refuses author pages. The post is still saved with the details found on the post itself. For full profiles, use LinkedIn Profile Extractor & Enricher (No Login Required).
Can I filter by company, industry or job title?
Not directly, because those filters need a LinkedIn login. Put the words into the keyword line, such as hiring "software engineer", or paste company links. For job listings rather than posts, use Advanced LinkedIn Job Search API.
๐ง Support and feedback
Found a bug or want another field? Please create an issue on the Issues tab.
Need a custom solution or more data? Contact us at hello.insights.data@gmail.com.
Built and maintained by Insights Data.