LinkedIn Jobs Scraper - Salaries, Applicants & Companies avatar

LinkedIn Jobs Scraper - Salaries, Applicants & Companies

Pricing

from $0.60 / 1,000 job scrapeds

Go to Apify Store
LinkedIn Jobs Scraper - Salaries, Applicants & Companies

LinkedIn Jobs Scraper - Salaries, Applicants & Companies

Scrape LinkedIn jobs by keyword, location, company or search URL: salary, applicants, seniority, job type, remote/hybrid, full description and company profile. Filters LinkedIn ignores are checked on every job and never charged. No login. From $0.60 per 1,000 jobs.

Pricing

from $0.60 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Eimantas V

Eimantas V

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

LinkedIn Jobs Scraper extracts job postings from LinkedIn: title, company, location, salary, applicants, seniority, employment type, remote or hybrid, the full description and, if you want it, the hiring company's profile. Search by keyword, location and company, or paste LinkedIn job-search, job and company URLs. No login, no API key, no browser, from $0.60 per 1,000 jobs.

{
"title": "Marketing Manager – Assurance Services",
"companyName": "BDO Canada",
"location": "Toronto, Ontario, Canada",
"employmentType": "Full-time",
"experienceLevel": "Not Applicable",
"industries": "Financial Services",
"salaryMin": 93000,
"salaryMax": 141000,
"salaryCurrency": "CAD",
"salaryPeriod": "year",
"postedAt": "2026-10-01T18:12:38.124Z",
"applicantsCount": 200,
"applyType": "EXTERNAL",
"experienceYearsMin": 3,
"companyWebsite": "http://www.bdo.ca",
"companySize": "1,001-5,000 employees",
"companyFollowers": 159801,
"url": "https://www.linkedin.com/jobs/view/4459849626/"
}

Measured on Apify: 1,000 jobs with full descriptions in 7.4 minutes; 150 jobs from 4 searches in 35 seconds.

What does LinkedIn Jobs Scraper do?

It runs LinkedIn's public job search for every keyword and location you give it, reads each job's full posting, and returns one clean row per job with more than 60 fields. LinkedIn's public search quietly ignores most of its own filters (job type, experience level, remote, industry, salary), so this scraper checks those filters on every posting itself and drops the jobs that do not match. You never pay for a job a filter removed.

  • Every way to search: keywords x locations, companies by name, URL or id, pasted LinkedIn search URLs with their filters, single job URLs, and whole company job lists.
  • Filters that actually work: job type, experience level, remote / hybrid / on-site, industry, minimum salary, maximum applicants, staffing agencies, title include / exclude, company and location exclude, company size, followers, type and founding year.
  • More data per job: salary parsed into min / max / currency / period (also from the description text), applicants and applicants per day, years of experience asked for, contact emails, Easy Apply, closed jobs, city / region / country code, and the company's website, size, followers, headquarters address and recent posts.
  • Only new jobs: schedule it daily and it returns, and charges for, only postings it has not returned before.
  • Past LinkedIn's 1,000-job ceiling: "Split by city" runs a country-wide search in its main cities too.
  • Only pay for results. Duplicates, filtered-out jobs, jobs seen in earlier runs and searches that fail are never charged.
  • Built for automation. Run it on a schedule, call it from the API, or connect it to Make, Zapier, n8n, Google Sheets or an AI agent through Apify's MCP server.

Why it is fast and cheap

LinkedIn's job pages work without an account. This scraper calls the same lightweight endpoints LinkedIn's own logged-out job search uses: one request returns 10 job cards, and one more request returns a job's full posting (about 9 KB compressed). No browser is started, so a run uses a fraction of the memory and time of browser-based scrapers. Requests are spread over several proxy addresses and slow down automatically when LinkedIn rate-limits, so long runs finish instead of failing halfway.

What data can you extract from LinkedIn?

FieldExampleWhat it is
title, companyName, locationSenior Software Developer, JetBrains, Berlin, Berlin, GermanyThe job as posted
workplaceTypeHybridRemote, Hybrid or On-site, when the posting says so
employmentType, experienceLevelFull-time, Mid-Senior levelFrom the posting's criteria
industriesSoftware DevelopmentIndustries on the posting
salaryMin, salaryMax, salaryCurrency, salaryPeriod165000, 225000, USD, yearPay, from LinkedIn's salary box or the description; salarySource says which
postedAt, postedTimeAgo2026-10-02T11:00:00Z, 1 hour agoWhen it was posted
applicantsCount, applicantsPerDay73, 73How many have applied, and how fast
applyType, easyApply, acceptingApplicationsEXTERNAL, false, trueHow to apply, and whether it is still open
descriptionIf you want to build…Full text with line breaks and bullets (HTML on request)
experienceYearsMin, contactEmails, benefits, insights5, ["jobs@acme.io"], ["401(k)"], ["Actively Hiring"]Extracted from the posting
matchedSkills, missingSkills, skillMatchScore["TypeScript"], ["Go"], 50Against your own skill list
locationCity, locationRegion, locationCountry, locationCountryCodeToronto, Ontario, Canada, CAThe location split into parts
companyId, companyUrl, companyLogo12515, linkedin.com/company/jetbrainsThe hiring company on LinkedIn
companyWebsite, companySize, companyEmployeeCount, companyFollowers, companyType, companyFounded, companyAddress*, companySpecialties, companyRecentPostshttps://www.jetbrains.com/, 1,001-5,000 employees, 3035With Include company details
searchKeywords, searchLocation, searchPosition, searchUrlSoftware Engineer, United States, 1Which search found the job, and its rank

How to scrape LinkedIn jobs

  1. Click Try for free and type your job titles into Job titles or keywords and your places into Locations, one per line. Or paste LinkedIn URLs into LinkedIn URLs.
  2. Set any filters, and Max results. You pay per job, so this is also your cost cap.
  3. Click Start. 100 jobs take about a minute.
  4. Open the Output tab, or download the results as JSON, CSV, Excel or HTML.

How much does it cost to scrape LinkedIn?

You pay per job returned, and the price drops on higher Apify plans:

Apify planPer 1,000 jobs
Free$1.00
Starter$0.80
Scale$0.70
Business$0.60
  • 1,000 software-engineering jobs in the United States with full descriptions cost $0.80 on the Starter plan.
  • A daily "only new jobs" monitor that finds 150 new postings a day costs about $3.60 a month on Starter.
  • Company details, skill matching and every filter are included in the same price. Jobs a filter removes, duplicates and failed searches cost nothing.
  • A run also costs $0.00005 to start.
  • The Free plan's $5 monthly credit covers about 5,000 jobs.

Input

{
"keywords": ["Data Analyst", "Product Manager"],
"locations": ["London, United Kingdom", "Berlin"],
"postedWithin": "week",
"experienceLevels": ["entry-level", "associate"],
"workplaceTypes": ["hybrid", "remote"],
"includeCompanyDetails": true,
"maxItems": 200
}
GroupFieldsNotes
What to searchJob titles or keywords, Locations, Companies, LinkedIn URLsEvery keyword runs in every location; companies narrow every search, or list all their jobs when there are no keywords
Filters LinkedIn appliesDate posted (or posted within N hours), Easy Apply only, Fewer than 10 applicants, Sort by, DistanceNarrow the search itself, at no cost
Filters checked on every jobJob type, Experience level, Remote / hybrid / on-site, Industries, Exclude staffing agencies, Only jobs with a salary, Minimum salary, Max applicants, Title must / must not include, Exclude companies, Exclude locations, Skip job idsJobs they remove are never charged
Company filtersCompany size, followers, type, founding yearRead the company page; turn on company details
Data to includeInclude job details (on), Include description HTML, Include company details, Match my skillsTurn job details off for a fast list of titles, companies, locations and dates
MonitoringOnly new jobs, History nameSeparate histories for separate monitors
LimitsMax results (100), Max results per search (1,000), Split by cityMax results is your cost cap
Proxy and performanceProxy (Apify datacenter), Concurrency (8), Request timeout, RetriesSwitch to residential only if a run is blocked

Output

Each job is one row in the dataset. The Overview, Posting details and Companies views show the key columns; every export includes all fields.

{
"recordType": "item",
"id": "4459849626",
"url": "https://www.linkedin.com/jobs/view/4459849626/",
"title": "Marketing Manager – Assurance Services",
"companyName": "BDO Canada",
"location": "Toronto, Ontario, Canada",
"workplaceType": null,
"employmentType": "Full-time",
"experienceLevel": "Not Applicable",
"industries": "Financial Services",
"salaryText": "$93,000 to $141,000",
"salaryMin": 93000,
"salaryMax": 141000,
"salaryCurrency": "CAD",
"salaryPeriod": "year",
"salarySource": "description",
"postedAt": "2026-10-01T18:12:38.124Z",
"postedDate": "2026-10-01",
"postedTimeAgo": "18 hours ago",
"applicantsCount": 200,
"applicantsText": "Over 200 applicants",
"applicantsPerDay": 200,
"applyType": "EXTERNAL",
"easyApply": false,
"acceptingApplications": true,
"description": "Putting people first, every day\n\nBDO is a firm built on a foundation of positive relationships...",
"experienceYearsMin": 3,
"contactEmails": [],
"insights": ["Actively Hiring"],
"benefits": [],
"locationCity": "Toronto",
"locationRegion": "Ontario",
"locationCountry": "Canada",
"locationCountryCode": "CA",
"companyId": "250145",
"companyUrl": "https://www.linkedin.com/company/bdo-canada",
"companyWebsite": "http://www.bdo.ca",
"companyIndustry": "Financial Services",
"companySize": "1,001-5,000 employees",
"companyEmployeeCount": 4810,
"companyFollowers": 159801,
"companyHeadquarters": "Toronto, Ontario",
"companyType": "Partnership",
"companyFounded": 1921,
"companyAddressStreet": "20 Wellington St E",
"companyAddressCity": "Toronto",
"companyAddressCountry": "CA",
"searchKeywords": "marketing manager",
"searchLocation": "Canada",
"searchPosition": 1,
"input": "https://www.linkedin.com/jobs/search/?keywords=marketing%20manager&location=Canada&f_TPR=r604800",
"scrapedAt": "2026-10-02T12:12:38.151Z"
}

A search or URL that cannot be read becomes a row with "recordType": "error" and an errorCode instead of failing the whole run:

errorCodeMeaning
NOT_FOUNDThe job does not exist any more, or the link is wrong
COMPANY_NOT_FOUNDNone of the companies you named were found on LinkedIn
BLOCKED / RATE_LIMITEDLinkedIn refused this address; run again, or switch the proxy to residential
PARSE_FAILEDLinkedIn changed its page; please report it on the Issues tab

Error rows are never charged. The run summary (RUN_SUMMARY in the key-value store) shows how many jobs LinkedIn listed, how many your filters removed and how many duplicates were skipped.

Tips and limits

  • About 1,000 jobs per search. That is LinkedIn's own ceiling. For more, add more keywords or locations, or turn on Split by city.
  • LinkedIn always finds something. Its AI search returns related jobs even for rare or misspelled keywords. Use Title must include when the title has to match.
  • Remote, hybrid and on-site come from what the posting says (title, location or description), because LinkedIn's public pages do not show the structured value. Postings that say nothing get null, and the workplace filter drops them.
  • Salary appears on most US postings (pay-transparency laws) and fewer elsewhere. "Only jobs with a salary" keeps just those.
  • Not public without a LinkedIn login: the recruiter who posted the job, the employer's external apply link and LinkedIn's own skills list. No logged-out scraper can return them.
  • Applicants are shown by LinkedIn as "Over 200" above 200, so applicantsCount stops at 200.
  • Company details add one request per company (cached for the run), so they make a run slower, not more expensive.
  • Hit your spending limit? The run stops cleanly at your maximum cost per run and keeps everything it collected. Raise the limit in the run options to get more.

FAQ

This Actor collects only job postings and company pages that LinkedIn shows publicly, without logging in. Job postings are published for anyone to read, but results can still contain personal data (for example an email address in a description), which laws such as the GDPR protect. Scrape personal data only for a legitimate purpose, and ask a lawyer if you are unsure. LinkedIn is a trademark of LinkedIn Corporation; this Actor is not affiliated with or endorsed by LinkedIn.

Do I need a LinkedIn account or cookies?

No. Nothing is logged in, so no account can be restricted or banned.

How do I monitor new LinkedIn jobs every day?

Save your input as a task, turn on Only new jobs, give it a History name, and add a daily schedule. Each run returns only postings no earlier run with that history name returned, and you pay only for those. Add Posted within (hours) = 24 to keep each run short.

Can I use it through the API or with Make, Zapier and n8n?

Yes. Every run can be started through the Apify API and returns the dataset as JSON, CSV or Excel. Schedules, webhooks and integrations for Make, Zapier, n8n and Google Sheets are on the Integrations tab.

Can AI agents use it?

Yes. Agents connected to Apify's MCP server can find and run this Actor as a tool, with the same per-job pricing. Plain inputs (keywords, locations, companies) make it easy for an agent to call.

Why did I get fewer results than I asked for?

The search may have fewer jobs than your limit, your filters may have removed many of them (the log and run summary say how many), the run may have reached your maximum cost per run, or LinkedIn's ceiling of about 1,000 jobs per search was reached. Nothing collected before that is lost.

Support

Missing a field, or found a search that does not work? Open an issue on the Issues tab with the input you used, and it will be looked at quickly.