LinkedIn Jobs API | Search Job Listings & Salaries avatar

LinkedIn Jobs API | Search Job Listings & Salaries

Pricing

from $0.01 / 1,000 results

Go to Apify Store
LinkedIn Jobs API | Search Job Listings & Salaries

LinkedIn Jobs API | Search Job Listings & Salaries

Search public LinkedIn job listings as clean, structured JSON. Find jobs by keyword, location, seniority, and job type, or fetch specific job URLs. Get title, company, location, salary, description, and apply links. Pay per job, MCP-ready for Claude and AI agents.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

John

John

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

πŸ’Ό LinkedIn Jobs API | Search Job Listings & Salaries

The LinkedIn Jobs API turns public LinkedIn job listings into clean, structured JSON. Use this actor with Claude, Cursor, or any MCP-compatible AI agent to find jobs by keyword, location, seniority, and job type, and get title, company, salary, description, and apply links, on reliable infrastructure and billed per job.

Run a keyword-and-location search, or fetch specific job posting URLs directly. It works as a straightforward LinkedIn jobs scraper for recruiting, market and salary research, and lead generation, and it is built API-first and MCP-ready so AI agents can call it as a tool.


πŸ“‹ What this API returns

FieldDescription
jobUrl, jobIdThe job posting's public URL and identifier.
titleThe job title.
companyName, companyUrl, companyLogoThe hiring company.
location, countryCodeWhere the job is based.
descriptionThe full job description text.
seniorityLevel, employmentType, jobFunctionRole level, type, and function.
industriesIndustries associated with the role.
salaryThe listed pay range or base salary, when present.
postedDate, numApplicantsWhen it was posted and how many have applied.
applyUrlThe direct application link, when available.
jobPosterThe recruiter / person who posted the job, when available.
summaryA plain-language one-line interpretation of the job.

🎯 Use cases

  • Recruiting & sourcing. Track open roles at target companies by keyword and location.
  • Market & salary research. Analyze demand, seniority mix, and pay ranges across a role or region.
  • Lead generation. Companies that are hiring are buying, find them by search and reach out.
  • Job aggregators. Feed fresh, structured LinkedIn listings into a job board or newsletter.
  • Competitive hiring intelligence. Watch which teams a competitor is building out.
  • AI agent workflows. Drive this API over MCP from Claude to search and summarize jobs in-conversation.

πŸ” Use it as a LinkedIn jobs scraper at scale

Point this LinkedIn jobs scraper at a role and a location and it returns one clean row per listing, with the same flat, predictable fields every time, which is what makes the output easy to load into a sheet, a database, or an ATS. Cap each search with maxJobs so a broad query never overshoots your budget, and narrow it with the seniority, job type, remote, and date filters to get exactly the roles you want.

The output doubles as recruitment data and hiring signals: which companies are staffing up, which teams they are building, and what they pay. If a search returns nothing, you get a clear error row for that search instead of a failed run, so one empty query never sinks the batch. Whether you run LinkedIn jobs scraping once or across thousands of listings, the shape of the data stays the same.


βš™οΈ Input examples

Search by keyword and location

{
"keyword": "python developer",
"location": "New York",
"maxJobs": 25
}

Search with filters

{
"keyword": "product manager",
"location": "London",
"experienceLevel": "mid-senior",
"jobType": "full-time",
"remote": true,
"timeRange": "past-week",
"maxJobs": 50
}

Fetch specific jobs by URL

{
"jobUrls": [
"https://www.linkedin.com/jobs/view/4286961888"
]
}

maxJobs caps how many jobs are returned per search, so you control cost. The API returns one row per job.


πŸ“€ Example output

Each job is returned as one JSON row:

{
"result_type": "job",
"jobId": "4286961888",
"jobUrl": "https://www.linkedin.com/jobs/view/4286961888",
"title": "Senior Python Developer",
"companyName": "GlossGenius",
"companyUrl": "https://www.linkedin.com/company/glossgenius",
"location": "New York, NY",
"seniorityLevel": "Mid-Senior level",
"employmentType": "Full-time",
"jobFunction": "Engineering and Information Technology",
"salary": "$150,000 - $190,000",
"postedDate": "2026-06-20",
"numApplicants": 47,
"summary": "Senior Python Developer, at GlossGenius, New York, NY, Full-time, $150,000 - $190,000"
}

πŸ’° Pricing (pay-per-event)

You pay per job returned. There is no per-run setup fee. The current per-event price is shown on the Store card and in the Actor's Monetization details. Because billing is per job, you only pay for the jobs actually delivered, and maxJobs lets you cap the volume of each search.


πŸ”Œ Use the LinkedIn Jobs API from Claude (MCP)

This Actor is MCP-server-compatible, so Claude Code (free trial), Claude (desktop and web), Cursor, and other MCP clients can call it as a tool through Apify's hosted MCP server.

Add it with this Actor-specific URL:

https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-jobs-api

Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp

Setup walkthrough:

New to Claude Code or Claude Cowork? Start a free trial.

Then ask Claude:

"Use the LinkedIn Jobs API to find remote senior product manager roles in the US posted this week and summarize the salary ranges."


πŸ”Œ Integrations: run job monitoring on a schedule

This API earns its keep as a recurring step in a pipeline, not a one-off run:

  • Tasks and Schedules. Save a keyword-and-location search as a Task, then attach a Schedule to refresh that job feed daily, weekly, or monthly with no code, so new roles land automatically.
  • n8n, Make, and Zapier. Trigger a run on a schedule or an event, then route fresh listings into your ATS, CRM, or a Slack channel. Apify has native connectors for each.
  • Supabase, Google Sheets, and databases. Send the dataset straight to storage with a webhook or the Apify API so the rows land where your team already works.
  • MCP. Call the API as a tool from Claude and other AI agents (see the section above) to search and summarize jobs inside an agent workflow.
  • Webhooks. Fire a webhook on run completion to kick off the next step in your own system, such as scoring or de-duping new roles.

Build a full picture of who is hiring, the companies behind the roles, and the people posting them by pairing this with the rest of the LinkedIn suite:

Comparison point: some LinkedIn job scrapers on the Store are unmaintained or low-rated (for example worldunboxer/rapid-linkedin-scraper, rated under 4 stars). This API is built for reliability, pay-per-job billing, and MCP access from AI agents.


πŸ“Ž Applications

Ready-made task pages for common jobs. Open one, run it, or duplicate it as a starting point:

Scrape LinkedIn Jobs to Structured JSON

Turn a keyword and location into clean JSON: title, company, location, salary, seniority, and apply link.

Search LinkedIn Jobs by Keyword and Location

Run a keyword-and-location search and get one structured row per job.

LinkedIn Jobs Data API for Python

Call the API from Python: a keyword and location in, structured job rows out.

Scrape LinkedIn Jobs in an n8n Workflow

Add job listings to an n8n workflow: pass a keyword and location, get structured rows back.

Monitor Company Hiring on LinkedIn

Track which roles a target company is opening by filtering on company and date.

Track Remote LinkedIn Jobs by Keyword

Pull only remote roles posted recently, filtered by keyword, remote, and date window.

Get LinkedIn Jobs in Claude via MCP

Use job search as a tool in Claude and other AI agents over MCP.

Collect LinkedIn Jobs from a URL List

Paste up to 1000 LinkedIn job URLs and get one clean row each.


πŸš€ How to get started

  1. Open the Actor and enter a keyword and location (or paste job URLs into jobUrls).
  2. Set maxJobs to bound the volume, then run it and read the results from the dataset (JSON, CSV, Excel, or API).

View on Apify Store

Example code: Python quick-start + MCP setup on GitHub - call the API from Python, or install it as a tool in Claude, Cursor, and ChatGPT.


❓ FAQ

Is this a LinkedIn Jobs API or a LinkedIn jobs scraper?

Both descriptions fit. You call it like an API (a keyword and location in, structured JSON out), and under the hood it is a LinkedIn jobs scraper that reads public job listings. You never touch scraping infrastructure; you get clean, one-row-per-job data back.

What input should I provide?

A keyword and/or location (plus optional filters like experienceLevel, jobType, remote, and timeRange) to search, or specific LinkedIn job URLs in jobUrls (e.g. https://www.linkedin.com/jobs/view/4286961888). Supply a keyword, a location, a company, or at least one URL.

How do I search for remote jobs?

Set remote to true and add a keyword and location. Combine it with timeRange (past 24 hours, past week, past month) to pull only recently posted remote roles.

Do you return salaries?

Yes, when LinkedIn lists a pay range or base salary for the role, it is returned in the salary field. This makes the output a useful source of pay-range and recruitment data across a role or region.

This actor collects only public job posting data. Public-data scraping has been addressed in court cases such as hiQ Labs v. LinkedIn, but you are responsible for your own use, including GDPR and platform terms. Consult your own counsel for your use case.

Can I run it from Claude or another AI agent over MCP?

Yes. The Actor is MCP-server-compatible, so Claude Code (free trial) and other MCP clients call it as a tool. See the MCP section above for the setup URL.

Can I schedule it or connect it to my other apps?

Yes. Save your search as a Task and attach a Schedule for recurring runs, and connect the output to n8n, Make, Zapier, Supabase, or your own system by webhook. See the Integrations section above.

As many as maxJobs (default 25, up to 500 per search). Raise it for broader searches; each returned job is billed, so maxJobs is also your cost cap.

What if a search returns no jobs?

The API returns a clear error row for that search explaining why, so an empty search does not fail the whole run.


Last Updated: 2026.07.10