LinkedIn Jobs Scraper with Salary & Company Enrichment
Search public LinkedIn job listings by keyword, location, salary band, job type and more, with full descriptions, parsed salary ranges, inferred seniority, visa-sponsorship mentions and enriched hiring-company details. No cookies or login required.
Open in Apify Store$0.99 / 1K on Free
Short answer
LinkedIn Jobs Scraper with Salary & Company Enrichment is an Apify Store Actor for LinkedIn Jobs data that returns 22 published output fields, including title, companyName, location, salary. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 29 input settings, none required. It covers 6 of the 7 core LinkedIn Jobs fields this site tracks. Last updated Nov 11, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
22 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
titlecompanyNamelocationsalarysalarySourceapplicantCounteasyApplyemploymentTypeseniorityLevelpostedDateexpiresAtjobUrlsalaryRange.currencysalaryRange.minYearlysalaryRange.maxYearlycompanyIndustrycompanySizecompanyHeadquarterscompanyFoundedcompanyFollowersCountcompanyWebsitecompanyNumericId
Not in the schema among the core LinkedIn Jobs fields: description. The field matrix shows which other tools return them.
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| searchQueries | array | No | – | Job titles, skills or phrases to search for, one per line (e.g. 'data analyst', 'registered nurse'). Each keyword is searched in every location you list, and results are merged without duplicates. |
| searchUrls | array | No | – | Paste job search links copied from LinkedIn (linkedin.com/jobs/search/?...). The keywords, location and filters inside each link are kept. |
| jobUrls | array | No | – | Scrape specific job postings: paste job links (linkedin.com/jobs/view/...) or numeric job IDs. Postings that have been taken down are skipped. |
| locations | array | No | – | Cities, regions or countries in English (e.g. 'Germany', 'Austin, Texas', 'London Area, United Kingdom'). Every keyword is searched in each location. A location LinkedIn doesn't recognise is reported and skipped rather than silently searched as the United States. Leave empty to search worldwide. |
| geoIds | array | No | – | Optional numeric LinkedIn location IDs (the geoId value in a LinkedIn search link, e.g. 101282230 for Germany). Use these for exact places in any language. |
| distance | string | No | – | Search radius around a city-level location, in miles. |
| timePosted | string | No | – | Only jobs posted (or reposted) within this period. |
| companies | array | No | – | Only jobs from these employers. Enter company names (e.g. 'General Motors'), LinkedIn company or university page links, or numeric company IDs. Leave the keywords empty to get all of a company's open jobs. |
| excludeCompanies | array | No | – | Skip jobs from these employers (exact company name or LinkedIn company page link). |
| easyApply | boolean | No | false | Only jobs you can apply to directly on LinkedIn. |
Show the other 19 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| under10Applicants | boolean | No | false | Only jobs that have had fewer than 10 applicants so far. |
| experienceLevel | string | No | – | Only jobs listed at this seniority level on LinkedIn. Jobs that LinkedIn lists as 'Not Applicable' are left out when a level is chosen. |
| jobType | string | No | – | Only jobs with this employment type. |
| industry | array | No | [] | Only jobs from employers in these LinkedIn industries. |
| companySizes | array | No | [] | Only jobs from employers of these sizes, as listed on their LinkedIn page. Each employer's page is looked up once. Jobs whose employer size isn't listed are kept. |
| excludeStaffingAgencies | boolean | No | false | Skip jobs posted by employers in LinkedIn's 'Staffing and Recruiting' industry. |
| requireSalary | boolean | No | false | Only jobs that state their pay, either in LinkedIn's pay range box or in the job description. |
| minYearlySalary | integer | No | – | Skip jobs whose stated pay range tops out below this yearly amount. Hourly, weekly and monthly pay is converted to a yearly figure. The amount is compared in the job's own currency, so set 'Salary currency' to compare like with like. Jobs without a stated salary are kept unless 'Only jobs with a sal |
| salaryCurrency | string | No | – | Only jobs whose stated pay is in this currency. Also sets the currency of 'Minimum yearly salary'. Jobs without a stated salary are kept unless 'Only jobs with a salary' is on. |
| requireRecruiter | boolean | No | false | Only jobs where LinkedIn shows the person who posted the job. |
| includeTitleKeywords | array | No | – | Keep only jobs whose title contains at least one of these words (not case-sensitive). Useful because LinkedIn's keyword matching is broad. |
| excludeTitleKeywords | array | No | – | Skip jobs whose title contains any of these words, e.g. 'Senior' or 'Intern'. |
| excludeJobIds | array | No | – | Job IDs (the 'id' field of an earlier run) to leave out, so scheduled runs return only new postings. |
| scrapeJobDetails | boolean | No | true | Open each job to add the full description, salary, seniority, job type, industry, applicant count, recruiter and Easy Apply status. Turn off for a fast list of titles, companies, locations and dates only. Filters that need these details switch it on automatically. |
| includeCompanyDetails | boolean | No | true | Add each employer's LinkedIn profile: industry, size, headquarters, website, founding year, office locations, followers, tagline and description. Fetched once per company. |
| enrichmentDepth | string | No | standard | Standard returns each job's core details. Extended also adds similar jobs, 'people also viewed' jobs, related searches and LinkedIn's numeric industry and title IDs, and asks LinkedIn again when the exact posting time is missing, so it takes longer per job. |
| language | string | No | en | Language LinkedIn uses for labels such as job type and seniority. Job descriptions stay in the language they were written in. Locations must still be typed in English. |
| splitLargeSearches | boolean | No | true | LinkedIn returns at most 1,000 jobs for one search. When a search reaches that limit, continue with the same search limited to the past month, week, 3 days and 24 hours, which surfaces many more jobs (duplicates removed). |
| maxItems | integer | No | 100 | Stop after saving this many jobs. A single keyword + location search returns at most 1,000 jobs; add keywords or locations to collect more. |
Example input
Built from the input form's published example values and defaults.
{
"searchQueries": [
"Python Developer"
],
"locations": [
"United States"
],
"easyApply": false,
"under10Applicants": false,
"industry": [],
"companySizes": [],
"excludeStaffingAgencies": false,
"requireSalary": false,
"requireRecruiter": false,
"scrapeJobDetails": false,
"includeCompanyDetails": false,
"enrichmentDepth": "standard",
"language": "en",
"splitLargeSearches": true,
"maxItems": 3
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"searchQueries": [
"Python Developer"
],
"locations": [
"United States"
],
"easyApply": False,
"under10Applicants": False,
"industry": [],
"companySizes": [],
"excludeStaffingAgencies": False,
"requireSalary": False,
"requireRecruiter": False,
"scrapeJobDetails": False,
"includeCompanyDetails": False,
"enrichmentDepth": "standard",
"language": "en",
"splitLargeSearches": True,
"maxItems": 3
}
run = client.actor("nimbryxo-studio/linkedin-jobs-scraper-with-salary-and-company").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"searchQueries": [
"Python Developer"
],
"locations": [
"United States"
],
"easyApply": false,
"under10Applicants": false,
"industry": [],
"companySizes": [],
"excludeStaffingAgencies": false,
"requireSalary": false,
"requireRecruiter": false,
"scrapeJobDetails": false,
"includeCompanyDetails": false,
"enrichmentDepth": "standard",
"language": "en",
"splitLargeSearches": true,
"maxItems": 3
};
const run = await client.actor("nimbryxo-studio/linkedin-jobs-scraper-with-salary-and-company").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/nimbryxo-studio~linkedin-jobs-scraper-with-salary-and-company/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"searchQueries":["Python Developer"],"locations":["United States"],"easyApply":false,"under10Applicants":false,"industry":[],"companySizes":[],"excludeStaffingAgencies":false,"requireSalary":false,"requireRecruiter":false,"scrapeJobDetails":false,"includeCompanyDetails":false,"enrichmentDepth":"standard","language":"en","splitLargeSearches":true,"maxItems":3}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=nimbryxo-studio/linkedin-jobs-scraper-with-salary-and-company",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
Where it fits among LinkedIn Jobs routes
It ranks 1 of 1 catalogue Actors for LinkedIn Jobs on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.
- 1 LinkedIn Jobs Scraper with Salary & Company Enrichment 22 output fields, pay per event 6 of 7 core fields
$0.99 / 1K - + 5 other Store tools, combined Reference only 7 of 7 core fields
from $0.10 / 1K - API LinkedIn Talent APIs Partner only fields not compared
Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.
Official route: LinkedIn Talent APIs
Partner only. Job data access is available to approved talent partners. There is no open, self-serve job search API.
Partner arrangements only; pricing is not public.
Other Store tools for LinkedIn Jobs
Reference only, from their public listings.
| Tool | Fields | Price / 1K |
|---|---|---|
| Rapid Linkedin Jobs Scraper | 23 | $0.10 |
| LinkedIn Jobs Scraper | 42 | $0.70 |
| LinkedIn Jobs Scraper | 40 | $1.25 |
| Advanced LinkedIn Job Search API | 72 | $5.00 |
| Job Scraper: LinkedIn Jobs, Indeed Scraper, Glassdoor Scraper | 41 | $6.00 |
What people use it for
- research job openings
- compare compensation and employers
Similar Actors
Bayt.com MENA Job Listing & Salary Scraper
Search Bayt.com job listings across Middle East and North Africa countries by keyword, location, career level, and employment type. Get titles,…
Czech Jobs.cz Postings, Salary & Brigady Finder
Search Jobs.cz Czech job postings and part-time brigady gigs by keyword, city, or profession, with salary, employment type, education, and…
Glassdoor Job Listings Salary & Rating Scraper
Pull Glassdoor job listings by keyword and location or from a single company's jobs page, with salary estimates, employer ratings, Easy Apply…
HelloWork France Job Listings & Salary Filter Scraper
Search HelloWork.com by keyword, region, city, sector or job function, and filter by contract type, remote-work frequency, experience level,…
Indeed Global Job Scraper with Company Salary Reports
Search Indeed jobs across 62 countries by keyword, location, or filters for job type, remote status, experience, education, and salary. Returns…
JobStreet Southeast Asia Job Search by Keyword & Country
Search JobStreet across Singapore, Malaysia, the Philippines, Indonesia and Thailand by keyword or country, with salary, job type and a direct…
Questions people ask
How much does LinkedIn Jobs Scraper with Salary & Company Enrichment cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does LinkedIn Jobs Scraper with Salary & Company Enrichment return?
Its published output schema lists 22 fields: title, companyName, location, salary, salarySource, applicantCount, easyApply, employmentType, seniorityLevel, postedDate, expiresAt, jobUrl, and 10 more. A listed field is not guaranteed to be filled in every row.
What input does LinkedIn Jobs Scraper with Salary & Company Enrichment need?
No input is strictly required; the defaults run as is. Common settings: searchQueries, searchUrls, jobUrls, locations, geoIds, distance.
How do I run LinkedIn Jobs Scraper with Salary & Company Enrichment from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("nimbryxo-studio/linkedin-jobs-scraper-with-salary-and-company").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("nimbryxo-studio/linkedin-jobs-scraper-with-salary-and-company").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/nimbryxo-studio~linkedin-jobs-scraper-with-salary-and-company/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- LinkedIn Jobs Scraper with Salary & Company Enrichment on Apify Store
- Published build with input and output schema (JSON)
- LinkedIn Talent APIs documentation
Cite this page
Scraper Finder. "LinkedIn Jobs Scraper with Salary & Company Enrichment." https://scraperfinder.com/catalogue/linkedin-jobs-scraper-with-salary-and-company/ (data checked 2026-11-12).
Run LinkedIn Jobs Scraper with Salary & Company Enrichment
$0.99 per 1,000 results. Paste the example input above, set your LinkedIn Jobs query, then export the dataset. Still choosing? Compare every LinkedIn Jobs route.