LinkedIn Jobs Scraper
Pricing
from $1.50 / 1,000 results
LinkedIn Jobs Scraper
Scrape public LinkedIn job listings by job title, keyword, and location. Get clean, deduplicated job data including company, workplace type, posting date, salary, and job URL. No LinkedIn login or cookies required.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
NodeFlow
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
LinkedIn Job Listings Scraper
Find public LinkedIn job listings by job title, keyword, and location—without collecting recruiter profiles, company enrichment, comments, or unrelated personal data. This Apify Actor returns a clean, deduplicated dataset designed for job seekers, job boards, market research, alerts, and workflow automation.
Why use this LinkedIn jobs scraper?
Many general LinkedIn scrapers return hundreds of fields you do not need. LinkedIn Job Listings Scraper focuses on eight useful fields only:
- Job title
- Company name
- Location
- Workplace type:
remote,hybrid, oron-site - Posting date
- Salary, when LinkedIn publishes it
- Canonical LinkedIn job URL
- Search query used for the run
The Actor searches LinkedIn's publicly accessible job pages. It does not require LinkedIn credentials or cookies, and it does not scrape recruiter profiles, employee profiles, comments, applicants, or company details.
Features
- Search LinkedIn jobs by role, skill, or keyword
- Filter results by city, region, or country
- Choose exactly how many unique job listings to collect
- Automatic duplicate removal by LinkedIn job ID
- Salary extraction from structured job data when available
- Remote, hybrid, and on-site workplace classification
- Fast HTTP-based crawling with no browser overhead
- Optional Apify Proxy support for larger and repeated runs
- Clean JSON, CSV, Excel, XML, and RSS exports through Apify datasets
- API, webhook, schedule, Make, Zapier, and Google Sheets friendly output
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQuery | string | Yes | Software Engineer | Job title, skill, or keyword |
location | string | Yes | Istanbul | City, region, or country |
maxItems | integer | Yes | 50 | Number of unique jobs to collect (1–1000) |
proxyConfiguration | object | No | Apify Proxy in Console | Optional proxy settings |
Example input
{"searchQuery": "React Developer","location": "Berlin","maxItems": 25}
Output
Each dataset item contains only the requested job-listing fields. Missing salary or workplace data is returned as null; the Actor never invents unavailable values.
Example output
{"title": "Senior React Developer","companyName": "Example Technologies","location": "Berlin, Germany","workplaceType": "hybrid","postedAt": "2026-09-07","salary": "EUR 70,000–90,000 per year","jobUrl": "https://www.linkedin.com/jobs/view/4012345678","searchQuery": "React Developer"}
How to use
- Open the Actor in Apify Console.
- Enter a job title or keyword in Search query.
- Enter a city, region, or country in Location.
- Choose the Maximum number of jobs.
- Click Start and export the resulting dataset in your preferred format.
For frequent or high-volume runs, keep Apify Proxy enabled. Smaller searches can also run through a direct connection.
Run with the Apify API
curl "https://api.apify.com/v2/acts/YOUR_USERNAME~linkedin-job-listings-scraper/runs?token=YOUR_APIFY_TOKEN" \-X POST \-H "Content-Type: application/json" \-d '{"searchQuery":"Data Analyst","location":"London","maxItems":100}'
After the run finishes, read items from the run's default dataset or download them as JSON, CSV, Excel, XML, or RSS.
Run locally
Requirements: Node.js 20 or newer.
npm installnpm run buildnpm testnpm run test:live
To run the full Actor locally, place the example input at storage/key_value_stores/default/INPUT.json, then start it:
New-Item -ItemType Directory -Force storage/key_value_stores/defaultCopy-Item INPUT.example.json storage/key_value_stores/default/INPUT.jsonnpm start
Results are written to storage/datasets/default/.
Dataset fields
| Field | Nullable | Meaning |
|---|---|---|
title | No | LinkedIn job-listing title |
companyName | No | Employer name shown on the listing |
location | No | Location shown by LinkedIn |
workplaceType | Yes | remote, hybrid, or on-site |
postedAt | Yes | Published date, normally YYYY-MM-DD |
salary | Yes | Published salary range and period |
jobUrl | No | Tracking-free canonical job URL |
searchQuery | No | Original search keyword |
Common use cases
- Build a personal LinkedIn job search tracker
- Monitor remote or hybrid job opportunities
- Feed a niche job board or career dashboard
- Compare hiring demand by keyword and location
- Create scheduled job alerts with Apify webhooks
- Analyze published salary ranges
- Export clean job leads to Sheets, Airtable, or a database
Accuracy and limitations
- Results depend on public LinkedIn availability at run time.
- LinkedIn does not publish salary or workplace type for every job, so those values can be
null. - Public search availability can vary by country, IP address, and request volume. Use Apify Proxy if direct requests are rate-limited.
- Listings can expire or be removed after collection.
- This Actor is not affiliated with or endorsed by LinkedIn.
Responsible use
Scrape only publicly available data and use it in accordance with applicable laws and website terms. The Actor deliberately excludes recruiter profiles, personal profile details, comments, applicant data, and company enrichment.
Turkish quick start / Türkçe hızlı kullanım
Actor'a searchQuery alanında pozisyon veya anahtar kelimeyi, location alanında lokasyonu, maxItems alanında istediğiniz benzersiz ilan sayısını girin. Çıktı; ilan başlığı, şirket, lokasyon, çalışma şekli, yayın tarihi, varsa maaş, ilan bağlantısı ve arama kelimesinden oluşur. LinkedIn hesabı veya çerez gerekmez.
Support
If a run returns fewer results than requested, try a broader keyword or location and enable Apify Proxy. For reproducible bug reports, include the input (without secrets), run ID, and the relevant log excerpt.