LinkedIn Job Listings with Salary & Company Data Scraper
Collect LinkedIn job postings by keyword, location, or search URL, with parsed salary ranges, visa-sponsorship signals, and enriched employer profiles. No login required.
Open in Apify Store$0.99 / 1K on Free
Short answer
LinkedIn Job Listings with Salary & Company Data Scraper 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 12, 2026.
From the public Store listing and published build schema, synced 2026-11-14.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": [
"software engineer"
],
"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
} Inputs for real jobs and stated limits
From the README of the Actor's latest build, read 2026-11-13.
Newest data jobs in three countries
{
"searchQueries": [
"data engineer",
"analytics engineer"
],
"locations": [
"Germany",
"Netherlands",
"United Kingdom"
],
"timePosted": "r604800",
"maxItems": 300
} Every open role at two employers, with pay only
{
"companies": [
"General Motors",
"https://www.linkedin.com/company/affirm"
],
"requireSalary": true,
"maxItems": 200
} Check a list of postings
{
"jobUrls": [
"https://www.linkedin.com/jobs/view/4419969671",
"4336853130"
]
} 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": [
"software engineer"
],
"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("xyrelith-data/linkedin-jobs-scraper").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": [
"software engineer"
],
"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("xyrelith-data/linkedin-jobs-scraper").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/xyrelith-data~linkedin-jobs-scraper/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"searchQueries":["software engineer"],"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=xyrelith-data/linkedin-jobs-scraper",
"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 2 of 2 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 - 2 LinkedIn Job Listings with Salary & Company Data Scraper 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
- find job postings
- review salary ranges
- research employers
Other catalogue Actors for LinkedIn Jobs
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…
Similar Actors
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…
Naukri.com Job Listings Extractor with Salary & Skills
Pull job listings from Naukri.com by search URL or by keyword, location, experience, salary, job age and work-mode filters, with company rating,…
Welcome to the Jungle Job Listings & Salary Scraper
Search Welcome to the Jungle job postings by keyword, location, contract type and remote policy. Returns company, salary when disclosed, sector,…
Hiring.cafe Job Listings & Salary Filter Scraper
Pull job postings aggregated by hiring.cafe and narrow them by salary range, seniority, workplace type, security clearance, required tech stack,…
We Work Remotely Job Listings & Salary Extractor
Reads We Work Remotely category pages or keyword search results and follows each listing for salary range, employment type, skills, applicant…
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,…
Questions people ask
How much does LinkedIn Job Listings with Salary & Company Data Scraper 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 Job Listings with Salary & Company Data Scraper 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 Job Listings with Salary & Company Data Scraper need?
No input is strictly required; the defaults run as is. Common settings: searchQueries, searchUrls, jobUrls, locations, geoIds, distance.
What are the alternatives to LinkedIn Job Listings with Salary & Company Data Scraper for LinkedIn Jobs?
2 catalogue Actors cover LinkedIn Jobs. Close alternatives: LinkedIn Jobs Scraper with Salary & Company Enrichment. The LinkedIn Jobs page compares all of them field by field.
How do I run LinkedIn Job Listings with Salary & Company Data Scraper from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("xyrelith-data/linkedin-jobs-scraper").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("xyrelith-data/linkedin-jobs-scraper").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/xyrelith-data~linkedin-jobs-scraper/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- LinkedIn Job Listings with Salary & Company Data Scraper on Apify Store
- Published build with input and output schema (JSON)
- LinkedIn Talent APIs documentation
Cite this page
Scraper Finder. "LinkedIn Job Listings with Salary & Company Data Scraper." https://scraperfinder.com/catalogue/linkedin-jobs-scraper/ (data checked 2026-11-14).
Run LinkedIn Job Listings with Salary & Company Data Scraper
$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.