LinkedIn Jobs Scraper (Pay-Per-Event)
Pricing
Pay per event
LinkedIn Jobs Scraper (Pay-Per-Event)
Scrape LinkedIn job listings via the public guest API — no login or cookies. Filter by keyword, location, job type, experience level, workplace type and date posted. Returns title, company, salary, full description, seniority, employment type and applicant count. HTTP-only drop-in.
LinkedIn Jobs Scraper extracts job posting data from LinkedIn using its public guest API — no login, cookies, or account required. Search by keyword and location, filter by job type, experience level, workplace type and date posted, and get structured job data: title, company, location, salary, full description, seniority level, employment type, applicant count and more. It's HTTP-only (no headless browser), so it's fast and lightweight, and it runs on the Apify platform with API access, scheduling, integrations, proxy rotation and monitoring built in.
This actor is a pay-per-event drop-in for automation-lab/linkedin-jobs-scraper: the same input fields and output field names, at the same pricing ($0.005 / run start + $0.58 / 1,000 jobs) — no monthly fee. What you gain over the reference: run-level deduplication, batch query × location, a machine-readable postedDate, migration-safe resumable state, and an optional custom map function.
What does LinkedIn Jobs Scraper do?
It calls LinkedIn's logged-out ("guest") jobs endpoints — the same data anyone sees browsing LinkedIn jobs without signing in — paginates the search results, and (optionally) fetches each job's detail page for the full description, salary, seniority, employment type, job function, industries and applicant count. Results are written to a structured dataset you can export as JSON, CSV, or Excel, or pull via the Apify API.
Why use LinkedIn Jobs Scraper?
- No login or cookies — uses LinkedIn's public guest endpoints, so there's no session to break.
- Full job detail extraction — salary, description (HTML + plain text), seniority, job function, industries and applicant count.
- Hiring-intent lead generation — find companies actively hiring for a role, then prioritize outreach.
- Recruiting & salary intelligence — monitor competitor hiring and benchmark compensation from live pay-transparency data.
- Job-market research — analyze demand, remote-vs-onsite mix, and job-description language at scale.
- Fast and lightweight — pure HTTP + cheerio parsing, low memory, no browser overhead.
- Flexible filters — keyword, location, job type, experience level, workplace type, date posted and sort order.
How to use LinkedIn Jobs Scraper
- Enter a Search query (e.g.
software engineer,data analyst,marketing manager). - Enter a Location (e.g.
New York,London,United States) or leave it empty to search worldwide. - Optionally filter by job type, experience level, workplace type or date posted, and choose a sort order.
- Set Max jobs (up to 1,000 per search).
- Leave Scrape full job details on for descriptions and salary, or turn it off for faster listing-only runs.
- Click Start and download your results as JSON, CSV, or Excel — or access them via the Apify API.
Input
Configure the run from the Input tab or via the API. The input matches automation-lab/linkedin-jobs-scraper field-for-field.
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | required | Job title, keyword, or company name |
location | string | "" | City, state, country, or Remote; empty = worldwide |
maxJobs | integer | 50 | Max jobs to scrape per search (up to 1,000) |
jobType | string | all | F=Full-time, P=Part-time, C=Contract, T=Temporary, I=Internship |
experienceLevel | string | all | 1=Internship, 2=Entry, 3=Associate, 4=Mid-Senior, 5=Director, 6=Executive |
workplaceType | string | all | 1=On-site, 2=Remote, 3=Hybrid |
datePosted | string | all | r86400=Past 24h, r604800=Past week, r2592000=Past month |
sortBy | string | R | R=Most relevant, DD=Most recent |
scrapeJobDetails | boolean | true | Fetch full details (description, salary, criteria, applicants) |
maxRequestRetries | integer | 3 | Retry budget per request; each retry rotates the proxy IP |
proxyConfiguration | object | Apify Proxy (datacenter) | Proxy settings |
Input example
{"searchQuery": "software engineer","location": "United States","maxJobs": 50,"jobType": "F","workplaceType": "2","scrapeJobDetails": true}
Tip: when calling the actor via the Apify API you can also pass
searchQueryandlocationas lists of strings — every query is searched in every location in one run.
Output
Each job is one dataset row. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
{"id": "4442187240","title": "Data Analyst 2","url": "https://www.linkedin.com/jobs/view/data-analyst-2-at-new-york-state-department-of-health-4442187240","companyName": "New York State Department of Health","companyLinkedinUrl": "https://www.linkedin.com/company/nysdoh","companyLogo": "https://media.licdn.com/dms/image/v2/.../nysdoh_logo","location": "Albany, NY","postedAt": "1 week ago","postedDate": "2026-07-17","salary": "$86,681.00/yr - $109,650.00/yr","applicantsCount": 109,"workplaceType": "Remote","descriptionHtml": "<strong>Minimum Qualifications</strong> ...","descriptionText": "Minimum Qualifications ...","seniorityLevel": "Not Applicable","employmentType": "Full-time","jobFunction": "Science, Information Technology, and Engineering","industries": "Public Health","applyUrl": "https://www.linkedin.com/jobs/view/data-analyst-2-at-new-york-state-department-of-health-4442187240","benefits": null,"searchQuery": "data analyst","searchLocation": "New York","scrapedAt": "2026-07-27T10:38:17.961Z"}
Data fields
| Field | Description |
|---|---|
id | LinkedIn job posting ID |
title | Full position title |
url | Direct LinkedIn job posting link |
companyName | Hiring company |
companyLinkedinUrl | Company's LinkedIn page |
companyLogo | Company logo image URL |
location | Job location (city, state, country) |
postedAt | Relative posted label (e.g. "3 days ago") |
postedDate | Machine-readable posted date (YYYY-MM-DD) |
salary | Salary range when disclosed |
applicantsCount | Number of applicants (integer) |
workplaceType | Remote / On-site / Hybrid (when a workplace filter is set) |
descriptionHtml | Full job description (HTML) |
descriptionText | Full job description (plain text) |
seniorityLevel | Entry, Mid-Senior, Director, etc. |
employmentType | Full-time, Part-time, Contract, etc. |
jobFunction | Engineering, Marketing, Sales, etc. |
industries | Industry sectors |
applyUrl | Application link (the job page) |
benefits | Listed benefits, when present |
searchQuery / searchLocation | The query and location this row came from |
scrapedAt | ISO timestamp of extraction |
Fields that a listing doesn't disclose (salary, benefits) are returned as null.
How much does it cost to scrape LinkedIn jobs?
This actor uses pay-per-event pricing:
| Event | Price | Description |
|---|---|---|
| Run started | $0.005 | One-time charge when the scraper starts |
| Job scraped | $0.58 / 1,000 | Per job written to the dataset (deduplicated by job ID) |
Scraping 1,000 jobs costs about $0.585 ($0.005 start + $0.58 for listings). Higher Apify subscription tiers get a lower per-job rate automatically. Apify's free plan includes monthly platform credits, so you can scrape thousands of jobs per month for free. A job is billed only after it is successfully written, so failed fetches never cost you.
Tips for best results
- Use specific keywords —
react developerbeatsdeveloperfor relevance. - Combine filters (job type + experience level + workplace type) to narrow results.
- Set
scrapeJobDetails: falsefor faster runs when the listing summary (title, company, location) is enough. - Sort by
DD(Most recent) to catch the freshest postings first. - LinkedIn caps a query at ~1,000 results — use more specific queries or split by location to go deeper.
- If you see frequent rate limits on very large runs, switch
proxyConfigurationto RESIDENTIAL groups.
FAQ and support
Does it require a LinkedIn account? No. It uses LinkedIn's public guest API, which needs no login, cookies, or tokens.
What's the maximum number of results? LinkedIn's guest API caps search results at ~1,000 per query. For more, run multiple searches with different keyword/location/filter combinations.
Why are some fields null? Not every listing discloses salary, workplace type, or benefits. When an employer omits them, the field is null.
Is it legal to scrape LinkedIn? This actor is provided for educational and research purposes and accesses only publicly available, logged-out data. You are responsible for ensuring your use complies with LinkedIn's Terms of Service and applicable laws. Use scraped data responsibly.
Known limitations: LinkedIn occasionally rotates its HTML structure — if extraction breaks, please open an issue on the Issues tab. The guest API does not expose company-detail pages (employee count, revenue) or a guest-usable external apply URL, so applyUrl points to the LinkedIn job page.
Found a bug or need a custom variant? Open an issue on the Issues tab.