LinkedIn Jobs by Title - Listings, Company, Location & CSV
Pricing
from $0.50 / 1,000 results
LinkedIn Jobs by Title - Listings, Company, Location & CSV
LinkedIn job listings scraper for public job listings by title and location - job title, company, location, posted date and job URL. Search multiple job titles in one run, deduplicated across queries, freshest first. No login, no cookies, no API key, no auto-apply. CSV, JSON or Excel.
Pricing
from $0.50 / 1,000 results
Rating
5.0
(1)
Developer
Flash Scrape
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
2
Monthly active users
12 hours ago
Last modified
Categories
Share
LinkedIn Jobs Scraper — $0.50 per 1,000 jobs, no cookies, no account
The cheapest serious way to get LinkedIn job postings as clean data. Keyword + location in, structured rows out: title, company, location, posting date, seniority, description and the direct job URL. No LinkedIn account, no cookies, no API key — it reads LinkedIn's public guest endpoints directly, which is why it can charge a twentieth of what most rivals do.
Need more than LinkedIn? The same publisher's Multi Job Board Scraper merges LinkedIn + Indeed + Glassdoor + 9 more boards in one run, deduplicated (a job on three boards bills once), with salary annualization, remote-only sweeps across 11 boards, a monitoring mode that only bills postings you haven't seen, and company careers-page watching. This actor is the fast cheap single-board tool; that one is the platform.
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 — the current rate is on this page's Pricing tab, and it is deliberately one of the cheapest on the Store.
What it does
- Searches LinkedIn's public job listings by keyword and location — read directly from LinkedIn's logged-out search pages (no third-party data provider, no account), 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 — the current per-job rate is on this page's Pricing tab (kept deliberately in the cheapest tier on the Store). 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. 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? Straight from LinkedIn's public, logged-out job search — no intermediary. 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
- Workday Jobs Scraper — live careers from any company hiring through Workday, no API key
- ATS Job Scraper — Greenhouse, Lever & Ashby company boards with only-new-jobs alerts
- 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.
API examples
Run it from code exactly like the Console — same input keys.
// Node.js (apify-client)const { ApifyClient } = require('apify-client');const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('flash_scraper/linkedin-jobs-scraper').call({searchQueries: ['data analyst'], location: 'Austin, TX', maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, 'jobs');
# Python (apify-client)from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("flash_scraper/linkedin-jobs-scraper").call(run_input={"searchQueries": ["data analyst"], "location": "Austin, TX", "maxResults": 100,})items = client.dataset(run["defaultDatasetId"]).iterate_items()
# cURLcurl -X POST "https://api.apify.com/v2/acts/flash_scraper~linkedin-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"searchQueries":["data analyst"],"location":"Austin, TX","maxResults":100}'
Schedules & pipelines
Every input works identically from the API, so it drops straight into an Apify Schedule (daily exports), webhooks (push finished runs to Slack or Sheets via Zapier/Make/n8n), or your own pipeline via the Dataset API. For a scheduled feed that only ever bills NEW postings, use the Multi Job Board Scraper's monitoring mode.