LinkedIn Jobs Scraper — Title, Company & Salary
Pricing
from $1.00 / 1,000 job listings
LinkedIn Jobs Scraper — Title, Company & Salary
LinkedIn Jobs Scraper for public job search. Search by keyword, location, or a job URL and export title, company, salary, seniority, and description as JSON.
Pricing
from $1.00 / 1,000 job listings
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by LinkedIn Corporation or its affiliates. Data is read from publicly accessible job search and job posting pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.
LinkedIn Jobs Scraper for public job listings (LinkedIn job scraper, LinkedIn jobs API alternative). Search by keyword, location, or a job URL. Export title, company, location, salary, seniority, employment type, applicant label, and description as JSON, CSV, or Excel. HTTP only, no login, no cookies. Call it from Python, Node.js, cURL, or Apify MCP.
Built for recruiting research, hiring-intent lists, and salary checks on public postings.
| Actor | Focus |
|---|---|
| LinkedIn Jobs Scraper ◄── you are here | Public job search and job pages |
| Upwork Jobs Scraper | Freelance job listings and monitor |
| Glassdoor Scraper | Employer reviews, salaries, and jobs |
| ZipRecruiter Jobs Scraper | US jobs by city and keyword |
| Seek Jobs Scraper | Australia and New Zealand jobs |
| InfoJobs Job Scraper | Spain jobs |
| Stepstone Jobs Scraper | DACH commercial job board |
| Naukri Jobs Scraper | India Naukri.com jobs |
When to use this Actor
- You need a LinkedIn jobs scraper that returns structured JSON from public search
- You want keyword, location, date posted, remote, and seniority without a browser
- You need company, salary text, employment type, and the job description on each row
- You scrape jobs from Python, Node.js, or an MCP assistant
- You run a daily monitor and only want new job ids saved
When not to use this Actor
- Profiles, posts, employees, or InMail. This Actor reads public job listings only.
- Apply-form automation or logged-in Easy Apply submission. No account and no cookies.
- A guaranteed external apply URL. Many postings keep the apply destination behind a sign-in wall. The row always includes the public job URL.
- Guaranteed salary. Pay is saved when the description states a range.
Key features
- Keyword and location search, plus extra keywords searched one at a time
- Search URL and job URL input. A pasted search keeps its query filters. A
/jobs/view/URL fetches that posting - Filters for date posted, on-site / remote / hybrid, employment type, experience level, and Easy Apply
- Description on by default — seniority, employment type, industries, and salary text come from the public job page
- Monitor mode with a named Key-Value store. The first run is the baseline. Later runs charge only new job ids
- 256 MB HTTP. Leave the proxy off unless a run is blocked
Input
| Field | Type | Description |
|---|---|---|
keyword | string | Search text, for example software engineer |
searchKeywords | string[] | Extra keywords, each searched separately |
location | string | Location text, for example United States or Berlin |
startUrls | request list | Public search URLs or job URLs |
companyIds | string[] | Company ids for the public company filter |
companyName | string | Case-insensitive company match after search |
datePosted | enum | Past 24 hours, past week, or past month |
workArrangement | enum | On-site, remote, or hybrid |
employmentType | enum | Full-time, part-time, contract, temporary, internship, volunteer |
experienceLevel | enum | Internship through executive |
easyApply | boolean | Easy Apply filter |
includeDescription | boolean | Open each new job page. Default on. One saved job is still one result |
maxItems / maxPages | integer | Caps. About 10 jobs per page. Default 25 items and 3 pages |
monitorMode | boolean | Save only job ids not seen in the named store |
proxyConfiguration | object | Leave off unless a run is blocked |
{"keyword": "software engineer","location": "United States","datePosted": "r604800","workArrangement": "2","maxItems": 25,"includeDescription": true,"proxyConfiguration": { "useApifyProxy": false }}
A job URL belongs in startUrls:
{"startUrls": [{ "url": "https://www.linkedin.com/jobs/view/1234567890" }],"maxItems": 1}
Output
One dataset row per job.
| Field | Type | Description |
|---|---|---|
jobId | string | Job id |
title | string | Listing title |
companyName / companyUrl | string | Hiring company |
location | string | Location label |
listedAt / listedText | string | Card date and relative time, when shown |
applicants | string | Applicant label from the posting |
seniorityLevel / employmentType / jobFunction / industries | string | Criteria from the job page |
salaryLabel / salaryMin / salaryMax / salaryPeriod | string / number | Parsed when the description states a range |
description | string | Plain-text job description |
offsiteApply | boolean | True when the page shows an offsite apply control |
url | string | Public job URL |
scrapedAt | string | ISO-8601 UTC |
{"jobId": "4476382792","title": "Java Software Engineer","companyName": "Example Defense Co","companyUrl": "https://www.linkedin.com/company/example-defense","location": "Aurora, CO","listedAt": "2026-10-06","listedText": "10 hours ago","applicants": "Be among the first 25 applicants","seniorityLevel": "Associate","employmentType": "Full-time","industries": "Defense and Space Manufacturing","salaryLabel": "$91,800.00 - $137,600.00","salaryMin": 91800,"salaryMax": 137600,"description": "Relocation assistance may be available.","offsiteApply": true,"url": "https://www.linkedin.com/jobs/view/4476382792","scrapedAt": "2026-10-07T08:00:00Z"}
Use cases
- Build a hiring-intent list of companies posting a role in the last week
- Compare salary ranges that employers put in the public description
- Watch one keyword on a schedule and keep only new job ids
- Hand company names to a reviews Actor for the same employers
- Export a recruiting search to JSON, CSV, or Excel for a spreadsheet
Integration examples
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('crawloop/linkedin-jobs-scraper').call({keyword: 'software engineer',location: 'United States',datePosted: 'r604800',maxItems: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.slice(0, 5));
Python
from apify_client import ApifyClientclient = ApifyClient(token)run = client.actor("crawloop/linkedin-jobs-scraper").call(run_input={"keyword": "software engineer","location": "United States","datePosted": "r604800","maxItems": 25,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item.get("title"), item.get("companyName"), item.get("salaryLabel"), item.get("url"))
cURL
curl "https://api.apify.com/v2/acts/crawloop~linkedin-jobs-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keyword":"software engineer","location":"United States","datePosted":"r604800","maxItems":25}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/linkedin-jobs-scraper.
Example prompts:
- "Run LinkedIn Jobs Scraper for software engineer in the United States, past week, max 25, and return title, companyName, location, salaryLabel, and url as JSON"
- "Scrape LinkedIn remote product manager jobs posted in the last 24 hours and summarize seniority and salary"
- "Pull LinkedIn data analyst jobs in Berlin, then run Glassdoor Scraper for the company names that appear most often"
Suite next step
This Actor covers public job listings. For freelance listings on the same skill, run Upwork Jobs Scraper. For employer reviews and salary pages on the same companies, run Glassdoor Scraper. For a US job board beside it, run ZipRecruiter Jobs Scraper.
FAQ
Is this an official jobs API? No. It reads the public job search and job pages. You do not log in and you do not provide cookies.
Can I paste a search URL?
Yes. startUrls accepts a public search URL and keeps keywords, location, and the filters in that URL. A /jobs/view/ URL fetches that one posting.
Do I need a proxy? Leave proxy off. The guest search responded without one. Enable a proxy only if a run is blocked.
Is salary always present?
No. salaryMin and salaryMax are set when the description contains a range. Read salaryPeriod before comparing two numbers. Many postings omit pay.
Does this scrape profiles or employees? No. The dataset is job listings: title, company, location, description, and the criteria on the job page.
What is monitor mode?
With monitorMode on, seen job ids are stored in a named Key-Value store. The first run is the baseline. Later scheduled runs save only ids that were not seen before, and stop when a page is already known.
Can I export JSON, CSV, or Excel? Yes. Every run writes a dataset you can download as JSON, CSV, or Excel, or pull with the Apify API.
Related Actors
| Actor | Focus |
|---|---|
| LinkedIn Jobs Scraper ◄── you are here | Public job listings |
| Upwork Jobs Scraper | Freelance job listings and monitor |
| Glassdoor Scraper | Employer reviews, salaries, and jobs |
| ZipRecruiter Jobs Scraper | US jobs |
| Seek Jobs Scraper | Australia and New Zealand jobs |
| InfoJobs Job Scraper | Spain jobs |
| Stepstone Jobs Scraper | DACH jobs |
| Naukri Jobs Scraper | India jobs |