LinkedIn Jobs Scraper
Pricing
from $0.15 / 1,000 results
LinkedIn Jobs Scraper
Scrape LinkedIn job postings without a login or cookie. Get titles, companies, locations, salaries, posting dates, applicant counts, seniority, employment type and full job descriptions. Paste a LinkedIn search URL or give keywords and locations.
Pricing
from $0.15 / 1,000 results
Rating
5.0
(1)
Developer
Mary Lou
Maintained by CommunityActor stats
2
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
LinkedIn Jobs Scraper — extract job postings without a login or cookie
Scrape LinkedIn job postings at scale and export them as JSON, CSV or Excel. Get job titles, companies, locations, salaries, posting dates, applicant counts, seniority levels, employment types and full job descriptions — from the public LinkedIn job search, with no account and no credentials.
No login. No li_at cookie. No LinkedIn account to get restricted. This
LinkedIn job scraper reads the same public endpoints LinkedIn serves to
signed-out visitors and to search engines, so there is nothing of yours at
risk.
What you can do with it
- Build a job board or aggregate LinkedIn job listings into your own site
- Track hiring signals — watch which companies are growing, and in which cities and functions
- Recruitment and talent market research — salary benchmarking, job title taxonomies, demand for specific skills
- Competitor hiring intelligence — monitor exactly what your competitors are recruiting for and how fast
- Lead generation — companies actively hiring are companies actively spending
- Feed a job-matching or CV-matching model with real, current postings
- Daily new-jobs alerts — schedule it with Most recent + Past 24 hours
How to scrape LinkedIn jobs
The easy way — paste a search URL. Open LinkedIn job search in your browser, click whatever filters you want, and copy the URL from the address bar into LinkedIn search URLs. Every filter in it is honoured: keywords, location, geoId, date posted, experience level, job type, workplace type, company, and sort order.
Or build the search here. Fill in Keywords and Locations. Each keyword is paired with each location, so 3 keywords x 2 locations runs 6 searches in one go.
Leave Proxy on (it is on by default) — LinkedIn throttles a single IP quickly.
Input
| Field | What it does |
|---|---|
| LinkedIn search URLs | Paste job-search URLs straight from your browser. The recommended input |
| Keywords | Job titles or skills, e.g. python developer, product manager |
| Locations | Cities, regions or countries as LinkedIn spells them |
| Geo ID | LinkedIn's numeric location id, for when a name is ambiguous |
| Company IDs | Restrict results to specific companies |
| Date posted | Any time, past month, past week, past 24 hours |
| Sort by | Relevance, or most recent |
| Experience level | internship, entry, associate, mid-senior, director, executive |
| Employment type | full-time, part-time, contract, temporary, volunteer, internship, other |
| Workplace type | on-site, remote, hybrid |
| Distance | Search radius in miles |
| Scrape full job descriptions | Adds the description and criteria. One extra request per job |
| Max jobs | Hard cap on results, across every search |
Output
One row per job posting. Export as JSON, CSV, Excel, XML or RSS.
{"job_id": "4459150828","title": "Python Developer Django SQL - FinTech","company": "Client Server","company_url": "https://uk.linkedin.com/company/client-server","company_logo": "https://media.licdn.com/dms/image/...","location": "London, England, United Kingdom","posted_date": "2026-08-26","posted_text": "4 days ago","salary": null,"benefits": null,"seniority_level": "Mid-Senior level","employment_type": "Full-time","job_function": "Engineering, Information Technology","industries": "Software Development","applicants": "51 applicants","description": "We are looking for a Python Developer...","description_html": "<p>We are looking for...</p>","job_url": "https://uk.linkedin.com/jobs/view/...-4459150828","easy_apply": false}
| Field | Notes |
|---|---|
job_id | LinkedIn's stable id. Dedup on this |
posted_date | From the machine-readable date, not the "4 days ago" text — so it sorts and filters properly |
salary | Only present when the advertiser published one. Most do not |
applicants | LinkedIn's public count, e.g. "51 applicants" or "Be among the first 25" |
description / description_html | Plain text and original markup. Detail page only |
easy_apply | Whether the posting uses LinkedIn's one-click apply |
Two limits worth knowing before you scale up
1. Descriptions cost one request each. Title, company, location, salary and posting date come from the search results and are nearly free. The full description, seniority, employment type, function, industries and applicant count come from each job's own page — one extra request per job. That is also the first thing LinkedIn rate-limits: measured at a couple of dozen from a single IP.
If it does get throttled, the run does not fail. It logs a warning, stops fetching descriptions, and finishes with the search cards. Use a proxy, or turn descriptions off for a fast list.
2. LinkedIn caps one search at about 1,000 results. Past that it serves empty pages rather than an error — a scraper that does not know this reports "no more results" and quietly loses the rest. This one detects the ceiling and tells you, in the log and in the run summary.
To get past it, split the search: more locations, a narrower date window, or separate employment types. Four searches of 1,000 beat one search of 4,000, which does not exist.
Pricing
$0.15 per 1,000 jobs, plus Apify platform usage.
| Plan tier | Price per 1,000 jobs |
|---|---|
| Free / Bronze | $0.17 |
| Silver, Gold, Platinum, Diamond | $0.15 |
Platform usage is billed by Apify at your own plan rate, separately from the scraper charge. Measured with descriptions on and a residential proxy: roughly $0.24 per 1,000 jobs, most of it proxy traffic for the one extra request each description costs. Turn Scrape full job descriptions off and that drops by around 10x.
Set Max jobs to cap any run exactly. It counts unique jobs across every search, so overlapping keywords never bill twice — the same posting found by two searches is delivered once.
FAQ
Do I need a LinkedIn account or cookie?
No. That is the whole point of this scraper. Tools that ask for your li_at
cookie are logging in as you, and LinkedIn restricts accounts for it.
What am I giving up by not logging in? The signed-out surface has no recruiter contact details and no "job poster" profile, and applicant counts are the coarse public ones. Everything else — description, company, salary, criteria — is here.
Is scraping LinkedIn jobs legal? This reads public job adverts that LinkedIn publishes deliberately and serves to anyone, with no login and no paywall. Job postings are advertisements meant to be seen. What you do with the data afterwards is your responsibility.
Why is the salary field usually empty? Because most advertisers do not publish one. When it is on the posting, it is in the field.
Why did I get fewer jobs than LinkedIn's own count shows? Either the search hit the ~1,000 ceiling (check the run summary), or LinkedIn's count is inflated — it includes postings it will not serve to a signed-out visitor.
Can I scrape jobs from a specific company? Yes. Use Company IDs, or paste a search URL already filtered to that company.
Can I run it on a schedule? Yes. Set Sort by to Most recent and Date posted to Past 24 hours, then run it daily to collect only what is new.
How fast is it? Measured on the platform: 40 jobs from 4 searches in 33 seconds, 37 of them with full descriptions.
Related scrapers
- Website Contact Scraper — emails, phones and socials for any list of company domains. Pairs well with the companies you find here
- Google Search Scraper — organic SERP results with rank tracking
- TikTok Ad Library Scraper, Meta Ads Library Scraper, Google Ads Transparency Center Scraper — competitor ad intelligence