LinkedIn Job Scraper | Job Search API, Counts & Autocomplete
Pricing
from $0.45 / 1,000 job listings
LinkedIn Job Scraper | Job Search API, Counts & Autocomplete
Search LinkedIn jobs with no login and no cookies. Get listings with the total results count, full job details with salary and applicants, plus title, company and location autocomplete for precise filters. Pay per row delivered: no start fee, filters run at the source.
Pricing
from $0.45 / 1,000 job listings
Rating
0.0
(0)
Developer
John
Maintained by CommunityActor stats
1
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
LinkedIn Job Scraper
Search LinkedIn jobs with no account, no login, and no cookies. This LinkedIn job scraper reads LinkedIn's public guest pages, so it needs nothing from you but a query: search job listings with filters and get the total results count, scrape full job details from any job URL, and pull the same autocomplete suggestions the LinkedIn search box shows. It doubles as a LinkedIn job search API: every mode returns clean JSON you can read over the Apify API, export to CSV or Excel, or wire into an AI agent over MCP.
What this actor returns
- Job listings from a keyword plus location search: job title, company name and LinkedIn page, location, posted date, and the canonical job URL, one row per unique job.
- The total results count, free with every search: LinkedIn's own caption such as
7,000+ Semiconductor Engineering Jobs in United States, both verbatim and parsed to a number with a capped flag. - Full job records from job URLs or ids: complete description (text and HTML), seniority level, employment type, job function, industries, applicant count, salary when published, similar jobs, and the people-also-viewed list.
- Typeahead suggestions: job titles, companies with the numeric ids the company filter takes, and locations with their
geoIdvalues for precision targeting. - Honest filters only: date posted, company, Easy Apply, and under-10-applicants filters run at the source, before billing. Filters LinkedIn's guest search does not reliably honor are not exposed at all.
Use cases
- Job market monitoring: run a daily search for a title and territory, use the free results-count row to track demand over time, and dedupe listings across runs by jobId.
- Recruiting intelligence: watch a competitor's openings by filtering to their company id, including roles with fewer than 10 applicants.
- Lead generation: turn fresh postings into signals; a company hiring semiconductor process engineers this week is buying tooling next quarter.
- Job board enrichment: feed job URLs into the job mode to hydrate your board with descriptions, salary, and applicant counts.
- AI agents: give an agent search, detail, and autocomplete tools over MCP; the suggestion modes return the exact ids that make follow-up searches precise.
Input parameters
| Field | Required | Default | What it does |
|---|---|---|---|
search_mode | yes | search | One of search, job, autocomplete, companySuggestions, locationSuggestions. |
keywords | search | - | What to search for, for example semiconductor engineer. |
location | search | - | Free-text place, for example United States or Philadelphia, PA. |
geoId | no | - | LinkedIn geo id from the locationSuggestions mode; use together with location. |
datePosted | no | any | past24h, pastWeek, or pastMonth. |
companyIds | no | [] | Numeric company ids from the companySuggestions mode; multiple ids combine as OR. |
easyApplyOnly | no | false | Only jobs with LinkedIn Easy Apply. |
under10Applicants | no | false | Only jobs with fewer than 10 applicants. |
jobUrls | job | - | linkedin.com/jobs/view/ URLs or bare numeric ids; duplicates of the same job collapse into one billed row. |
query | suggestions | - | The text to complete, for example semic. |
maxItems | no | 100 | Cap on billable rows. Free rows never count. |
Example output
A jobListing row from the search mode:
{"resultType": "jobListing","jobId": "4451264908","jobTitle": "Silicon Design Engineer","companyName": "AMD","companyLinkedinUrl": "https://www.linkedin.com/company/amd","location": "Austin, TX","jobUrl": "https://www.linkedin.com/jobs/view/silicon-design-engineer-at-amd-4451264908","postedDate": "2026-08-24","postedText": "3 days ago","position": 1,"searchKeywords": "semiconductor engineering","searchLocation": "United States","viaResidentialProxy": false,"fetchedAt": "2026-08-27T23:04:11Z"}
And the free searchMeta row that precedes it:
{"resultType": "searchMeta","searchKeywords": "semiconductor engineering","searchLocation": "United States","datePosted": "pastWeek","resultsCountCaption": "7,000+ Semiconductor Engineering Jobs in United States","resultsCountParsed": 7000,"resultsCountIsCapped": true,"searchUrl": "https://www.linkedin.com/jobs/search?keywords=semiconductor+engineering&location=United+States&f_TPR=r604800"}
A job row from the job mode adds the full description, seniorityLevel, employmentType, jobFunction, industries, numApplicants, parsed salary fields, similarJobs, peopleAlsoViewed, and similarSearches.
Pricing
Pay per event, only for delivered rows. No start fee, no minimum.
| Event | When it is charged | Price |
|---|---|---|
| Job listing | per unique job returned by a search | $0.0005 |
| Full job record | per successfully scraped job page | $0.002 |
| Suggestion row | per typeahead suggestion returned | $0.0001 |
| Residential fallback | only on the rare row that needed the residential proxy | $0.0008 |
The searchMeta row and any error rows are always free, and filtered or duplicate jobs are never billed. A typical 100-listing search costs about $0.05; hydrating those 100 jobs with full details costs about $0.20 more.
How to get started
- View on Apify Store and press Run.
- Pick a mode, enter keywords and a location (the defaults run a real search out of the box), and start the run.
- Read rows from the dataset tab, or export as JSON, CSV, or Excel. The run summary repeats the results caption and tells you exactly why the run stopped.
Need company ids or geoIds for precise filters? Run the companySuggestions or locationSuggestions mode once and feed the returned ids back into the search.
π Use this API from Claude (MCP)
Add this actor as a tool in Claude Code (free trial), Claude Cowork (free trial), or any other MCP client through the hosted Apify MCP server:
https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-job-search-scraper
Setup details are in the Apify MCP integration docs.
πΈ Pay per run with crypto (x402)
The LinkedIn Job Scraper supports agentic payments via the x402 protocol. AI agents and MCP clients can pay for runs in USDC (on Base) with no Apify account or API token needed: point your agent at the Apify MCP server and it can discover, pay for, and run this Actor autonomously. Read the Apify x402 announcement for details.
Works well with
- LinkedIn Jobs API - managed jobs feed with salary data at scale
- LinkedIn Profile API - enrich the people behind the postings
- LinkedIn Company API - firmographics for the companies you find hiring
- LinkedIn Posts API - what those companies and people are saying
- LinkedIn Learning API - course and skills data to match roles to the training that fills them
FAQ
Does this need my LinkedIn login or cookies?
No. It only reads LinkedIn's public guest pages. There is no cookie input at all, and the client discards any cookie a response tries to set. Your LinkedIn account is never involved.
How deep can a search go?
LinkedIn's guest search stops serving results near 1,000 per query; the run then stops with stoppedReason: "depthCap". To go deeper, slice the query: run it per week with datePosted, per geoId, or per company id, and dedupe across runs by jobId.
Is the results count exact?
It is LinkedIn's own caption, and LinkedIn caps it (7,000+ means at least 7,000). The row carries the verbatim caption, the parsed number, and resultsCountIsCapped so you always know which case you have. The actor never uses the caption for pagination; end of results is detected from the result pages themselves.
Why does the apply link go through a LinkedIn sign-up page?
Guest pages route Apply through LinkedIn's sign-up interstitial, so most rows carry a null applyUrl. When the employer's own application site is embedded in the page, it is returned as externalApplyUrl. The jobUrl always opens the posting.
What happens if a job URL is dead or the page changes?
You get a free error row (not_found or parse_failed) with the source URL, and you are not charged for it. Only successfully delivered rows are billed.
Why did my filtered search return nothing?
LinkedIn serves guest searches from more than one backend, and one of them ignores classic filters. The actor detects an empty filtered result, rotates its session, and retries before believing it; a persistent zero means LinkedIn really has no matches for that filter combination right now.
π‘ Example tasks
Ready-to-run configurations, each on its own landing page:
- Search LinkedIn Jobs Without an Account or Login - listings with no login, no cookies
- Look Up LinkedIn Company IDs for Job Filters - resolve a company name to the id the filter needs
- Find LinkedIn Jobs With Under 10 Applicants - surface quiet, fresh postings
- Get LinkedIn GeoIDs for Any City or Country - live location codes for precise targeting
- Track LinkedIn Job Counts by Keyword and Location - the free results-count row for market tracking
- ε η»ε½ζη΄’ι’θ±θδ½ - search LinkedIn jobs with no account
- ζει’θ±θδ½θ―¦ζ - full job details from a URL
π About Alpha OSINT
This Actor is part of Alpha OSINT, toolset of financial and operations data sources and APIs. For support or requests for this actor, please start a ticket directly on our support page.
Last Updated: 2026.09.04