LinkedIn Job Scraper
Pricing
from $1.50 / 1,000 results
LinkedIn Job Scraper
Scrape public LinkedIn jobs with no login, cookies or API key. Get title, company, location, salary, workplace type, applicants, recruiter, skills and full description from search links, job links or titles. Bulk input, filters, auto proxy fallback. Export JSON, CSV or Excel.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
LinkedIn Job Scraper is an Apify Actor that extracts public job listings from LinkedIn: title, company, location, pay, workplace type, applicants, recruiter, skills and full description. Paste search links, job links or company links, or type job titles and places, and export JSON, CSV or Excel. No login needed. From $1.50 per 1,000 jobs on the Gold plan. π Try it free
What can LinkedIn Job Scraper do?
Use it as a LinkedIn job extractor and LinkedIn job posting scraper. It also works as a LinkedIn jobs API alternative and a LinkedIn job scraper without cookies, with API access, schedules, webhooks and integrations.
- β Bulk LinkedIn job scraper - search links, job links, company links, job ids, titles and places in one run.
- π― Filters checked on every job - job type, experience level, workplace type, industry, minimum salary and description words.
- π° Pay with its source - salary text, min, max, currency and period, plus whether LinkedIn or the description supplied it.
- π₯ Honest applicant numbers - a job applicants count plus a flag when LinkedIn only says "over N applicants".
- π§ Description insights - skills, minimum years of experience, visa sponsorship and contact e-mails found in the text, which helps you find visa sponsorship jobs.
- π Only new jobs - pass yesterday's job ids in a skip list to receive just the new postings.
- β‘ Live results - each job is saved to the dataset as soon as it is ready.
- π Export and integrations - JSON, CSV, Excel, API, schedules and webhooks.
What data can I extract from LinkedIn?
| Field | Description |
|---|---|
π id, jobUrl | LinkedIn job id and the public link to the posting. |
πΌ title | Job title. |
π’ companyName, companyUrl, companyId, companyLogo | Employer name, public company page, company id and logo link. |
π location, city, region, country | Location as written on the posting and its parts. |
π workplaceType, workplaceTypeSource | Remote, Hybrid or On-site, and whether it came from the location, title or description. |
π contractType, experienceLevel, industries | Employment type, seniority level and industries from the job page. |
π΅ salary, salaryMin, salaryMax, salaryCurrency, salaryPeriod, salarySource | Pay as written, parsed range, currency, period and where it was found. |
π₯ applicantsCount, applicantsIsLowerBound, applicantsText | Number of applicants, a lower-bound flag and the text as shown. |
β‘ applyType, jobState | EASY_APPLY or EXTERNAL, and LISTED or CLOSED. |
π
postedAt, postedTimeAgo | Posting date and the age as shown. |
π benefits | Benefit labels shown on the search card. |
π descriptionText | Full job description as plain text. |
π€ recruiterName, recruiterHeadline, recruiterProfileUrl, recruiterPhoto | Recruiter shown on the posting, when the poster enabled it. |
π§ skills, yearsExperienceMin, visaSponsorship, contactEmails | Insights found in the description. |
π searchKeyword, searchLocation, scrapedAt, error | Which search found the job, collection time, and a read error when one happened. |
Fields LinkedIn does not show for a job are empty. Only public job data is collected, with no private profile data.
What can you do with the data from LinkedIn?
π― Job market research and competitor hiring tracking
- Add job titles to
keywordsand places tolocations. - Set
postedWithinto30d, and setexperienceLevelsto Entry level for entry level jobs data. - Filter
workplaceTypesto Remote for remote jobs data, or compare remote, hybrid or on-site jobs, then export to Excel.
π° Salary benchmarking with a LinkedIn salary scraper
- Turn on
requireSalaryor setsalaryMin. - Run your titles per city and export CSV.
- Compare
salaryMin,salaryMax,salaryCurrencyandsalaryPeriodacross roles.
π€ Recruiting lead lists
- List employers in
companies. - Keep
fullDetailson to get each LinkedIn recruiter contact, with name and headline. - Send the Recruiter view to your CRM.
π Job alerts for new postings
- Schedule a daily run with
postedWithinset to24hto get LinkedIn jobs posted today. - Put the ids you already have into
skipJobIds. - Send only new jobs to your team through a webhook.
π€ Skills demand analysis and AI datasets
- Keep
extractInsightson. - Export
skillsanddescriptionText. - Feed the job descriptions for AI pipelines into an LLM or vector store.
How do I use LinkedIn Job Scraper?
Here is how to use Apify to scrape LinkedIn jobs in a few clicks.
- Open LinkedIn Job Scraper on Apify and click Try for free.
- Paste LinkedIn links into LinkedIn links or job ids, or add Job titles or keywords and Locations.
- Choose Posted within and set Max jobs.
- Add filters such as companies, job types, experience levels or workplace types.
- Click Start and watch jobs arrive in the Output tab.
- Open the Dataset tab and export as JSON, CSV or Excel, or read the rows through the API.
How much does it cost to scrape LinkedIn?
LinkedIn Job Scraper uses pay-per-event pricing: you pay for each job saved to the dataset, and Apify platform usage is billed in addition. Jobs removed by your filters are not saved and not charged. The price per job depends on your Apify plan:
| Plan | Price per job | Per 1,000 jobs |
|---|---|---|
| π Free | $0.002 | $2.00 |
| π₯ Bronze | $0.0018 | $1.80 |
| π₯ Silver | $0.0016 | $1.60 |
| π₯ Gold | $0.0015 | $1.50 |
Each run also has an Actor start event of $0.00005 per GB of memory, minimum one event. The default memory is 1,024 MB (1 GB), so one start event of $0.00005 is charged. Worked example: 500 jobs on the Silver plan cost 500 x $0.0016 = $0.80, plus the $0.00005 start event and platform usage.
Is scraping LinkedIn free?
You pay per saved job on every plan, starting at $0.002 per job on the Free plan, so the default 10 jobs cost $0.02. Platform usage is billed in addition. Set Max jobs to control the size of a run, or set a maximum spend per run in Apify, and the Actor stops cleanly when it is reached.
How much does LinkedIn Job Scraper cost per 1,000 results?
One result is one saved job. A thousand jobs cost $2.00 on the Free plan, $1.80 on Bronze, $1.60 on Silver and $1.50 on Gold, plus the $0.00005 start event and platform usage. Jobs kept without full details because the job page could not be read are saved and charged like any other job.
Input
Give the Actor at least one of: links, job titles, locations or companies. Links, titles and places can be combined, and Max jobs caps the total across all searches. Common alternative key names used by other LinkedIn job Actors, such as query, location, startUrls and jobsToFetch, are also accepted.
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
urls | array | one of urls, keywords, locations, companies | LinkedIn job-search links, job links, company links or job ids. Duplicates are removed. | [] |
keywords | array | see above | Job titles or skills, one per line. Boolean search works, for example "data engineer" OR "data scientist" NOT intern. | [] |
locations | array | see above | City, region or country. Empty means worldwide. An unknown place is skipped with a warning. | [] |
postedWithin | string | no | any, 1h, 6h, 12h, 24h, 3d, 7d, 30d; other values such as 36 (hours) or 2w can be typed. | any |
maxJobs | integer | no | Total jobs to save across all searches. 0 means no cap. LinkedIn shows up to about 1,000 jobs per search. | 10 |
fullDetails | boolean | no | On: open every job for description, applicants, seniority, employment type, industry, recruiter and pay. Off: fast mode with title, company, location and date. Turned on automatically when a filter needs the job page. | true |
extractInsights | boolean | no | Add skills, minimum years of experience, visa sponsorship and contact e-mails. | true |
companies | array | no | Only jobs from these employers: names, company links or numeric company ids. | [] |
excludeCompanies | array | no | Drop jobs from these employers. | [] |
jobTypes | array | no | Full-time, Part-time, Contract, Temporary, Internship, Volunteer. | [] |
experienceLevels | array | no | Internship, Entry level, Associate, Mid-Senior level, Director, Executive. | [] |
workplaceTypes | array | no | Remote, Hybrid, On-site. | [] |
industries | array | no | Keep jobs whose industry contains one of these words, for example Software Development. | [] |
salaryMin | number | no | Minimum yearly pay; hourly and monthly pay is converted. Jobs without pay are dropped when set. | none |
easyApply | boolean | no | Only Easy Apply jobs you can apply to directly on LinkedIn. | false |
under10Applicants | boolean | no | Only jobs with fewer than 10 applicants. | false |
titleInclude / titleExclude | array | no | Keep jobs whose title contains one of these words, or drop jobs whose title contains one. | [] |
skipJobIds | array | no | Job ids you already have, to receive only new jobs. | [] |
sortBy | string | no | relevance or newest (orders the jobs of each results page by posting date). | relevance |
descriptionInclude / descriptionExclude | array | no | Keep jobs whose description contains one of these words, or drop jobs that contain one. | [] |
requireSalary | boolean | no | Drop jobs that show no salary information. | false |
salaryFromDescription | boolean | no | When LinkedIn shows no salary, read a pay range written in the description. | true |
maxScanned | integer | no | With content filters, stop a search after examining this many jobs (1 to 20,000). | 3000 |
concurrency | integer | no | Job pages opened at the same time (1 to 8). Higher is faster but more likely to be rate-limited. | 4 |
maxRetries | integer | no | Retries per failed request (0 to 10). | 5 |
requestGap | number | no | Seconds between requests (0 to 10). The pause grows automatically when LinkedIn slows the run down. | 0.6 |
proxyConfiguration | object | no | Optional connection settings. Leave the default for automatic behavior. | {"useApifyProxy": false} |
Example input:
{"urls": ["https://www.linkedin.com/jobs/search/?keywords=python%20developer&location=Berlin%2C%20Germany"],"keywords": ["data engineer"],"locations": ["London, United Kingdom"],"postedWithin": "7d","maxJobs": 50,"workplaceTypes": ["Hybrid"],"salaryFromDescription": true}
Output
Each job is one row in the Apify Dataset, saved as soon as it is ready. Export as JSON, CSV, Excel, XML or HTML from the Dataset tab or through the API. The Output tab shows ten tables (views): overview, company, location, salary, job details, applicants, recruiter, skills and insights, description, and search info.
{"id": "1234567890","jobUrl": "https://www.example.com/jobs/view/1234567890","title": "Senior Python Developer","companyName": "Example Company","companyUrl": "https://www.example.com/company/example-company","companyId": "1000000","companyLogo": "https://www.example.com/logo.png","location": "Berlin, Berlin, Germany","city": "Berlin","region": "Berlin","country": "Germany","workplaceType": "Hybrid","workplaceTypeSource": "description","contractType": "Full-time","experienceLevel": "Mid-Senior level","industries": "Software Development","salary": "EUR 80,000/yr - EUR 100,000/yr","salaryMin": 80000,"salaryMax": 100000,"salaryCurrency": "EUR","salaryPeriod": "year","salarySource": "linkedin","applicantsCount": 61,"applicantsIsLowerBound": false,"applicantsText": "61 applicants","applyType": "EASY_APPLY","jobState": "LISTED","postedAt": "2026-10-09","postedTimeAgo": "2 days ago","benefits": ["Actively Hiring"],"descriptionText": "Example description of the role...","recruiterName": "Jane Example","recruiterHeadline": "Talent Acquisition","recruiterProfileUrl": "https://www.example.com/in/jane-example","recruiterPhoto": "https://www.example.com/photo.jpg","skills": ["Python", "AWS"],"yearsExperienceMin": 5,"visaSponsorship": null,"contactEmails": [],"searchKeyword": "python developer","searchLocation": "Berlin, Germany","scrapedAt": "2026-10-11T19:58:58Z"}
When a run finishes, a SUMMARY record in the key-value store holds the counts of the run: jobsSaved, jobsBilled, searches, filteredOut, detailFailed, removedBeforeDetail, warnings and durationSeconds, among others.
Notes and limitations
errorappears only when a job page could not be read; that row keeps the search-card data only.- With
extractInsightsoff, the fieldsskills,yearsExperienceMin,visaSponsorshipandcontactEmailsare not included. applicantsCountstays empty when LinkedIn only shows a ceiling such as "first 25 applicants".workplaceTypeis worked out from the location, title and description, so it can be empty when the posting does not say.salaryCurrencyis set only when it is unambiguous.- A few filters inside pasted search links are not supported and are ignored with a warning.
- Job type, level, workplace, industry and pay filters are checked job by job, so rare values take longer.
FAQ
Is it legal to scrape LinkedIn jobs?
LinkedIn Job Scraper collects only public job listings that any visitor can see, with no login. Laws and site terms differ by country and use, and personal data such as recruiter names may fall under privacy rules. Read Apify's guide on web scraping legality. This is not legal advice.
Do I need a LinkedIn account, cookies or an API key to scrape jobs?
No. The Actor needs no LinkedIn account, cookies or API key, and it never asks for your LinkedIn login. You only need an Apify account to run it. Add links, or job titles and locations, then press Start. The rows contain public job data only.
How many LinkedIn jobs can I get per run?
Set the total with Max jobs, from 1 up to 100,000, or use 0 for no cap. LinkedIn shows up to about 1,000 jobs per search, so for larger collections combine several keywords, locations or companies. The default is 10 jobs, which suits a quick test run.
Can I export LinkedIn jobs to Excel, CSV or JSON?
Yes. Open the Dataset tab after the run and choose Excel, CSV, JSON, XML or HTML. The ten views, such as salary or recruiter, can be exported separately. You can also download the same rows through the Apify API, or send them to Google Sheets with an integration.
Can I schedule runs or use webhooks and integrations?
Yes. Use Apify schedules to run the Actor daily or hourly, and webhooks to notify your tools when a run finishes. Combine a schedule with the skip list of job ids and you receive only new postings each time. Apify also offers integrations with tools such as Make, so a LinkedIn job scraper n8n workflow is easy to build.
Can I use LinkedIn Job Scraper with the Apify API or an MCP server?
Yes. Every Actor can be started, scheduled and read through the Apify API, and AI agents can call it through Apify's MCP server, for example from a LinkedIn job scraper Python script. The API tab of this Actor shows ready-made examples, and the full reference is in the Apify API documentation.
Why am I getting fewer jobs than expected?
Common causes are strict filters, a short posted-within window, a Max jobs cap, or a location LinkedIn did not recognise, which is skipped with a warning. Check the run log and the filteredOut counts in the SUMMARY record. Loosen the filters or raise the scan budget, then run again.
LinkedIn Job Scraper not working?
First read the run log, which explains most problems in plain words, such as LinkedIn limiting requests. Wait a few minutes and run again with a lower parallel connections value. If it still fails, open the Issues tab of this Actor and include your run link and a short description of the input.
Related Actors
| Actor | Use it to |
|---|---|
| π Indeed Job Scraper | Collect job postings from Indeed's country sites using search links or job titles. |
| π Workday Jobs Scraper | Scrape jobs from any Workday careers portal with titles, salaries, descriptions and skills. |
| π LinkedIn Ads Library Scraper | Extract LinkedIn ad copy, creatives, advertisers and run dates for competitor analysis. |
For job board scraping beyond LinkedIn, use the sibling Actors above, and browse the public job search on LinkedIn to compare with your results.
Support and disclaimer
Found a bug or need a feature? Open an issue in the Issues tab. For custom solutions, integrations or questions, contact hello.dataminds@gmail.com. LinkedIn Job Scraper is independent and not affiliated with LinkedIn; trademarks belong to their owners. It collects publicly available data, and you are responsible for complying with applicable laws and the site's terms.
Last updated: 2026-10-18