LinkedIn Jobs Scraper | No Login, from $0.05/1K Jobs
Pricing
from $0.05 / 1,000 jobs
LinkedIn Jobs Scraper | No Login, from $0.05/1K Jobs
Scrape LinkedIn job postings without login or cookies: title, company, location, salary, applicants, seniority, job type, full description. Job type and experience filters are checked on every job and duplicates are removed before you pay. New-jobs-only mode and webhook for daily pipelines.
Pricing
from $0.05 / 1,000 jobs
Rating
0.0
(0)
Developer
Alexis Morain
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What does LinkedIn Jobs Scraper do?
LinkedIn Jobs Scraper collects job postings from LinkedIn Jobs for any job title and location: title, company, location, posting date, salary range when the employer publishes it, applicants, seniority, job type, industry and the full description. It needs no LinkedIn account, no cookies and no browser, so there is no account to get banned. It works as a LinkedIn Jobs API alternative, from the Apify console or from your own code.
It also fixes what LinkedIn does to logged-out searches. LinkedIn accepts the job type (f_JT) and experience (f_E) filters in a search URL, then ignores them when you are not signed in, and returns the same jobs as without the filter. We measured it on 21 October 2026, same query a second apart:
| Search: software engineer, United States | First jobs returned |
|---|---|
| No filter | 4419969671, 4479305237, 4479196690 |
Job type: Contract (f_JT=C) | 4419969671, 4479305237, 4479196690 |
Experience: Entry level (f_E=1) | 4419969671, 4479305237, 4479196690 |
Remote (f_WT=2) | 4419969671, 4479305237, 4479196690 |
Posted in the past 24 hours (f_TPR) | 4482067895, 4464920458, 4482036357 |
A scraper that passes your filters to LinkedIn and trusts the answer bills you for jobs outside your filter. This Actor reads the job type and seniority on every job page and only returns, and charges, the jobs that match. On one test, none of the 1,000 jobs LinkedIn returned for a "Contract" software engineer search in the United States was a contract job: this Actor returned none of them and charged nothing for them.
Why use LinkedIn Jobs Scraper?
Job market and salary research. Pull every posting for a role across countries or cities, with salary ranges, applicants and seniority, and analyze it in a spreadsheet or a BI tool.
Lead generation for recruiters and B2B sales. A company hiring a "Head of Data" or ten sales reps is a company with a budget. Export hiring companies with their LinkedIn page, location and the exact roles they open.
Job boards and alert pipelines. Turn on New jobs only, schedule a daily run with Posted within: Past 24 hours, and each run returns only jobs you never received before. A webhook can ping Slack, Make, Zapier or your own endpoint when new jobs arrive.
What you get on top of the data:
- duplicates removed before you pay: LinkedIn repeats jobs across pages (150 repeats in 1,000 results on a wide Paris search), they are charged once;
- an empty page in the middle of a search is retried from other IPs before the search counts as finished, so a hiccup at LinkedIn does not cut your results short;
- LinkedIn's limit of 1,000 jobs per search is reported in the run status, not hidden;
- the cheapest price per job we know of on Apify Store, with volume discounts;
- Apify scheduling, API access, integrations, proxy rotation and monitoring.
What data can LinkedIn Jobs Scraper extract?
| Field | Description |
|---|---|
title, jobUrl, jobId | Job title, LinkedIn job page and ID |
companyName, companyLinkedinUrl, companyLogoUrl | Hiring company and its LinkedIn page |
location | Location as LinkedIn shows it |
postedDate, postedTimeAgo | Posting date (YYYY-MM-DD) and age |
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod | Salary range when published (about 1 job in 9 in our tests, more in the US and UK) |
applicantsText, applicantsCount | Applicants so far |
employmentType, employmentTypeCode | Full-time, Part-time, Contract, Temporary, Internship, Volunteer, Other |
seniorityLevel, seniorityLevelCode | Internship, Entry level, Associate, Mid-Senior level, Director, Executive, Not applicable |
industries | Industry of the job |
easyApply | True for LinkedIn Easy Apply, false when you apply on the employer's site |
descriptionText, descriptionHtml | Full job description, plain text and HTML |
benefits | Badges such as "Be an early applicant" |
searchKeywords, searchLocation, searchUrl, rank | Which search found the job, and its position |
detailsIncluded, scrapedAt | Whether the job page was read (detailed job), and when the job was collected |
How to scrape LinkedIn jobs
- Click Try for free and open the Input tab.
- Type one or more job titles or keywords (
software engineer,registered nurse). - Type one or more locations (
United States,London,Germany). Each keyword is searched in each location. - Optionally pick Posted within, Job types and Experience levels.
- Set Max jobs and click Start.
- Download the jobs as JSON, CSV or Excel, or read them through the API.
Already have a search open on LinkedIn? Paste its URL into LinkedIn search URLs instead. To refresh specific jobs, paste their URLs or IDs into Job URLs or IDs.
How much does it cost to scrape LinkedIn jobs?
You pay per job returned, nothing for duplicates, already delivered jobs or jobs outside your filters, plus $0.001 per run.
| Event | Free plan | Bronze | Silver | Gold and above |
|---|---|---|---|---|
| Job (search card only) | $0.08 / 1,000 | $0.07 / 1,000 | $0.06 / 1,000 | $0.05 / 1,000 |
| Detailed job (with job page) | $0.25 / 1,000 | $0.22 / 1,000 | $0.20 / 1,000 | $0.15 / 1,000 |
So 10,000 detailed jobs cost $2.50 on the Free plan and $1.50 on Gold. The $5 of monthly credit on the Free plan covers about 20,000 detailed jobs. Platform usage (compute, proxy) is included in the price.
Input
See the Input tab for every option. A typical input:
{"keywords": ["data analyst", "data engineer"],"locations": ["United States", "United Kingdom"],"postedWithin": "past-week","jobTypes": ["full-time", "contract"],"maxItems": 2000}
Fields that need a word of explanation:
- Job types and Experience levels are checked on each job page. LinkedIn leaves most jobs at "Not applicable" seniority (9 in 10 in our tests), so add Not applicable if you do not want to lose them.
- Include job details (on by default) reads each job page. Off, you get the search cards only: title, company, location and date, at the lowest price, about 1,000 jobs a minute.
- Drop unrelated jobs (off by default). When a search has few real matches, LinkedIn fills the rest with random jobs: a made-up word searched in France returns hundreds of unrelated French jobs. On, a job whose title and description contain none of your keywords is dropped and not charged. It stays off by default because LinkedIn also translates your keywords:
accountantin Germany rightly returns Bilanzbuchhalter jobs that never say "accountant". - Remote, salary and industry filters cannot be applied without a LinkedIn login: LinkedIn ignores them and job pages do not show the workplace type to logged-out visitors. A search URL that contains them still runs, and the log says the filter was not applied.
Output
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. One item per job:
{"jobId": "4480470169","jobUrl": "https://www.linkedin.com/jobs/view/4480470169","title": "Staff Nurse - Oncology","companyName": "Kaiser Permanente","companyLinkedinUrl": "https://www.linkedin.com/company/kaiser-permanente","location": "Honolulu, HI","postedDate": "2026-10-20","postedTimeAgo": "1 day ago","salaryText": "$54.05/hr - $77.21/hr","salaryMin": 54.05,"salaryMax": 77.21,"salaryCurrency": "USD","salaryPeriod": "hour","applicantsText": "Be among the first 25 applicants","applicantsCount": null,"seniorityLevel": "Not Applicable","employmentType": "Full-time","employmentTypeCode": "full-time","industries": "Hospitals and Health Care","easyApply": false,"descriptionText": "This position is a Hawaii Nurses and Healthcare Professionals Bargaining Unit represented position...","searchKeywords": "registered nurse","searchLocation": "United States","rank": 3,"detailsIncluded": true}
Each run also writes a SUMMARY record to its key-value store: for each search, the pages read, duplicates skipped, jobs dropped by each filter, jobs returned, and why the search stopped: end-of-results, linkedin-1000-cap, max-items, max-items-per-search, charge-limit (your maximum charge was reached), only-unrelated-jobs-left, timeout or blocked (LinkedIn refused, nothing charged).
Tips for scraping more LinkedIn jobs, faster
- Beat the 1,000-job limit. LinkedIn shows at most 1,000 jobs per search. Search cities instead of a country, or add keywords: jobs found by several searches are returned and charged once.
- Daily feeds. New jobs only plus Posted within: Past 24 hours keeps each run small and cheap. Give the monitor a name to keep its memory when you edit the searches.
- Speed. About 1,000 detailed jobs in 5 to 7 minutes, and 1,000 search cards in about a minute. Posted within makes LinkedIn return fewer jobs, so runs finish sooner.
- From code. Call the Actor through the Apify API or the
apify-clientpackage for Python and JavaScript, and read the dataset when the run finishes.
FAQ, disclaimers and support
Do I need a LinkedIn account or cookies?
No. The Actor reads the job pages LinkedIn shows to logged-out visitors. Nothing is done with an account, so nothing can get banned.
Why do I get fewer jobs than LinkedIn shows when I am signed in?
Signed-out LinkedIn shows at most 1,000 jobs per search, and some filters only work when signed in. Split wide searches by city to get more.
Can I filter remote jobs?
Not reliably. LinkedIn ignores the remote filter for logged-out searches and does not show the workplace type on the job page. Adding remote to your keywords is the closest workaround: it finds jobs whose ad mentions remote work.
Is it legal to scrape LinkedIn jobs?
Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
Something is wrong or missing?
Open an issue in the Issues tab: it gets read and answered quickly. For programmatic access, see the API tab.