LinkedIn Jobs API | Search Job Listings & Salaries
Pricing
from $0.01 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
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
| Field | Description |
|---|---|
jobUrl, jobId | The job posting's public URL and identifier. |
title | The job title. |
companyName, companyUrl, companyLogo | The hiring company. |
location, countryCode | Where the job is based. |
description | The full job description text. |
seniorityLevel, employmentType, jobFunction | Role level, type, and function. |
industries | Industries associated with the role. |
salary | The listed pay range or base salary, when present. |
postedDate, numApplicants | When it was posted and how many have applied. |
applyUrl | The direct application link, when available. |
jobPoster | The recruiter / person who posted the job, when available. |
summary | A 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.
π Related Tools
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:
- LinkedIn Company API - firmographics and sales intelligence for the companies that are hiring.
- LinkedIn Profile API - structured data on the recruiters and people behind a posting.
- LinkedIn Posts API - a company's or person's public posts and engagement, for hiring signals and outreach.
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
- Open the Actor and enter a
keywordandlocation(or paste job URLs intojobUrls). - Set
maxJobsto bound the volume, then run it and read the results from the dataset (JSON, CSV, Excel, or API).
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.
Is it legal to scrape public LinkedIn job listings?
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.
How many jobs do I get per search?
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