LinkedIn Jobs Scraper - Salary, Recruiter & Company ($0.4/1k)
Pricing
from $0.40 / 1,000 job results
LinkedIn Jobs Scraper - Salary, Recruiter & Company ($0.4/1k)
Scrape LinkedIn jobs by keyword, location & filters, or any LinkedIn search URL - no login or cookies. Get salary, seniority, applicant count, recruiter contact, and full descriptions in text, Markdown & HTML. Optional company details; beat the ~1,000 cap. Pay per result. MCP & AI-agent ready.
Pricing
from $0.40 / 1,000 job results
Rating
5.0
(2)
Developer
Harsh Maur
Maintained by CommunityActor stats
3
Bookmarked
49
Total users
11
Monthly active users
7 hours ago
Last modified
Categories
Share
LinkedIn Jobs Scraper: LinkedIn Job Listings, Salaries, Recruiters and Company Data (No Login)
Scrape LinkedIn jobs by job title and location, or paste any LinkedIn job search URL. For each job you get the title, company, location, posting date, full description, seniority, employment type, salary, applicant count, the recruiter who posted it, and optional company details. Export to JSON, CSV or Excel, or call it as a LinkedIn jobs API. No LinkedIn account, login or cookies.
From $0.40 per 1,000 jobs. No start fee, no subscription. You pay only for the jobs you get.
What does LinkedIn Jobs Scraper do?
It turns a LinkedIn job search into a clean dataset with one row per job. Use it in a spreadsheet, a database, a BI tool or an AI pipeline.
β No login or cookies
It reads LinkedIn's public job pages, the same ones a logged-out visitor sees. You never share credentials, and no account is at risk.
π Search by keyword or paste a URL
Type a job title and a location, or paste a search you built on linkedin.com/jobs. You can use both in one run.
π§Ύ Full job details
Description as plain text, Markdown and HTML, plus seniority level, employment type, job function, industries, applicant count and salary. The salary comes as the raw text and as parsed salaryMin, salaryMax, salaryCurrency and salaryPeriod.
π§βπΌ Recruiter contact
When a job names the person who posted it, you get their name, title and LinkedIn profile URL.
π’ Company enrichment
Turn on Scrape company details to add each employer's description, website, employee count and headquarters.
π More than 1,000 jobs per search
LinkedIn stops every search near 1,000 results. Split by location runs your search in each large city of a country and removes duplicates, so one run can collect many thousands of jobs.
π New-job alerts
Schedule a daily run with Date posted: Past 24 hours and send each new job to Slack, Notion or Google Sheets.
How to scrape LinkedIn jobs
- Type a Job title / keywords value, for example
data engineer. - Type a Location, for example
United States,BerlinorRemote. - Optional: choose Date posted and set Max jobs.
- Click Start. Download the results as JSON, CSV or Excel when the run ends.
The scraper reads LinkedIn's public job search 10 jobs at a time. It stops at your Max jobs value or at LinkedIn's limit of about 1,000 results per search. With Scrape full job details on, it also opens each job for the description, criteria, salary, applicant count and recruiter.
Search by job title and location
{ "keywords": "software engineer", "location": "United States", "maxItems": 200 }
Get only jobs from the last 24 hours
{ "keywords": "product manager", "location": "London", "datePosted": "1", "maxItems": 100 }
Scrape a LinkedIn job search URL
Build a search on linkedin.com/jobs in a private browser window, then copy the URL from the address bar:
{ "startUrls": [{ "url": "https://www.linkedin.com/jobs/search/?keywords=devops&location=Germany&f_TPR=r604800" }], "maxItems": 300 }
Which LinkedIn job filters still work?
In 2026 LinkedIn moved its job search to an AI search that reads plain words. It dropped several classic filters. This is how the scraper handles each one:
| Filter | Status | What the scraper does |
|---|---|---|
Date posted (f_TPR) | Exact | Sent to LinkedIn as a filter |
Company (f_C in a URL) | Exact | Sent to LinkedIn as a filter |
Easy Apply (f_AL in a URL) | Exact | Sent to LinkedIn as a filter |
Under 10 applicants (f_EA in a URL) | Exact | Sent to LinkedIn as a filter |
| Workplace type (remote, hybrid, on-site) | Dropped by LinkedIn | Added to your search words, for example data engineer remote |
| Job type (full-time, contract, internship) | Dropped by LinkedIn | Added to your search words |
| Experience level (entry, mid-senior, director) | Dropped by LinkedIn | Added to your search words |
| Sort by most recent | Dropped by LinkedIn | No effect. Use Date posted to get fresh jobs |
Search words move the results strongly in the right direction, but they are not exact. If you need an exact match, filter the dataset on employmentType or seniorityLevel after the run.
What data can you extract from LinkedIn jobs?
Every job has the same fields. A value LinkedIn does not show comes back as null.
| Field | Description |
|---|---|
title | Job title |
company, companyUrl, companyLogo | Employer name, LinkedIn company page, logo |
location | Job location as LinkedIn shows it |
postedAt, postedTimeAgo | Posting date (ISO) and the "3 days ago" text |
employmentType | Full-time, Part-time, Contract and so on |
seniorityLevel | Entry level, Associate, Mid-Senior level, Director and so on |
jobFunction, industries | LinkedIn job function and industries |
applicants | Number of applicants (LinkedIn shows at most about 200) |
salary, salaryMin, salaryMax, salaryCurrency, salaryPeriod | Salary text and parsed numbers, when the job lists pay |
benefits | Badges such as "Actively Hiring" |
jobPosterName, jobPosterTitle, jobPosterProfileUrl, jobPosterPhoto | The recruiter or hiring manager, when shown |
descriptionText, descriptionMarkdown, descriptionHtml | Full description as text, Markdown and HTML |
companyDescription, companyWebsite, companyEmployeesCount, companyHeadquarters | Company page data (with Scrape company details) |
url, jobId, applyUrl | Job URL, LinkedIn job ID, and the external apply link when LinkedIn shows it |
searchTerm, searchPosition, scrapedAt | The search that found the job, its rank, and the scrape time |
Moving from another LinkedIn jobs scraper?
Most fields keep the same name. These are the ones that differ from common alternatives:
| Other scrapers | This scraper |
|---|---|
id | jobId |
link | url |
companyName | company |
companyLinkedinUrl | companyUrl |
applicantsCount | applicants (a number, not text) |
salaryInfo | salary, plus parsed salaryMin and salaryMax |
Output example
{"title": "Senior Data Scientist","company": "Acme Analytics","companyUrl": "https://www.linkedin.com/company/acme-analytics","companyLogo": "https://media.licdn.com/dms/image/.../company-logo_100_100","location": "San Francisco, CA","postedAt": "2026-06-12","postedTimeAgo": "3 days ago","benefits": ["Actively Hiring"],"employmentType": "Full-time","seniorityLevel": "Mid-Senior level","jobFunction": "Engineering and Information Technology","industries": "Software Development","applicants": 87,"salary": "$170,000.00/yr - $210,000.00/yr","salaryMin": 170000,"salaryMax": 210000,"salaryCurrency": "USD","salaryPeriod": "YEAR","jobPosterName": "Jane Recruiter","jobPosterTitle": "Talent Partner at Acme Analytics","jobPosterProfileUrl": "https://www.linkedin.com/in/jane-recruiter","companyDescription": "Acme Analytics builds decision-intelligence toolsβ¦","companyWebsite": "https://acme.example","companyEmployeesCount": 6420,"companyHeadquarters": "San Francisco, California, US","applyUrl": null,"url": "https://www.linkedin.com/jobs/view/4416601085","descriptionText": "About the roleβ¦","descriptionMarkdown": "## About the role\n\n- Buildβ¦","jobId": "4416601085","searchTerm": "data scientist","searchPosition": 4,"scrapedAt": "2026-06-18T12:00:00.000Z"}
How to get new LinkedIn jobs every day
- Set your search and choose Date posted: Past 24 hours.
- Set Max jobs to a little more than the number of new jobs you expect each day.
- Save the input as a task and add a daily Schedule in Apify Console.
- Optional: choose an app in Send results to an app, for example Slack. Each new job arrives as a message with its title, company, location and link. You can change the message with
{{field}}placeholders such as{{title}}and{{salary}}.
Your app login stays in Apify; the scraper never sees it. A delivery problem never fails or stops the scrape.
How to scrape more than 1,000 LinkedIn jobs
LinkedIn returns at most about 1,000 jobs for one search. Turn on Split by location and pick a country. The scraper runs the search in each large city of that country and removes jobs it already has:
{ "keywords": "software engineer", "splitByLocation": true, "splitCountry": "us", "maxItems": 5000 }
How to scrape LinkedIn company details
Turn on Scrape company details to add each employer's description, website, employee count and headquarters. The scraper opens each company page once per run, even if the company has hundreds of jobs:
{ "keywords": "account executive", "location": "United States", "scrapeCompany": true, "maxItems": 100 }
For a faster run with only the search-card fields (title, company, location, date, logo, URL), turn Scrape full job details off.
How much does it cost to scrape LinkedIn jobs?
You pay per job in the dataset. There is no start fee and no monthly rental.
| Apify plan | Price per 1,000 jobs |
|---|---|
| Free | $1.00 ($0.50 until 17 October 2026) |
| Starter | $0.47 |
| Scale | $0.43 |
| Business and higher | $0.40 |
Examples on the Starter plan:
- 100 jobs with full details: $0.05.
- 1,000 jobs: $0.47.
- A daily alert of 50 new jobs: about $0.70 per month.
On the Free plan, Apify's $5 monthly credit covers about 5,000 jobs. Job details, recruiter fields and company enrichment cost nothing extra. A search that finds nothing costs nothing.
LinkedIn jobs API
Call the scraper from your own code, from n8n, Make or Zapier, or from any HTTP client.
Run and get the results in one call (good for up to a few hundred jobs):
POST https://api.apify.com/v2/acts/harshmaur~linkedin-jobs-scraper/run-sync-get-dataset-items?token=YOUR_TOKENContent-Type: application/json{ "keywords": "product manager", "location": "United States", "maxItems": 100 }
Start a large run, then read the dataset when it ends:
POST https://api.apify.com/v2/acts/harshmaur~linkedin-jobs-scraper/runs?token=YOUR_TOKEN
Use it with AI agents and MCP
AI agents such as Claude can run this scraper as a tool through the Apify MCP server. The descriptionMarkdown field keeps headings and lists, which makes it good input for job matching, summaries and candidate screening.
LinkedIn job scraping use cases
- Recruiting and sourcing: map a hiring market and contact the recruiter behind each job.
- Salary research: compare pay ranges by title, seniority and region.
- Lead generation: a company that is hiring is a company that is growing. Add its size and website with company enrichment.
- Job boards: keep a niche job board full of fresh, structured listings.
- Competitor tracking: watch a competitor's open roles and new locations over time.
- Personal job search: get a daily message with every new job that matches your search.
FAQ
Do I need a LinkedIn account, login or cookies?
No. The scraper reads only LinkedIn's public job pages.
Why do some jobs not match my remote or experience filter?
LinkedIn dropped those filters from its job search in 2026. The scraper adds them to your search words, which LinkedIn's AI search reads, so most results match but some do not. Date posted stays exact. See the filter table above.
How many jobs can I scrape?
About 1,000 per search, which is LinkedIn's limit. Turn on Split by location to collect many thousands in one run.
Can I get the recruiter's contact?
When a job names the person who posted it, you get their name, title and profile URL. Many jobs do not name one.
Does it include salary data?
Yes, when the job shows pay. You get the raw text and parsed minimum, maximum, currency and period.
Can I get job descriptions as Markdown?
Yes. Every description comes as descriptionMarkdown, descriptionText and descriptionHtml.
How fresh is the data?
Each run reads LinkedIn live. Use Date posted to keep only the last 24 hours, week or month.
What happens if the scraper cannot reach LinkedIn?
The run fails with a clear message, and you are not charged. It does not end as an empty "successful" run.
Is it legal to scrape LinkedIn jobs?
The scraper collects only public job listings that anyone can see without logging in. It does not access private profiles or data behind a login. Check the rules that apply to your use; see Is web scraping legal?
Support
Found a bug or need a field? Open an issue on the Issues tab. Fixes usually ship within days.
Other job and data scrapers
| Actor | What it does |
|---|---|
| Indeed Jobs Scraper | Indeed job listings with salary, company details and full descriptions |
| Reddit Scraper | Posts, comments, communities and user profiles |
| Reddit Search Scraper | Keyword search across Reddit posts, comments and communities |
| YouTube Transcript Scraper | Transcripts for videos, channels and playlists |
Use the LinkedIn and Indeed scrapers together to build a hiring dataset from two sources.