John Cole

Aug 03, 2026 • 3 min read

How to Scrape LinkedIn Jobs by Keyword and Location With One API

A step-by-step guide to turning public LinkedIn job listings into structured JSON over REST and MCP, with pay-per-result pricing.

I have lost more than one afternoon to the same wall: I want a clean list of who is hiring for a role, and LinkedIn's job pages will not hand it over. The listings are public, but they render for browsers and push back the moment a script starts paging through them. So I built an API that does the boring part for me.

The LinkedIn Jobs API turns public LinkedIn job listings into structured JSON: give it a keyword and a location and it returns one row per posting, no login and no scraping code of your own.

What it returns

Each job comes back as a flat JSON row with the fields you would expect from a listing:

  • Title, company, and location, with remote flags where the posting shows them.

  • Salary when the employer includes it.

  • The full description text, useful for keyword mining.

  • The apply link back to the original posting.

Filters mirror the site: jobType, experienceLevel, remote, company, and timeRange down to jobs posted in the past day.

Run it in three steps

Open the LinkedIn Jobs API, set a keyword and a location plus any filters, and run it. Export the results as JSON or CSV. That is the whole loop, and a 25-job search costs about a dime.

Use it as a REST API

Every run is reachable over REST, so you can trigger a search from a script or a cron job and read the dataset back as JSON.

POST /v2/acts/johnvc~linkedin-jobs-api/runs
{ "keyword": "python developer", "location": "New York", "remote": true, "maxJobs": 25 }

Wire it into Claude with MCP

The Actor runs over the Model Context Protocol, so Claude, Claude Code, and Cursor can call it as a tool. Ask "find mid-senior ML jobs in London posted this week" and the search runs mid-conversation, returning rows the agent can reason over.

What people build with it

The example tasks cover the common jobs: searching by keyword and location, collecting a list of posting URLs, monitoring one company's hiring as recruitment data, and tracking fresh remote roles by keyword. The full set of eight runnable examples lives on the project page.

FAQ About Scraping LinkedIn Jobs

What does the LinkedIn jobs scraper collect?

Public job listings only: titles, companies, locations, salaries where posted, descriptions, and apply links. No login, no profile data, nothing beyond what a posting itself shows.

How do I call the jobs API and what does it cost?

Trigger a run over REST or from the Apify Console, then read the dataset as JSON or CSV. Pricing is pay per result, about four tenths of a cent per job, so a 25-job search is roughly a dime and a 1,000-job URL batch is about four dollars.

Can an AI agent use the scraper through MCP?

Yes. Over MCP the Actor appears as a callable tool in Claude, Claude Code, and Cursor, so an agent can run a search and read the rows without writing any scraping code.

Can an AI agent pay for this scraper in USDC with x402?

Yes. The LinkedIn Jobs API supports agentic payments via the x402 protocol, so AI agents and MCP clients can pay for runs in USDC on Base with no Apify account or API token. Point your agent at the Apify MCP server and it can discover, pay for, and run the scraper autonomously; the Apify x402 announcement has the details.

If something looks off in the output, the Actor's issues tab on Apify is the fastest way to reach me.

Join John on Peerlist!

Join amazing folks like John and thousands of other builders on Peerlist.

peerlist.io/

It’s available... this username is available! 😃

Claim your username before it's too late!

This username is already taken, you’re a little late.😐

0

0

0