LinkedIn Job Scraper | Job Search API, Counts & Autocomplete avatar

LinkedIn Job Scraper | Job Search API, Counts & Autocomplete

Pricing

from $0.01 / 1,000 job listings

Go to Apify Store
LinkedIn Job Scraper | Job Search API, Counts & Autocomplete

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.01 / 1,000 job listings

Rating

5.0

(2)

Developer

John

John

Maintained by Community

Actor stats

1

Bookmarked

46

Total users

30

Monthly active users

16 hours ago

Last modified

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.

🧩 Part of the Alpha OSINT LinkedIn suite: no login, no cookies

Eight Actors that read only what LinkedIn shows to a signed-out visitor. None of them asks for your account, your password or an li_at session cookie, so none of them can get your LinkedIn account restricted. Each one takes what the previous one returns, so you can chain them into a full people-and-company workflow:

StepYou want toUse
1Find people by name, job title, company, school or location, no profile URL neededLinkedIn People Search API
2Turn profile URLs into full structured profiles: experience, education, followersLinkedIn Profile API
3Enrich the employer: industry, size, headquarters, specialties, follower countLinkedIn Company API
4List the people who work at a company, each checked against their public profileLinkedIn Company Employees API
5See what a company is hiring for, with salary data where LinkedIn publishes itLinkedIn Jobs API
6Search jobs as a guest with filters, total result counts and autocomplete idsLinkedIn Job Scraper (this Actor)
7Read what a person or company posts, with reactions, comments and sharesLinkedIn Posts API
8Map the skills people list to courses, learner reviews and full syllabiLinkedIn Learning API

A worked map of these chains, with live adoption and success-rate stats for every Actor, is at alphaosint.com/linkedin.

What this actor returns

  • Job listings from a keyword plus location search: job title, company name, LinkedIn page and logo, 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, company logo, whether you apply on LinkedIn or on the employer's site, 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 geoId values 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

FieldRequiredDefaultWhat it does
search_modeyessearchOne of search, job, autocomplete, companySuggestions, locationSuggestions.
keywordssearch-What to search for, for example semiconductor engineer.
locationsearch-Free-text place, for example United States or Philadelphia, PA.
geoIdno-LinkedIn geo id from the locationSuggestions mode; use together with location.
datePostednoanypast24h, pastWeek, or pastMonth.
companyIdsno[]Numeric company ids from the companySuggestions mode; multiple ids combine as OR.
easyApplyOnlynofalseOnly jobs with LinkedIn Easy Apply.
under10ApplicantsnofalseOnly jobs with fewer than 10 applicants.
jobUrlsjob-linkedin.com/jobs/view/ URLs or bare numeric ids; duplicates of the same job collapse into one billed row.
querysuggestions-The text to complete, for example semic.
maxItemsno100Cap 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",
"companyLogo": "https://media.licdn.com/dms/image/v2/C560BAQEX/company-logo_100_100/0/amd_logo",
"fromCache": false
}

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, companyLogo, applyType (external or linkedin), similarJobs, peopleAlsoViewed, and similarSearches.

Pricing

Pay per event, only for delivered rows. No start fee, no minimum.

EventWhen it is chargedPrice
Job listingper unique job returned by a search$0.00001 ($0.01 per 1,000)
Full job recordper successfully scraped job page$0.00001 ($0.01 per 1,000)
Suggestion rowper typeahead suggestion returned$0.00001 ($0.01 per 1,000)
Residential fallbackonly on the rare row that needed the residential proxy$0.00001 ($0.01 per 1,000)

The searchMeta row and any error rows are always free, and filtered or duplicate jobs are never billed. A typical 100-listing search costs a tenth of a cent, and hydrating those 100 jobs with full details costs the same again.

How to get started

  1. View on Apify Store and press Run.
  2. Pick a mode, enter keywords and a location (the defaults run a real search out of the box), and start the run.
  3. 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

🤖 Ask an AI assistant about this API

Open a ready-to-send prompt about the LinkedIn Job Scraper in the AI of your choice:

FAQ

Will this put my LinkedIn or LinkedIn Recruiter account at risk?

No. It reads public LinkedIn pages only, the ones anyone can open while signed out. It never logs in and never asks for your cookies: there is no input for an account, a password or an li_at session cookie. Nothing it does is tied to your LinkedIn account, your LinkedIn Recruiter seat or your Sales Navigator license. The requests run on Apify's servers, not in your browser, so nothing connects them to you, and you can keep working in Recruiter while a run is going.

Do I need to give you my LinkedIn cookies or login?

No, never. This Actor does not ask for, accept or store your LinkedIn cookies, your session cookie (li_at), your password or your account. There is no input field for any of them. It reads LinkedIn's public pages the way a signed-out visitor sees them. Any cookie involved is one LinkedIn's site hands to that anonymous visit, and it is used only inside that single run.

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.

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.

Are results ever served from a cache?

Yes, when the same thing was fetched recently. Job records are reused for up to 7 days, search result pages for at most a few hours (each page belongs to a 6-hour window), and typeahead suggestions for up to 30 days. A cached row has fromCache: true, keeps the time it was originally fetched in fetchedAt, and is billed like a fresh row; the residential fallback charge is never applied to it.

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:

🌐 About Alpha OSINT

This Actor is part of Alpha OSINT, toolset of financial and operations data sources and APIs. See the LinkedIn Job Scraper source page for related tools and use cases. For support or requests for this actor, please start a ticket directly on our support page.

Last Updated: 2026.10.04