LinkedIn Jobs Scraper avatar

LinkedIn Jobs Scraper

Pricing

from $2.49 / 1,000 results

Go to Apify Store
LinkedIn Jobs Scraper

LinkedIn Jobs Scraper

LinkedIn Jobs Scraper SD - LinkedIn Jobs Scraper is a job data tool that extracts public LinkedIn job postings by keyword and location: title, company, location, date, applicants, seniority, employment type, industries and full description. No login.

Pricing

from $2.49 / 1,000 results

Rating

0.0

(0)

Developer

Neuro Scraper

Neuro Scraper

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

15 days ago

Last modified

Categories

Share

LinkedIn Jobs Scraper — public LinkedIn job postings, no login

The LinkedIn Jobs Scraper reads LinkedIn's public, logged-out job search and job pages and returns one row per job: title, company, location, posted date, applicants, seniority level, employment type, industries, salary (when the job page shows one) and the full description.

It reads only the guest job pages anyone can open without an account. No login, no cookies, no profiles, no company pages.

Input

FieldTypeDefaultMeaning
keywordslistpython developer (prefill)One LinkedIn job search per line
locationtextUnited States (prefill)Where to search, as typed on LinkedIn; empty = worldwide
startUrlsURLs–LinkedIn job search URLs (filters in them are used) or single job URLs (/jobs/view/<id>/)
timePostedselectanyPast 24 hours / week / month — LinkedIn's own filter
jobTypesmulti-select–Full-time, Part-time, Contract ... — checked against each job page's "Employment type"
experienceLevelsmulti-select–Internship ... Executive — checked against each job page's "Seniority level"
remoteOnlybooleanfalseKeep jobs whose title, location or description mentions remote work (text check)
easyApplyOnlybooleanfalseLinkedIn's own Easy Apply filter
companyIdslist–LinkedIn numeric company IDs (the f_C= value of a LinkedIn search URL)
scrapeDetailsbooleantrueOpen each job page (description, applicants, criteria, salary)
maxItemsinteger20Stop after this many jobs
proxyConfigurationproxyApify RESIDENTIALProxy for LinkedIn

A job URL given in startUrls is always returned; the filters apply to search results.

Output

FieldMeaning
jobId, jobUrlLinkedIn job ID and https://www.linkedin.com/jobs/view/<id>/
title, companyName, companyUrl, companyLogoFrom the search card / job page
location, postedDate, postedTimeAgo, badgeCard location, date (YYYY-MM-DD), "1 week ago", "Actively Hiring"
salary"Base pay range ..." when the job page shows it
applicantsCount, applicantsText66 for "66 applicants"; 200 for "Over 200 applicants" (a lower bound); empty for "Be among the first 25 applicants"
seniorityLevel, employmentType, industriesThe job page's criteria list
applyTypeeasyApply or offsite (the off-site apply link is behind LinkedIn sign-in)
descriptionText, descriptionHtmlFull description
remoteMentionedTitle, location or description mentions remote work
searchKeywords, searchLocation, searchUrl, scrapedAtThe search that produced the row, UTC time

With scrapeDetails off, rows hold the card fields only (no salary, applicants, criteria, description).

Measured (2026-10-03, one residential IP, no proxy)

TestResult
python developer / United States, 20 jobs with details20 rows in 41 s, 2 search pages + 20 job pages, every request HTTP 200
data engineer / United States, past week, 120 jobs, no details120 rows in 23 s from 12 pages; every posted date within the week
Nurse search URL (London, past week) + job URL, full-time + 3 seniority levels8 matching rows in 423 s: 22 search pages, 207 job pages dropped by the filters
Job URL + software engineer remote only4 rows in 28 s (job URL kept, 3 remote jobs, 8 dropped)
Bad URLs / empty inputClean stop with an error line per input

Limits (measured)

  • One search reaches about 990 jobs: start=990 came back empty and start=1000 answered HTTP 400. Split big searches by location or time posted.
  • Logged out, LinkedIn ignores its job-type (f_JT), experience (f_E), remote (f_WT) and distance filters: the results were identical with and without them. The Actor therefore checks job type and seniority on each job page and remote work by text. Most jobs say "Not Applicable" for seniority (15 of 20 in our default test), so seniority filters can need many job pages.
  • LinkedIn's guest job page no longer shows "Job function" (0 of 20 jobs). Salary was on 5 of 20 job pages and on 0 of 140 search cards.
  • LinkedIn throttles heavy traffic (HTTP 429 / 999). None appeared in our ~300 requests at 1.2–2.4 s spacing. On a throttle the Actor waits, opens a new session (a new proxy IP on Apify) and stops that search after 3 tries.

Terms note

LinkedIn's User Agreement (section 8.2) prohibits scraping and automated access to its services. Its robots.txt asks for permission before automated access, and its Googlebot rules disallow /jobs-guest/.

In hiQ Labs v. LinkedIn the Ninth Circuit (2022) found scraping public pages is likely not "unauthorized access" under the CFAA. The district court then found hiQ had breached LinkedIn's User Agreement, and the case ended in a 2022 consent judgment.

This Actor reads only public, logged-out job postings, slowly, and collects no member profiles. You are responsible for how you use it and the data.

Example input

{"keywords": ["data engineer"], "location": "United States", "timePosted": "pastWeek", "maxItems": 100, "scrapeDetails": false}