LinkedIn Jobs Scraper | No Login, from $0.05/1K Jobs avatar

LinkedIn Jobs Scraper | No Login, from $0.05/1K Jobs

Pricing

from $0.05 / 1,000 jobs

Go to Apify Store
LinkedIn Jobs Scraper | No Login, from $0.05/1K 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

Alexis Morain

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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 StatesFirst jobs returned
No filter4419969671, 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?

FieldDescription
title, jobUrl, jobIdJob title, LinkedIn job page and ID
companyName, companyLinkedinUrl, companyLogoUrlHiring company and its LinkedIn page
locationLocation as LinkedIn shows it
postedDate, postedTimeAgoPosting date (YYYY-MM-DD) and age
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriodSalary range when published (about 1 job in 9 in our tests, more in the US and UK)
applicantsText, applicantsCountApplicants so far
employmentType, employmentTypeCodeFull-time, Part-time, Contract, Temporary, Internship, Volunteer, Other
seniorityLevel, seniorityLevelCodeInternship, Entry level, Associate, Mid-Senior level, Director, Executive, Not applicable
industriesIndustry of the job
easyApplyTrue for LinkedIn Easy Apply, false when you apply on the employer's site
descriptionText, descriptionHtmlFull job description, plain text and HTML
benefitsBadges such as "Be an early applicant"
searchKeywords, searchLocation, searchUrl, rankWhich search found the job, and its position
detailsIncluded, scrapedAtWhether the job page was read (detailed job), and when the job was collected

How to scrape LinkedIn jobs

  1. Click Try for free and open the Input tab.
  2. Type one or more job titles or keywords (software engineer, registered nurse).
  3. Type one or more locations (United States, London, Germany). Each keyword is searched in each location.
  4. Optionally pick Posted within, Job types and Experience levels.
  5. Set Max jobs and click Start.
  6. 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.

EventFree planBronzeSilverGold 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: accountant in 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-client package 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.

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.