LinkedIn Jobs Scraper — Salaries, Recruiters & Descriptions
Pricing
from $1.20 / 1,000 job listings
LinkedIn Jobs Scraper — Salaries, Recruiters & Descriptions
Scrape LinkedIn jobs by keyword and location, or paste LinkedIn job search links. Get titles, companies, salaries, full descriptions, recruiters, seniority, employment type, apply type and applicant counts as JSON, CSV or Excel. No login or API key.
Pricing
from $1.20 / 1,000 job listings
Rating
0.0
(0)
Developer
VeroAPIs
Maintained by CommunityActor stats
6
Bookmarked
38
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Security
Limited permissionsShare
LinkedIn Jobs Scraper extracts job listings from LinkedIn: title, company, location, posting date, salary (with min, max, currency and period), full description, seniority, employment type, applicant count, apply type and the recruiter who posted the job. Download them as JSON, CSV, Excel, or XML. It runs in the cloud, needs no coding, and no LinkedIn login or API key.
Try it right away: type what you're searching for and where, click Start, and watch the dataset fill up with structured job data. Or paste the link of a search you already ran on LinkedIn.
What data does it extract?
Each result is one job listing:
| Data | Details |
|---|---|
| 💼 Job | title, LinkedIn URL, posting date, "time ago", and any badges (e.g. Actively Hiring) |
| 🏢 Company | nested company object: name, LinkedIn page URL, and logo |
| 📍 Location | where the job is based, as shown on LinkedIn |
| 💰 Salary | pay or salary range as shown, plus salaryMin, salaryMax, salaryCurrency and salaryPeriod as clean values |
| 📋 Details | seniority level, employment type, and industries |
| 👥 Applicants | number of applicants (as a number and as LinkedIn phrases it) |
| 🚪 Apply type | easyApply (apply on LinkedIn) or external (apply on the employer's site) |
| 🙋 Job poster | the recruiter or hiring manager's name, headline and profile link, when LinkedIn shows one |
| 📝 Description | the full job description in both plain text and HTML, plus any emails written in it |
| 🔎 Search | the keywords and location of the search that found the job |
How do I scrape LinkedIn jobs?
- Say what you want: enter Search keywords (a job title or skill) and a Location. Put several on separate lines to run many searches at once. Or paste LinkedIn search links into LinkedIn search links.
- Narrow it down (optional): filter by date posted, experience level, job type, Easy Apply, under 10 applicants, distance, or specific companies.
- Set how many: choose Maximum jobs, or use
0for every job LinkedIn shows (about 1,000 per search). - Click Start, then download the results from the Storage tab in any format, or send them anywhere with integrations.
Paste a LinkedIn search link
Already built the perfect search on LinkedIn? Run it on linkedin.com/jobs, copy the address from your browser, and paste it into LinkedIn search links. You can paste as many links as you like. The scraper keeps the link's keywords, location, date posted, company, distance, Easy Apply, under-10-applicants, experience level, and job type settings. When you add links, the keyword and location fields are not used; the other filters on the form still apply.
Many searches in one run
Put each keyword on its own line, and each location on its own line. Every keyword runs in every location, so data analyst and nurse × London and Paris gives four searches in one run. Jobs found by more than one search are saved once, and each row tells you which search found it.
Filters that really filter
LinkedIn's public job search no longer applies its experience level, job type, remote, or sort filters on its own. This scraper checks every job's LinkedIn page instead, so with Experience level or Job type set you get only jobs that carry the label you picked. Jobs that don't match are skipped and never charged. Pick a single level or type for the fastest results: its words (for example entry level or contract) are added to your search so more of the jobs found match. When a search keeps turning up jobs that don't match, it wraps up and the run tells you, so you can pick a single level or use broader keywords.
Looking for remote or hybrid work? Add remote or hybrid to your keywords.
Speed vs. detail
By default the scraper opens each job's page to collect the full description, seniority, employment type, industries, applicant count, apply type, and job poster. If you only need the essentials shown on the results list (title, company, location, date, and salary when present), turn off Fetch full job details for a much faster, lighter run.
Input example
{"keywords": "software engineer\ndata scientist","location": "United States","maxItems": 100,"datePosted": "pastWeek","experienceLevel": ["entryLevel"],"jobType": ["fullTime"],"easyApply": false,"under10Applicants": false,"scrapeCompanyDetails": true}
Or with a search link:
{"startUrls": [{ "url": "https://www.linkedin.com/jobs/search/?keywords=marketing%20manager&location=Germany&f_TPR=r604800" }],"maxItems": 50}
Output example (abridged)
{"id": "4406118990","title": "Software Engineer, New Grad","url": "https://www.linkedin.com/jobs/view/4406118990","company": {"name": "Notion","url": "https://www.linkedin.com/company/notionhq","logo": "https://media.licdn.com/dms/image/v2/…/notionhq_logo"},"location": "San Francisco, CA","postedDate": "2026-10-21","postedTimeAgo": "4 days ago","salary": "$126,000.00/yr - $146,000.00/yr","salaryMin": 126000,"salaryMax": 146000,"salaryCurrency": "USD","salaryPeriod": "yearly","emails": ["recruiting@example.com"],"employmentType": "Full-time","seniorityLevel": "Entry level","industries": "Software Development","applicantsCount": 200,"applicantsText": "Over 200 applicants","applyType": "external","jobPoster": {"name": "Jane Doe","title": "Senior Technical Recruiter at Notion","profileUrl": "https://www.linkedin.com/in/example-recruiter"},"benefits": ["Actively Hiring"],"descriptionText": "About the role\n\nWe're looking for a software engineer to build Notion's editor…","descriptionHtml": "<strong>About the role</strong><br><br>We're looking for a software engineer…","searchKeywords": "software engineer","searchLocation": "United States"}
Input reference
| Field | Type | Description |
|---|---|---|
keywords | string | Job title, skill, or company to search for. One search per line. |
location | string | City, state, country, or region. One per line. Leave empty to search worldwide. |
startUrls | array | LinkedIn job search links. When set, keywords and location are not used. |
maxItems | integer | Total jobs to return across all searches. 0 = no limit. Default 25. |
datePosted | string | any, past24h, pastWeek, or pastMonth. Default any. |
experienceLevel | array | Any of internship, entryLevel, associate, midSenior, director, executive. Checked on each job's page. |
jobType | array | Any of fullTime, partTime, contract, temporary, internship, volunteer, other. Checked on each job's page. |
easyApply | boolean | Only jobs you can apply to with LinkedIn Easy Apply. Default false. |
under10Applicants | boolean | Only jobs with fewer than 10 applicants so far. Default false. |
radius | integer | Search radius in miles around the location. |
companyIds | array | Restrict to specific companies by numeric LinkedIn company ID (the f_C value in a LinkedIn search link, e.g. 1441 for Google). |
scrapeCompanyDetails | boolean | Open each job page for the full description and details. Default true. |
Why scrape LinkedIn jobs?
- Job-market research: track demand for roles, skills, and titles over time.
- Recruiting & sourcing: monitor who's hiring, who posted each job, and how competitive each posting is.
- Lead generation: find companies actively hiring in your space, with the recruiter to contact.
- Salary benchmarking: gather pay ranges as clean numbers where they're disclosed.
- Job alerts: schedule a daily run with Date posted set to Past 24 hours and get fresh jobs every morning.
Integrations
Send results straight to Google Sheets, Slack, Airtable, a webhook, or your own database with Apify integrations, or connect the scraper to Make, n8n, and Zapier. Schedule runs in Apify Console to keep a job feed up to date automatically.
Run it from your code or AI assistant
Call it from JavaScript with the Apify client (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('vero-api/linkedin-jobs-scraper').call({keywords: 'product manager',location: 'London, England, United Kingdom',datePosted: 'pastWeek',maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, 'jobs');
Or from Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("vero-api/linkedin-jobs-scraper").call(run_input={"keywords": "product manager","location": "London, England, United Kingdom","datePosted": "pastWeek","maxItems": 100,})for item in client.dataset(run.default_dataset_id).iterate_items():print(item["title"], item["company"]["name"], item["salary"])
Your token is under Settings → API & Integrations in Apify Console.
AI assistants such as Claude, ChatGPT, and Cursor can run it too, through the Apify MCP server. Add this to your assistant's MCP settings:
{"mcpServers": {"linkedin-jobs-scraper": {"url": "https://mcp.apify.com?tools=vero-api/linkedin-jobs-scraper"}}}
Then just ask, for example:
- "Find entry-level data analyst jobs posted in London this week and list the ones with a salary."
- "Which companies posted remote product manager jobs on LinkedIn today, and who are the recruiters?"
Pricing
This Actor uses pay-per-event pricing: a tiny fee when a run starts, plus a flat fee per job delivered; the exact rate is on the Pricing tab. You only pay for the listings you actually receive. Jobs skipped by your filters are free. With Fetch full job details on, you pay only for jobs delivered with their full details. Any other job is replaced with the next one at no charge. Set Maximum jobs to control your spend, and a run stops cleanly at your spending limit.
FAQ
Do I need a LinkedIn account or API key? No. The scraper reads LinkedIn's public job pages, the same ones anyone can see without logging in.
Can I paste a LinkedIn search link? Yes. Paste one or more links into LinkedIn search links, or straight into the keywords box, and the scraper runs those searches.
How many jobs can I get? LinkedIn shows about 1,000 jobs per search. For bigger pulls, add more keywords or locations on separate lines, or narrow each search by date posted.
Can I search several job titles and cities at once? Yes. Put each keyword and each location on its own line; every keyword runs in every location, and each job is saved once.
Do the experience level and job type filters really work? Yes. Every job is checked against the label on its LinkedIn page, and jobs that don't match are skipped at no charge. LinkedIn marks many jobs as "Not Applicable" for experience level; those are left out when you pick a level.
How do I find remote jobs? Add remote (or hybrid) to your keywords. LinkedIn's public pages don't label jobs as remote or on-site, so there's no separate filter.
Does it get salaries? Yes, whenever the employer lists pay on LinkedIn, as the original text plus clean min, max, currency, and period values.
Does it get the recruiter? Yes, when LinkedIn shows who posted the job: name, headline, and profile link in jobPoster.
How do I get only new jobs every day? Schedule the actor in Apify Console with Date posted set to Past 24 hours.
What formats can I download? JSON, CSV, Excel, XML, RSS, and HTML, or read the results through the Apify API.
Is this an official LinkedIn tool? No. This actor is not affiliated with, endorsed by, or sponsored by LinkedIn. It collects public job listings that anyone can browse on LinkedIn.
More tools from us
- Multi Job Board Scraper: jobs from LinkedIn, Indeed, Glassdoor, and more in one run.
- Indeed Jobs Scraper: job listings, salaries, and companies from Indeed.
- Google Jobs Scraper: jobs gathered from across the web by Google.
- Naukri Jobs Scraper (Gulf): jobs, salaries, and companies from Naukri across the Gulf and India.
- Bayt Jobs Scraper (Middle East): job listings from Bayt across the Middle East and North Africa.
- Email Validator: check that the contact emails you collect are deliverable.
Notes
- Nothing to configure: reliable results are handled for you.
- The scraper uses LinkedIn's public job pages, the same data anyone can see without logging in. It does not log in or access private data.
emails,salary, andjobPosterare included whenever the posting shows them.- LinkedIn shows roughly 1,000 results per search. To pull more, split your search into narrower queries (by location, keywords, or date).