LinkedIn Jobs Search Scraper
Pricing
from $2.99 / 1,000 linkedin job records
LinkedIn Jobs Search Scraper
Scrape job listings from LinkedIn Jobs. Extract job titles, companies, locations, salary ranges, seniority levels, employment types, and application insights from the world's largest professional network.
Pricing
from $2.99 / 1,000 linkedin job records
Rating
0.0
(0)
Developer
Jobs API
Maintained by CommunityActor stats
0
Bookmarked
19
Total users
4
Monthly active users
10 days ago
Last modified
Categories
Share
What does LinkedIn Jobs Search Scraper do?
LinkedIn Jobs Search Scraper extracts complete, source-backed job postings from LinkedIn Jobs. It provides a bounded LinkedIn jobs API alternative for keyword searches and public job URLs, using LinkedIn's official guest search and detail HTML endpoints through ordinary HTTPS requests. It does not log in, solve challenges, fingerprint browsers, or fabricate application links.
Why use LinkedIn Jobs Search Scraper?
- Search by keyword, location, posting age, employment type, experience, workplace type, salary, and education filters.
- Enrich every accepted search card with its public detail page.
- Run several searches and deduplicate official numeric posting IDs.
- Extract structured descriptions, sections, responsibilities, requirements, benefits, salary, and application metadata.
- Fail closed: incomplete records and access diagnostics never appear as jobs.
- Schedule runs and consume results through Apify datasets, API access, webhooks, and integrations.
What data can LinkedIn Jobs Search Scraper extract?
| Field | Type | Description |
|---|---|---|
jobId | string | Official numeric LinkedIn posting ID |
title | string | Public job title |
companyName | string | Hiring company |
locationText | string | Public job location |
employmentType | string | Employment type when published |
salary | object | Published range, currency, and period |
description | string | Clean full description text |
requirements | array | Requirement items inferred from labeled sections |
publicUrl | string | Verified canonical LinkedIn job URL |
How to scrape LinkedIn jobs
- Choose a mode:
search,searchMultiple,single,multiple, orstartUrls. - Enter keywords and a location, or provide official public LinkedIn job URLs.
- Set
maxItemsandmaxPagesto keep the run bounded. - Optionally apply posting-age, job-type, experience, workplace, salary, or education filters.
- Start the Actor and inspect the dataset plus
RUN_SUMMARY. - Download or integrate the verified results.
How much will it cost to scrape LinkedIn jobs?
The Actor uses lightweight HTTP requests and a Node.js container. Cost depends mainly on the number of search pages, detail pages, and target response time. Start with maxItems: 3, maxPages: 1, and concurrency: 4. Larger runs require roughly one detail request per candidate and may encounter target rate limits, so increase limits gradually.
Input
See the input tab for full configuration options. Direct modes accept only HTTPS URLs on www.linkedin.com or linkedin.com. Search filters are encoded using the public guest-search parameters. maxItems is capped at 50, maxPages at 10, and detail concurrency at 8.
Example:
{"mode": "search","keywords": "software engineer","location": "United States","maxItems": 3,"maxPages": 1,"concurrency": 4,"requestTimeoutSecs": 25,"datePosted": "anyTime","jobType": "","experienceLevel": "","remoteFilter": "","salaryMin": 0,"salaryMax": 0,"educationLevel": ""}
Output
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Every dataset row has a verified canonical identity, HTTP-200 detail response, title, employer, location, and description of at least 80 characters.
{"recordType": "job","jobId": "4458952044","title": "Python Developer","companyName": "Example Company","locationText": "Austin, TX","publicUrl": "https://www.linkedin.com/jobs/view/python-developer-at-example-4458952044","detailVerified": true,"sourceStatusCode": 200}
Optional values are omitted when LinkedIn does not publish them. Empty arrays, blank strings, nulls, placeholders, and diagnostic objects are not written to the job dataset. RUN_DIAGNOSTICS and RUN_SKIPS preserve structured failure evidence separately.
Tips and advanced options
- Use
searchMultiplefor several keyword variants; results are deduplicated by posting ID and canonical URL. - Use
singleormultiplewhen you already have exact public detail URLs. - Keep concurrency modest. Higher values can increase target throttling without improving throughput.
- Inspect
RUN_HEALTHandRUN_METADATAto distinguish local and Apify Cloud execution. - Re-run a blocked input later rather than weakening the complete-record rules.
FAQ, disclaimer, and support
Why are there fewer rows than search cards?
Search cards are candidates only. The Actor writes a row after the public detail endpoint confirms identity, canonical URL, HTTP status, title, employer, location, and a sufficiently rich description.
Does the Actor bypass LinkedIn login or access controls?
No. It uses only public guest endpoints and ordinary headers. Access walls and transport failures are retained as diagnostics instead of job rows.
This Actor extracts only publicly available job and company information. Results can still contain personal data published by the source. Personal data is protected by the GDPR and other regulations; use it only with a legitimate purpose and consult legal counsel if unsure. Follow LinkedIn's terms and applicable law. Use the Issues tab for reproducible problems and the API tab for programmatic access.