LinkedIn Jobs Search Scraper API - Filters That Hold
Pricing
from $1.50 / 1,000 job (full posting)s
LinkedIn Jobs Search Scraper API - Filters That Hold
Search LinkedIn jobs by keyword, location, date, company and type. Full description, seniority, applicants, exact posted date. Seniority and job type re-checked on the posting. No login.
Pricing
from $1.50 / 1,000 job (full posting)s
Rating
0.0
(0)
Developer
Blackcube
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
| LinkedIn Public Data Suite • 11 Actors, one codebase, one row billed once | ||
| LinkedIn Scraper API Jobs, Companies, Posts, Articles | LinkedIn Jobs Search Scraper API ➤ You are here | LinkedIn Job Details Scraper API By URL or Job ID |
| LinkedIn Company Jobs Scraper API Open Jobs by Company | LinkedIn New Jobs Scraper API Last 24 Hours, Change-Only | LinkedIn Company Scraper API Exact Employees, Followers |
| LinkedIn Company Posts Scraper API Newest Posts, Exact Counts | LinkedIn Post Scraper API Text, Exact Counts, Top Comments | LinkedIn Pulse Article Scraper API Full Text, Author |
| LinkedIn Profile Scraper API Public Profiles, Exact Followers | LinkedIn Profile Posts Scraper API A Person's Recent Posts | |
More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · Shopify Store Intelligence Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted · Trustpilot Review Intelligence Suite · App Store & Google Play Reviews Suite · Business Reviews Suite · Amazon Product Data Suite · Google Sheets Suite · TikTok Suite · Snapchat Suite · Instagram Suite · Contact Validation Suite
The LinkedIn suite
- LinkedIn Scraper API — every public LinkedIn surface in one dataset
- LinkedIn Job Details Scraper API — job links or ids in, the full posting out
- LinkedIn Company Scraper API — company slugs or URLs in, exact counts and every office out
- LinkedIn Company Posts Scraper API — the newest posts on a company page with exact reaction and comment counts
- LinkedIn Post Scraper API — post share links in, the full post and its visible comments out
- LinkedIn Pulse Article Scraper API — Pulse article links in, full text and exact engagement out
- LinkedIn Company Jobs Scraper API — company pages in, their open jobs out, id resolved for you
- LinkedIn New Jobs Scraper API — put a search on a daily schedule and pay only for postings you have not seen
- LinkedIn Profile Scraper API — public profiles with experience, education and exact follower counts — about 7 in 10 are shown, the rest are free
- LinkedIn Profile Posts Scraper API — a person's recent public posts, each read in full with exact counts
Search LinkedIn jobs by keyword and location and get every posting in full, with filters that are re-checked on the posting itself. No login, no cookies, no proxy to configure — it reads the pages LinkedIn shows to anyone. Failures are free: a closed job, a missing page or a page only members can see costs nothing and returns a row saying which.
Exact numbers, not display numbers. LinkedIn's page says "3M followers" or "10,001+ employees"; the rows carry 2,789,187 and 232,762.
Quick start
- Press Start — the defaults are a working run.
- Replace them with your own keywords and locations, or paste a LinkedIn jobs search URL with its filters into LinkedIn URLs.
- Take the dataset as JSON, CSV or Excel, or via the API. Every row has a
type; the freecoveragerow says what was asked for and what arrived.
What people use it for
- Hiring-market intelligence. Which companies are hiring for which roles, where, at what seniority, and since when — with the full posting text for a keyword or an LLM pipeline.
- Lead lists from job postings. A company hiring three data engineers is a company buying data tooling this quarter. Turn searches into a list of companies, then add their company pages in the same run.
- Job-board and alert products. Put searches on a schedule with Monitor on and receive only postings you have not seen, with the exact posted date.
- Feeding an AI agent or workflow. One flat schema, a
typeon every row, and a free coverage row that says what was asked for and what arrived.
What the rows look like
A job row
{"type": "job","id": "4370823981","url": "https://www.linkedin.com/jobs/view/sr-data-engineer-at-accenture-federal-services-4370823981","title": "Sr. Data Engineer","companyName": "Accenture Federal Services","company": { "name": "Accenture Federal Services", "url": "https://www.linkedin.com/company/accenturefederalservices", "slug": "accenturefederalservices" },"location": "Washington, DC","postedAt": "2026-08-26","applicants": { "count": 200, "text": "Over 200 applicants", "isEarly": false },"salary": { "text": "$116,900—$243,100", "min": 116900, "max": 243100, "currency": "USD", "period": null, "source": "description" },"seniorityLevel": "Mid-Senior level","employmentType": "Full-time","jobFunction": "Information Technology","industries": ["IT Services and IT Consulting"],"description": { "text": "At Accenture Federal Services, nothing matters more than ...", "html": "<p>At Accenture Federal Services, ...</p>" },"searchQuery": "data engineer | United States"}
postedAt is the exact date from LinkedIn's listing, not a "1 week ago" estimate. salary is filled only when the posting states one (source says whether it came from a salary element or the description text). applicants.count is null when LinkedIn only says "Be among the first 25 applicants".
What it costs
| You pay for | Price |
|---|---|
| Each job found by a search, delivered with its full posting | $1.50 per 1,000 jobs |
| Each job delivered as a listing card only ("Read the full posting" off) | $0.50 per 1,000 jobs |
| Each keyword-and-location search that delivered something (never more than 250 a run) | $2.00 per 1,000 searches |
| Each company page delivered (once per company, never per job) | $4.00 per 1,000 companies |
Free, always: a job that has closed, a company, post or article that does not exist, a page LinkedIn only shows to signed-in members, a malformed URL, every error row, the coverage row and the run summary, a job skipped by your title filters or id list, and a posting whose stated seniority or job type does not match the filter you set. A run that reads nothing costs nothing.
On a one-off run a search is billed only when it delivered at least one job. With Monitor on, every search LinkedIn answered is billed, because that check is the work you scheduled — so a day with no new postings costs $2.00 per 1,000 searches and nothing else. A query LinkedIn cannot match (it returns unrelated "similar" jobs) is detected, delivers nothing and costs nothing. Searches never count against your result cap.
Set Cost ceiling (USD) to stop any run before it passes a number you choose; the free summary row reports what the run actually spent.
Limits, stated plainly
LinkedIn shows its search results (people, companies, content), employee lists, reaction lists and Sales Navigator only to signed-in members, and serves member profiles to visitors only at its own discretion (measured 2026-09-02 from Apify's own exits: 35 of 50 ordinary profiles, and the refused ones stay refused). This Actor reads public pages only and never signs in, so it sells none of those — and says so here rather than on your invoice.
LinkedIn's public job search stops at about 1,000 results per query and applies its experience-level and workplace filters inconsistently; seniority and job type are re-checked on the posting, workplace is not.
The external "Apply" link and the hiring team are behind LinkedIn's sign-in and are not sold. Salary is delivered when the posting states it.
Use it from n8n, MCP, the API or a schedule
Built to be called by a workflow, not only from the Store form. The Actor is vonsensey/linkedin-jobs-search-scraper-api; every snippet below sends {}, which runs the defaults shown on the form — replace it with your own input.
n8n
Install the Apify community node (@apify/n8n-nodes-apify under Settings → Community Nodes, or search "Apify" on n8n Cloud). Add Apify → Run Actor with Actor vonsensey/linkedin-jobs-search-scraper-api and your input JSON, then Apify → Get Dataset Items on the run's defaultDatasetId and pipe the rows anywhere. For scheduled runs, the On new Apify Event trigger fires when a run of this Actor finishes.
MCP (Claude, Cursor, VS Code, any MCP client)
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=vonsensey/linkedin-jobs-search-scraper-api","headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
Your agent then calls vonsensey/linkedin-jobs-search-scraper-api as a tool with the same input the form takes and reads the dataset back.
REST API (one call, rows in the response)
curl -X POST "https://api.apify.com/v2/acts/vonsensey~linkedin-jobs-search-scraper-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" -d '{}'
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("vonsensey/linkedin-jobs-search-scraper-api").call(run_input={})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('vonsensey/linkedin-jobs-search-scraper-api').call({});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Make, Zapier, LangChain, CrewAI
The Apify app in Make and Zapier has a Run an Actor module: pick vonsensey/linkedin-jobs-search-scraper-api. In LangChain and CrewAI the Apify tool wrappers take the same Actor id. A daily schedule needs nothing but the Console: Schedules → Create → this Actor → cron, and the dataset fills on its own.
Use cases
- Hiring-market intelligence. Which companies are hiring for which roles, where, at what seniority and since when — with the complete posting as clean text and as HTML, ready for a keyword pass or an LLM.
- Lead lists from job postings. A company hiring three data engineers is a company buying data tooling this quarter. Turn searches into a list of companies, then add their company pages in the same run — charged once per distinct company, never per job.
- Job-board and alert products. Put searches on a daily schedule with change-only billing and receive only postings you have not seen, each with the exact posted date from the listing card.
- Account research and TAM sizing. Exact member and follower counts, every office address, industry, size band, founding year, specialties and the numeric organisation id for a list of company slugs or URLs.
- Brand and competitor monitoring. What a company page and its people are posting, and how each post performs — exact reaction and comment counts on posts, profile posts and Pulse articles.
Run it on a schedule
A one-off pull answers a question; a schedule answers it every day without you. Open Schedules in the Apify Console, point a cron at this Actor, and the dataset keeps filling on its own — no server, no cron box, no babysitting. Everything here is built to be re-run: you are billed per row delivered, and the FAQ below says exactly what a scheduled run that finds nothing new costs.
FAQ
Do I need a LinkedIn login, cookies or a proxy?
No. Every listing in this suite reads the pages LinkedIn shows to anyone without an account, and it never signs in, never sends a cookie and never uses a session. Everything is handled for you and there is nothing to buy on top.
Which LinkedIn surfaces are deliberately not sold here?
Search results for people, companies and content, employee lists, reaction lists, Sales Navigator, the external Apply link and the hiring team. LinkedIn shows those only to signed-in members, so no listing in this suite promises them — said here rather than discovered on your invoice.
Will every public profile come back?
No, and the price reflects it. LinkedIn serves member profiles to signed-out visitors at its own discretion — about 7 in 10 ordinary profiles on a measurement taken 2026-09-02 from Apify's own exits, and the ones it declines stay declined. A profile it refuses costs nothing and returns a free row saying so; you are charged only for profiles actually delivered.
Do the job filters actually work?
The date window, job type, Easy Apply, under-10-applicants and company filters change LinkedIn's results reliably. Since LinkedIn's August 2026 search change its experience-level and workplace filters are applied on some queries and ignored on others, so seniority and job type are re-checked against what the posting itself states and a posting that does not match is neither delivered nor billed. Workplace is passed straight to LinkedIn and is not re-checked, because the public posting carries no structured workplace field.
How many jobs can one search return?
LinkedIn's public search stops at about 1,000 results per query. To go deeper, add locations, split keywords or use a shorter date window — each combination is its own search with its own 1,000.
How many comments and posts do I get?
A public post page shows about ten comments and a company page about ten of its newest posts; the exact reaction and comment totals are always on the row. The full history and the list of everyone who reacted need a signed-in session, which this Actor does not use.
What does a scheduled search cost on a day with no new jobs?
One job-search charge per search that actually returned listings, and nothing else. Job ids already delivered for a search are remembered for 60 days and never billed again, a search that came back empty is never charged, and a company, post or article whose numbers have not moved comes back as a free unchanged row.
What happens to a job that closed or a page that does not exist?
It costs nothing. You get a free row saying which — closed, not found, or only visible to members — and the run keeps going. "All of these have closed" is a correct answer, not a failure, so the run still succeeds.
Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.