LinkedIn Jobs Scraper · No Login · $0.2/1k
Pricing
from $0.20 / 1,000 jobs
LinkedIn Jobs Scraper · No Login · $0.2/1k
LinkedIn jobs scraper: search public jobs by keyword, location, date, company or URL; export full description, salary, applicants and poster to Excel, CSV or JSON. No login. $0.20/1k jobs on Business or $0.30/1k on Free; platform usage included, no start fee.
Pricing
from $0.20 / 1,000 jobs
Rating
0.0
(0)
Developer
Alfalfa
Maintained by CommunityActor stats
0
Bookmarked
21
Total users
14
Monthly active users
4 days ago
Last modified
Categories
Share
LinkedIn Jobs Scraper (No Login)
Search public LinkedIn job postings by keyword, location, date, company or a LinkedIn URL and get every job as a clean record: title, company with logo and page URL, location, posting date, salary when shown, applicant count, the full description, seniority, employment type, job function, industries and the recruiter who posted it. No LinkedIn account, login or cookies needed. Same field names as the most used LinkedIn jobs Actor at $0.30 per 1,000 jobs, with no start fee and job details included.
Export to JSON, CSV or Excel, read the dataset through the API, or run it on a schedule from n8n, Make or Zapier.
Narrow a search down before anything is saved: title words to keep or skip (titleInclude, titleExclude), company names (companyNames), your own posting window in hours (postedWithinHours), and every job says whether it is Easy Apply or an external application (applyType).
What you can do with LinkedIn job data
- Job boards and aggregators: pull new postings for a niche or a city every morning and publish them.
- Lead generation: a company hiring for a role is a company buying what that role needs. Get the companies, the roles and the recruiter names for a territory in one table.
- Salary and market research: titles, seniority, employment types and posted salaries across thousands of postings.
- Recruiting: track which competitors are hiring, where, and how many applicants each posting has.
- Job search automation: filter by keyword, title words, company, date and Easy Apply, push matches to a spreadsheet or a chat alert.
What data do you get
| Field | Example |
|---|---|
id, link, title | 4463607193, the job URL, Brand Manager, Foodservice |
companyName, companyLinkedinUrl, companyLogo | Libbey, the company page, logo URL |
location, postedAt, postedAgo | Toledo, OH, 2026-09-04, 6 days ago |
salaryInfo, benefits | ["$85,000.00", "$110,000.00"], ["Actively Hiring"] |
applicantsCount, applicantsText | 71, 71 applicants (<25 when LinkedIn only says "be among the first 25", >200 for "over 200") |
descriptionHtml, descriptionText | the full posting |
seniorityLevel, employmentType, jobFunction, industries | Mid-Senior level, Full-time, Marketing and Sales, Manufacturing |
jobPosterName, jobPosterTitle, jobPosterProfileUrl, jobPosterPhoto | the recruiter when the posting shows one |
applyType | EASY_APPLY (applications on LinkedIn) or EXTERNAL (the company's own site) |
applyUrl, inputUrl | external apply link when exposed, the search or URL the job came from |
How to scrape LinkedIn jobs
- Type Keywords and a Location, pick Date posted, or paste LinkedIn search URLs and job URLs into LinkedIn URLs.
- Narrow it down if you like: Title must contain / Title must not contain, Company names, Posted within the last N hours.
- Set Max jobs per search and keep Include job details on for the full description, the criteria and the apply type.
- Click Start. Jobs stream into the dataset as they are found; export as JSON, CSV or Excel, or read them through the API.
Filter by job title
titleInclude keeps only jobs whose title contains at least one of the given words or phrases; titleExclude drops jobs whose title contains any of them. Matching is case-insensitive and on any part of the title, so engineer also matches Engineering Manager and senior matches Senior Data Engineer. Filtered-out jobs are never saved or charged, and the search keeps reading result pages until Max jobs per search matching jobs are found or the results end. The run log and the status show how many were filtered out.
{"keywords": "data engineer","location": "Berlin","titleInclude": ["data engineer", "data platform"],"titleExclude": ["senior", "lead", "praktikant", "werkstudent"],"maxJobs": 100}
The filters apply to search results (keywords, location, company or a pasted search URL). Single job URLs are always saved.
Search by company name
companyNames takes plain company names. Each one is looked up on LinkedIn and used when a company of that name exists; the log says which (company "Microsoft" -> id 1035 (Microsoft)). A name with no match, including a misspelling, is skipped with a note. If none of the names is found, the search does not run, so you never pay for other companies' jobs. Combine it with companyIds when you know the numeric IDs, or with keywords and location to search inside those companies.
{"companyNames": ["Microsoft", "Siemens Healthineers"],"keywords": "engineer","maxJobs": 200}
Only the newest postings
postedWithinHours sets your own posting window instead of the four presets of Date posted: 6 for a run every six hours, 24 for a daily run, 72 for the last three days, up to 8760 (a year). It overrides Date posted when both are set.
Easy Apply or external application
Every job with details carries applyType: EASY_APPLY when applications are taken on LinkedIn, EXTERNAL when the posting sends applicants to the company's site. It is null when the posting no longer shows an apply button (applications closed) or when Include job details is off. To get only Easy Apply jobs, switch Easy Apply only on; to get only external ones, filter the dataset by applyType.
Input
| Field | Type | Description |
|---|---|---|
keywords | string | Job title, skill or free text. |
location | string | City, region or country as typed on LinkedIn. |
datePosted | anyTime / past24Hours / pastWeek / pastMonth | Posting window. |
postedWithinHours | integer | Your own posting window in hours; overrides datePosted. |
maxJobs | integer | Max jobs per search or URL (default 100). LinkedIn returns at most 1,000 per search. limitPerSource and rows are accepted too. |
scrapeDetails | boolean | Open each job for description, criteria, applicants, salary, poster, apply type (default on). |
startUrls | array | LinkedIn search URLs (filters in the URL are kept) or job URLs. |
companyNames | array of strings | Company names; each is looked up on LinkedIn, the best match is used. |
companyIds | array of strings | Numeric company IDs (f_C= in a search URL). |
titleInclude | array of strings | Keep only titles containing at least one of these words or phrases (case-insensitive). |
titleExclude | array of strings | Skip titles containing any of these words or phrases (case-insensitive). |
experienceLevel, jobType, workplaceType | arrays | Passed to LinkedIn; applied only where LinkedIn's search still supports these filters. |
easyApply, under10Applicants | boolean | Easy Apply only; fewer than 10 applicants only. |
sortBy | relevance / date | LinkedIn's order or newest first. |
geoId, distance | string, integer | Precise location ID and radius in miles. |
maxConcurrency | integer | Searches in parallel (default 5). |
proxyConfiguration | object | Residential proxies by default, included in the price. |
Example:
{"keywords": "data engineer","location": "Berlin","datePosted": "pastWeek","maxJobs": 200,"scrapeDetails": true}
Output
One record per job (trimmed):
{"id": "4463607193","link": "https://www.linkedin.com/jobs/view/4463607193","title": "Brand Manager, Foodservice","companyName": "Libbey","companyLinkedinUrl": "https://www.linkedin.com/company/libbey","companyLogo": "https://media.licdn.com/dms/image/v2/...","location": "Toledo, OH","postedAt": "2026-09-04","postedAgo": "6 days ago","salaryInfo": [],"benefits": [],"applicantsCount": "<25","applicantsText": "Be among the first 25 applicants","descriptionText": "The Brand Manager, Foodservice is responsible for ...","descriptionHtml": "<p><strong>Summary</strong></p><p>The Brand Manager ...","seniorityLevel": "Not Applicable","employmentType": "Full-time","jobFunction": "Marketing and Sales","industries": "Manufacturing","jobPosterName": null,"applyType": "EXTERNAL","applyUrl": "","inputUrl": "https://www.linkedin.com/jobs/search?keywords=marketing+manager&location=United+States"}
Pricing
$0.30 per 1,000 jobs ($0.0003 per job), no start fee, details included, platform usage and residential proxies included. You pay only for records written to the dataset. Set the maximum budget per run in the Actor settings; the scraper stops when it is reached and never overshoots.
Final price. The per-job price is everything you pay: platform usage is included, there is no start fee and no per-run minimum. Some listings on the Store show a lower number and add platform usage on top; here the number on the listing is the number on your bill.
| Monthly spend | Jobs |
|---|---|
| $5, which is what the free plan includes | about 16,700 |
| $49 | about 163,300 |
| $499 | about 1,663,300 |
For comparison, the most used LinkedIn jobs Actor charges $2 per 1,000 jobs on the free plan and $1 on paid plans.
Switching from another LinkedIn jobs Actor
Field names follow the most used one (id, link, title, companyName, companyLinkedinUrl, companyLogo, location, salaryInfo, postedAt, benefits, descriptionHtml, descriptionText, applicantsCount, applyUrl, jobPosterName, jobPosterTitle, jobPosterPhoto, jobPosterProfileUrl, seniorityLevel, employmentType, jobFunction, industries), and its urls, keywords, location, geoId, distance, datePosted, companyIds, under10Applicants and limitPerSource inputs are understood. Company enrichment (employee count, website) is not included yet.
Limitations
- Only what LinkedIn shows a visitor without an account: public job postings. Nothing that needs a login.
- LinkedIn returns at most 1,000 jobs per search. For more, split by location, date window or company.
- LinkedIn has retired several classic filters (experience level, job type, workplace) for many searches; they are passed along and applied when LinkedIn honours them. Date, Easy Apply, under-10-applicants and company filters work.
applyUrlis usually empty: LinkedIn hides the external apply link behind a login for most postings.applyTypestill tells Easy Apply from external applications, and the job URL inlinkalways works.- Title filters look at the title only, not at the description;
companyNamesuses LinkedIn's best match for a name, so check the log line or usecompanyIdsfor an exact company.
FAQ
Do I need a LinkedIn account?
No. The scraper reads the public job pages that LinkedIn shows to anyone. Nothing is posted, no account of yours is used.
How fast is it?
About 100 jobs with full details in a minute; five times faster with details off.
Can I run it every day and get only new jobs?
Yes. Set Date posted to Past 24 hours (or postedWithinHours to match any other schedule, e.g. 6) and schedule the run; each run returns only the new postings.
Is scraping LinkedIn jobs legal?
Job postings are public data companies publish to be found. Reading public pages without an account is generally legal (the hiQ v. LinkedIn rulings in the US), but you are responsible for how you use the data; respect privacy laws for the recruiter names. This Actor is not affiliated with LinkedIn or Microsoft.
Use it from n8n, Make, Zapier or an AI agent
- n8n, Make, Zapier: add the Apify node, pick
alfalfa/linkedin-jobs-scraper, paste the JSON input above and read the run's dataset in the next step. See the Apify integrations docs. - Daily Google Sheets tracker: schedule a run with
postedWithinHours: 36once every 24 hours, then use the Apify node's Get items operation on the run'sdefaultDatasetId. In Google Sheets, use Append or update row and match theidcolumn. The overlap catches postings near the schedule boundary while the sheet keeps one row per job. A job returned again on a later run is still a new billed Actor result. - AI agents and MCP: connect the Apify MCP server with this Actor as a tool,
https://mcp.apify.com/?tools=alfalfa/linkedin-jobs-scraper. See Apify MCP docs. - API and scheduling: every run is available through the Apify API; schedules, webhooks and exports are built in.
Examples you can run in one click
Each example opens with its input already filled in and a sample of the results, so you can change any field and run it right away.
- Export LinkedIn jobs to CSV
- LinkedIn Easy Apply jobs
- LinkedIn job postings for lead generation
- LinkedIn jobs API
- LinkedIn jobs by keyword
- LinkedIn jobs to Google Sheets
- LinkedIn jobs under 10 applicants
- Remote jobs on LinkedIn
Need something the examples do not cover? Every field is on the Input tab, and any example input works unchanged in an API call or an n8n, Make or Zapier workflow.
Was this useful?
If this Actor saved you time, a short review on its Store page helps others find it and tells me what to improve next. Missing a field or stuck on an input? Open an Issue on the Actor page; issues are answered within a day.
More scrapers by Alfalfa
| Actor | What it does | Price |
|---|---|---|
| Facebook Ads Library Scraper | ads from the Meta Ad Library with creatives, dates, platforms and EU reach | $0.45 per 1,000 ads |
| Google Ads Transparency Scraper | every Google ad of an advertiser or website domain with format, dates, regions, previews and YouTube video ids | $0.30 per 1,000 ads |
| Google Maps Scraper | places from any search and location with address, phone, website, rating and hours, plus reviews and website emails | $0.07 per 1,000 places |
| LinkedIn Company Scraper | LinkedIn company pages from URLs, names, websites or a filtered keyword search with size, employee count, followers, offices and recent posts | $1 per 1,000 companies |
| Amazon Product Scraper | products from searches, Best Sellers lists and ASINs in 22 Amazon stores with price, rating, BSR and details | $0.28 per 1,000 products |
| YouTube Scraper | videos of a search, channel, playlist or URL list with views, likes, date, tags, plus transcripts and comments; no API key | $0.50 per 1,000 rows |
| Facebook Posts Scraper | posts of any public page or profile | $2 per 1,000 posts |
| Facebook Comments Scraper | comments and replies of any public post | $0.30 per 1,000 comments |
| Facebook Pages Scraper | page details with email, phone, address | from $2.50 per 1,000 pages |
| Facebook Events Scraper | events by search, city, page or URL | $3 per 1,000 events |
Not working?
Open an issue in the Issues tab with your input and the run ID. LinkedIn changes its pages now and then; fixes usually ship within a day.