LinkedIn Jobs Scraper - Listings, Company & Type avatar

LinkedIn Jobs Scraper - Listings, Company & Type

Pricing

from $0.000035 / actor start

Go to Apify Store
LinkedIn Jobs Scraper - Listings, Company & Type

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

Flash Scrape

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

a day ago

Last modified

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-scraper data 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" becomes salaryMin: 115000, salaryMax: 120000, salaryPeriod: "year" — and the minSalary filter annualizes hourly/monthly pay before comparing.
  • Derives an isRemote flag 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/salaryMax by title and region.
  • Labor-market research — track posting volume, seniority mix, and remote share across sectors over time.

Input

FieldTypeDefaultDescription
searchQueriesarray["data analyst"]Job titles, skills, or company keywords — one per line. Each is searched separately and results are deduped.
locationstring"United States"City, state, country, or zip — e.g. London, Remote.
datePostedstring""r86400 (past 24 h), r604800 (past week), r2592000 (past month), or empty for any time.
experienceLevelarray[]Seniority codes: 1 Internship, 2 Entry, 3 Associate, 4 Mid-Senior, 5 Director.
contractTypearray[]Employment type codes: F Full-time, P Part-time, C Contract, T Temporary, I Internship.
remotearray[]Work arrangement codes: 1 On-site, 2 Remote, 3 Hybrid.
companyNamesarray[]Filter to specific company names.
companyIdarray[]Filter by LinkedIn numeric company IDs (from a company page URL).
maxItemsinteger100Max jobs per search query (1–1000).
requireSalarybooleanfalseDrop listings that don't show a salary.
minSalaryinteger0Keep only jobs paying at least this much per year (hourly/monthly pay annualized; 0 = off).
easyApplyOnlybooleanfalseKeep only LinkedIn Easy Apply jobs.
maxApplicantsinteger0Keep 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.

Support: found a bug or need a feature? Open an Issue on this actor's Issues tab — typical response within 1 business day.