LinkedIn Jobs Scraper - Salary, Recruiter & Company ($0.4/1k) avatar

LinkedIn Jobs Scraper - Salary, Recruiter & Company ($0.4/1k)

Pricing

from $0.40 / 1,000 job results

Go to Apify Store
LinkedIn Jobs Scraper - Salary, Recruiter & Company ($0.4/1k)

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

Harsh Maur

Maintained by Community

Actor stats

3

Bookmarked

49

Total users

11

Monthly active users

7 hours ago

Last modified

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.

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

  1. Type a Job title / keywords value, for example data engineer.
  2. Type a Location, for example United States, Berlin or Remote.
  3. Optional: choose Date posted and set Max jobs.
  4. 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:

FilterStatusWhat the scraper does
Date posted (f_TPR)ExactSent to LinkedIn as a filter
Company (f_C in a URL)ExactSent to LinkedIn as a filter
Easy Apply (f_AL in a URL)ExactSent to LinkedIn as a filter
Under 10 applicants (f_EA in a URL)ExactSent to LinkedIn as a filter
Workplace type (remote, hybrid, on-site)Dropped by LinkedInAdded to your search words, for example data engineer remote
Job type (full-time, contract, internship)Dropped by LinkedInAdded to your search words
Experience level (entry, mid-senior, director)Dropped by LinkedInAdded to your search words
Sort by most recentDropped by LinkedInNo 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.

FieldDescription
titleJob title
company, companyUrl, companyLogoEmployer name, LinkedIn company page, logo
locationJob location as LinkedIn shows it
postedAt, postedTimeAgoPosting date (ISO) and the "3 days ago" text
employmentTypeFull-time, Part-time, Contract and so on
seniorityLevelEntry level, Associate, Mid-Senior level, Director and so on
jobFunction, industriesLinkedIn job function and industries
applicantsNumber of applicants (LinkedIn shows at most about 200)
salary, salaryMin, salaryMax, salaryCurrency, salaryPeriodSalary text and parsed numbers, when the job lists pay
benefitsBadges such as "Actively Hiring"
jobPosterName, jobPosterTitle, jobPosterProfileUrl, jobPosterPhotoThe recruiter or hiring manager, when shown
descriptionText, descriptionMarkdown, descriptionHtmlFull description as text, Markdown and HTML
companyDescription, companyWebsite, companyEmployeesCount, companyHeadquartersCompany page data (with Scrape company details)
url, jobId, applyUrlJob URL, LinkedIn job ID, and the external apply link when LinkedIn shows it
searchTerm, searchPosition, scrapedAtThe 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 scrapersThis scraper
idjobId
linkurl
companyNamecompany
companyLinkedinUrlcompanyUrl
applicantsCountapplicants (a number, not text)
salaryInfosalary, 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

  1. Set your search and choose Date posted: Past 24 hours.
  2. Set Max jobs to a little more than the number of new jobs you expect each day.
  3. Save the input as a task and add a daily Schedule in Apify Console.
  4. 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 planPrice 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_TOKEN
Content-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.

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

ActorWhat it does
Indeed Jobs ScraperIndeed job listings with salary, company details and full descriptions
Reddit ScraperPosts, comments, communities and user profiles
Reddit Search ScraperKeyword search across Reddit posts, comments and communities
YouTube Transcript ScraperTranscripts for videos, channels and playlists

Use the LinkedIn and Indeed scrapers together to build a hiring dataset from two sources.