LinkedIn Jobs Search Scraper avatar

LinkedIn Jobs Search Scraper

Pricing

from $2.99 / 1,000 linkedin job records

Go to Apify Store
LinkedIn Jobs Search Scraper

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

Jobs API

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

4

Monthly active users

10 days ago

Last modified

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?

FieldTypeDescription
jobIdstringOfficial numeric LinkedIn posting ID
titlestringPublic job title
companyNamestringHiring company
locationTextstringPublic job location
employmentTypestringEmployment type when published
salaryobjectPublished range, currency, and period
descriptionstringClean full description text
requirementsarrayRequirement items inferred from labeled sections
publicUrlstringVerified canonical LinkedIn job URL

How to scrape LinkedIn jobs

  1. Choose a mode: search, searchMultiple, single, multiple, or startUrls.
  2. Enter keywords and a location, or provide official public LinkedIn job URLs.
  3. Set maxItems and maxPages to keep the run bounded.
  4. Optionally apply posting-age, job-type, experience, workplace, salary, or education filters.
  5. Start the Actor and inspect the dataset plus RUN_SUMMARY.
  6. 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 searchMultiple for several keyword variants; results are deduplicated by posting ID and canonical URL.
  • Use single or multiple when you already have exact public detail URLs.
  • Keep concurrency modest. Higher values can increase target throttling without improving throughput.
  • Inspect RUN_HEALTH and RUN_METADATA to 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.