LinkedIn Jobs Scraper
Pricing
from $0.99 / 1,000 results
LinkedIn Jobs Scraper
Search public LinkedIn job postings by keyword + location and get structured listings — title, company, location, posted date and job link — with an option to pull the full job description, seniority, employment type, applicant count and salary. Public job postings only; no login.
Pricing
from $0.99 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Search public LinkedIn job postings by keyword and location and get clean, structured results — job title, company, location, posting date, and a direct link — with an option to pull the full job description, plus seniority, employment type, applicant count, and salary. No account, no login, no API key.
Public job postings only. This actor collects public job listings — the kind anyone can browse without signing in. It does not touch personal profiles, contacts, emails, or anything behind a login.
Why use this actor
- Keyword + location search, exactly like searching jobs on LinkedIn yourself.
- Salary data when it's shown — many postings include the pay range (e.g.
$200,000.00/yr - $300,000.00/yr), captured verbatim. - Applicant count — see how many people have applied (e.g.
87 applicants,Over 200 applicants) to gauge competition. - Full job descriptions on demand — flip one switch to add the complete description, seniority level, employment type, job function, and industries for every job.
- Filter your search — remote-only, jobs from a specific company, or only jobs posted in the last day / week / month.
- Clean JSON output, ready for spreadsheets, databases, or your own pipelines.
- Nothing fails silently — if a search returns nothing, you get a clear reason, not an empty file.
How it works
- You enter search keywords and a location (and optionally: remote-only, a company, or a date filter).
- The actor runs that search on LinkedIn and reads the public job listings.
- Optionally, it opens each job to add the full description, seniority, employment type, applicant count, and salary.
- Results stream into your dataset, ready to download as JSON, CSV, or Excel.
You don't manage any of the fetching, retries, or blocking — just describe the search you want.
How many results you get per search
LinkedIn's public job search returns results in pages of about 10, up to roughly 1000 jobs per search. The actor pages through automatically and stops cleanly when it reaches the end (or your maxItems cap). To cover a larger pool, split one broad search into several focused ones — for example by narrower keywords, a tighter location, or the date filter.
Input
{"keywords": "software engineer","location": "United States","datePosted": "pastWeek","remote": false,"fetchDetail": true,"maxItems": 50,"maxConcurrency": 4,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
| Field | Type | Description |
|---|---|---|
keywords | string | Search keywords — job title, skill, or company. Example: software engineer. |
location | string | City, state, country, or region. Example: United States, London, Remote. Leave empty to search everywhere. |
companyId | string | Optional. Show only jobs from one company (its LinkedIn numeric company ID, from the company page URL). |
datePosted | string | any (default), past24h, pastWeek, or pastMonth. |
remote | boolean | If true, only return jobs marked as remote. Default false. |
fetchDetail | boolean | If true, opens each job to add the full description, seniority, employment type, job function, industries, applicant count, and salary. Slower but much richer. Default false. |
maxItems | integer | Overall cap on jobs returned. 0 = all available (up to ~1000). Default 50. |
maxConcurrency | integer | How many job pages to open in parallel when fetchDetail is on. Default 4. |
proxyConfiguration | object | Residential proxy strongly recommended. Defaults to the United States if no country is set. |
Output
One record per job. Below is a real record from the search software engineer in United States — with fetchDetail off:
{"_input": "software engineer @ United States","_source": "S1-guest-search","_scrapedAt": "2026-07-10T17:44:29Z","recordType": "JOB","jobId": "4438850133","title": "Software Engineer (All Levels)","company": "Blossom","companyLinkedinUrl": "https://www.linkedin.com/company/join-blossom-health","location": "New York, NY","postedDate": "2026-07-09","postedText": "18 hours ago","salaryText": null,"jobUrl": "https://www.linkedin.com/jobs/view/software-engineer-all-levels-at-blossom-4438850133","searchKeywords": "software engineer","searchLocation": "United States","searchCompanyId": null,"searchDatePosted": "any","searchRemote": false}
When fetchDetail is true, each record also gets the full job content. Here is a real detail record — note the salary and applicant count:
{"_source": "S1-guest-search+S2-detail","jobId": "4434251228","title": "Systems Engineer","company": "Blacksmith","companyLinkedinUrl": "https://www.linkedin.com/company/blacksmithrun","location": "New York, NY","postedDate": "2026-06-27","jobUrl": "https://www.linkedin.com/jobs/view/systems-engineer-at-blacksmith-4434251228","seniority": "Not Applicable","employmentType": "Full-time","jobFunction": "Information Technology","industries": "Software Development","applicantCount": "87 applicants","salary": "$200,000.00/yr - $300,000.00/yr","descriptionText": "About Blacksmith\nWe started by building infrastructure to run CI workloads really fast. Our first product helps companies run GitHub Actions substantially faster and cheaper by owning and operating our own global fleet of bare-metal machines rather than rentin... (full text continues)","descriptionHtml": "<div class=\"show-more-less-html__markup ...\"> ... </div>","jobCriteria": {"Seniority level": "Not Applicable","Employment type": "Full-time","Job function": "Information Technology","Industries": "Software Development"}}
Output fields
| Field | Type | Description |
|---|---|---|
_input | string | The search that produced this record. |
_source | string | Where the data came from — S1-guest-search (search) or S1-guest-search+S2-detail (search + full detail). |
_scrapedAt | string | UTC timestamp when the record was collected. |
recordType | string | Always JOB. |
jobId | string | LinkedIn's unique job posting ID. |
title | string | Job title. |
company | string | Employer name. |
companyLinkedinUrl | string | Link to the company's LinkedIn page. |
location | string | Job location as shown. |
postedDate | string | Posting date (YYYY-MM-DD). |
postedText | string | Human-readable posting age, e.g. 18 hours ago. |
salaryText | string | Salary snippet shown on the search card, when present. |
jobUrl | string | Direct link to the job posting. |
searchKeywords / searchLocation | string | The search inputs, echoed for traceability. |
searchCompanyId / searchDatePosted / searchRemote | mixed | The filters used for this run. |
seniority | string | Seniority level, e.g. Mid-Senior level. (only with fetchDetail) |
employmentType | string | e.g. Full-time, Contract. (only with fetchDetail) |
jobFunction | string | Job function, e.g. Engineering and Information Technology. (only with fetchDetail) |
industries | string | Industry, e.g. Software Development. (only with fetchDetail) |
applicantCount | string | Number of applicants, e.g. 87 applicants or Over 200 applicants. (only with fetchDetail) |
salary | string | Salary range from the job page, e.g. $200,000.00/yr - $300,000.00/yr, when shown. (only with fetchDetail) |
descriptionText | string | Full job description as plain text. (only with fetchDetail) |
descriptionHtml | string | Full job description with original formatting. (only with fetchDetail) |
jobCriteria | object | All job-criteria pairs exactly as shown on the posting. (only with fetchDetail) |
Searches that return nothing produce a record with an _error field instead of job data — so a run never fails silently.
Notes
- Salary and applicant count appear only with
fetchDetailon, and only when the posting itself shows them (salary is most common for postings in locations with pay-transparency rules). - Each search returns up to ~1000 jobs. For a bigger pool, split into several focused searches (narrower keywords, tighter location, or the date filter).
- Public job postings only — no login, no personal data.
- Residential proxy is recommended for reliable results at scale.