LinkedIn Jobs Scraper - Listings, Company & Type
Pricing
from $0.000035 / actor start
LinkedIn Jobs Scraper - Listings, Company & Type
Scrape LinkedIn job postings by keyword & location — title, company, location, work type, parsed salary, employment type, seniority, sector, applicants, recruiter, posted date & job URL. No login, no cookies, no auto-apply. Dedup, filters & a 0-100 job score. Export CSV/JSON/Excel.
Pricing
from $0.000035 / actor start
Rating
5.0
(1)
Developer
Flash Scrape
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
LinkedIn Jobs Scraper — public job listings with parsed salary, no login, no auto-apply
Scrape LinkedIn jobs into a clean, analysis-ready spreadsheet. Give this actor job titles and a location and get back one row per posting: title, company, location, parsed salary (min/max/period plus the raw string), employment type, seniority, job function, sector, applicant count as an integer, recruiter, posting date, and the job URL — each row topped with a 0–100 job score so the freshest, best-documented, salary-showing listings sort first. Built for job seekers, recruiters, job-board builders, and labor-market analysts. It reads only public, logged-out listings — no LinkedIn login, no cookies, and it never auto-applies. Pay-per-result: $5 per 1,000 jobs.
What it does
- Searches LinkedIn's public job listings by keyword and location — postings are fetched through the
valig/linkedin-jobs-scraperdata provider, with your native filters (date posted, experience level, employment type, remote/on-site/hybrid, specific companies) applied at the source. - Parses salaries into numbers:
"$115,000.00/yr - $120,000.00/yr"becomessalaryMin: 115000,salaryMax: 120000,salaryPeriod: "year"— and theminSalaryfilter annualizes hourly/monthly pay before comparing. - Derives an
isRemoteflag by scanning the title, location, and description for remote/WFH signals (LinkedIn's own field for this isn't exposed on public listings). - Parses applicant counts to integers so you can filter to low-competition roles with
maxApplicants. - Normalizes and cleans: posting dates to
YYYY-MM-DD, tracking parameters stripped from job URLs, whitespace collapsed, duplicates removed across all your search queries. - Scores every job 0–100 — salary shown +25, freshness up to +25, full description +20, seniority/sector present +12, company present +8 — and sorts the dataset best-first (ties broken by highest salary).
- Applies your client-side filters after cleaning:
requireSalary,minSalary(annualized),easyApplyOnly,maxApplicants.
Use cases
- Job search automation — schedule a daily run for your target titles, filter to
r86400(past 24 h) and low applicant counts, and be among the first applicants. - Recruiting intelligence — see which companies are hiring for a role, at what advertised salary, and how much competition each posting draws.
- Job-board aggregation — feed a niche job board with clean, deduped LinkedIn postings including salary data where shown.
- Salary benchmarking — collect the minority of postings that disclose pay and analyze
salaryMin/salaryMaxby title and region. - Labor-market research — track posting volume, seniority mix, and remote share across sectors over time.
Input
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | array | ["data analyst"] | Job titles, skills, or company keywords — one per line. Each is searched separately and results are deduped. |
location | string | "United States" | City, state, country, or zip — e.g. London, Remote. |
datePosted | string | "" | r86400 (past 24 h), r604800 (past week), r2592000 (past month), or empty for any time. |
experienceLevel | array | [] | Seniority codes: 1 Internship, 2 Entry, 3 Associate, 4 Mid-Senior, 5 Director. |
contractType | array | [] | Employment type codes: F Full-time, P Part-time, C Contract, T Temporary, I Internship. |
remote | array | [] | Work arrangement codes: 1 On-site, 2 Remote, 3 Hybrid. |
companyNames | array | [] | Filter to specific company names. |
companyId | array | [] | Filter by LinkedIn numeric company IDs (from a company page URL). |
maxItems | integer | 100 | Max jobs per search query (1–1000). |
requireSalary | boolean | false | Drop listings that don't show a salary. |
minSalary | integer | 0 | Keep only jobs paying at least this much per year (hourly/monthly pay annualized; 0 = off). |
easyApplyOnly | boolean | false | Keep only LinkedIn Easy Apply jobs. |
maxApplicants | integer | 0 | Keep only jobs with at most this many applicants (0 = off). |
{"searchQueries": ["data analyst"],"location": "United States","datePosted": "r604800","experienceLevel": ["3", "4"],"remote": ["2"],"maxItems": 100,"requireSalary": true,"minSalary": 90000}
Output
One dataset row per job, deduped across queries and sorted by job_score. Export to CSV, JSON, or Excel from the Output tab.
{"jobTitle": "Data Analyst","companyName": "Synechron","location": "Pittsburgh, PA","jobFunction": "Information Technology","isRemote": false,"salaryRaw": "$115,000.00/yr - $120,000.00/yr","salaryMin": 115000,"salaryMax": 120000,"salaryPeriod": "year","employmentType": "Full-time","seniority": "Mid-Senior level","sector": "IT Services and IT Consulting","applicants": 200,"applyType": "EXTERNAL","applyUrl": "https://careers.synechron.com/...","postedDate": "2026-06-21","postedTimeAgo": "2 weeks ago","recruiterName": null,"recruiterUrl": null,"companyUrl": "https://www.linkedin.com/company/synechron","jobUrl": "https://www.linkedin.com/jobs/view/4422685636","descriptionText": "We are seeking a Data Analyst to…","descriptionHtml": "<p>We are seeking a Data Analyst to…</p>","jobId": "4422685636","job_score": 69}
Pricing
This actor uses Apify pay-per-event pricing: $5 per 1,000 jobs ($0.005 per result). You're charged only for the cleaned listings delivered after dedup and your filters — with requireSalary on, listings without pay data cost you nothing. No subscription, no charge for empty runs. Use maxItems and the filters to keep cost predictable: a daily 100-job tracked search costs about $0.50/month. The free Apify plan is enough to try it on a real search first.
Tips / FAQ
Does this apply to jobs for me? No. It only collects public listings into a dataset — it never logs in and never submits an application, including Easy Apply.
Do I need a LinkedIn account or cookie? No. It scrapes the public, logged-out job search — no li_at cookie, no credentials, no API key.
Why is salary usually empty? LinkedIn shows pay on a minority of postings. The parser fills salaryMin/salaryMax/salaryPeriod whenever a figure appears; use requireSalary to keep only those rows.
What's the difference between jobFunction and isRemote? jobFunction is the role area LinkedIn lists (e.g. "Information Technology"). Remote status isn't a separate public field, so isRemote is derived from remote/WFH keywords in the title, location, and description — treat it as a strong signal, not gospel.
Where does the data come from, and what if the source is down? Listings come via an upstream data provider (valig/linkedin-jobs-scraper). If one query fails it's skipped and the run continues; on a full transient outage the run ends gracefully with a "temporarily unavailable — please retry" message and you're charged nothing.
Is scraping LinkedIn jobs legal? This collects public job data only, from logged-out pages. LinkedIn rate-limits aggressively and restricts automated access in its terms, so expect occasional partial runs; use the data for personal, research, or recruiting purposes and follow local law.
Related actors
- Indeed Jobs Scraper — the same clean-jobs approach for Indeed
- Multi-Jobboard Scraper — one search across several job boards at once
- Company & Domain Enricher — turn hiring companies into full firmographic records
Support: found a bug or need a feature? Open an Issue on this actor's Issues tab — typical response within 1 business day.