LinkedIn Jobs Scraper · No Login · $0.2/1k avatar

LinkedIn Jobs Scraper · No Login · $0.2/1k

Pricing

from $0.20 / 1,000 jobs

Go to Apify Store
LinkedIn Jobs Scraper · No Login · $0.2/1k

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

Alfalfa

Maintained by Community

Actor stats

0

Bookmarked

21

Total users

14

Monthly active users

4 days ago

Last modified

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

FieldExample
id, link, title4463607193, the job URL, Brand Manager, Foodservice
companyName, companyLinkedinUrl, companyLogoLibbey, the company page, logo URL
location, postedAt, postedAgoToledo, OH, 2026-09-04, 6 days ago
salaryInfo, benefits["$85,000.00", "$110,000.00"], ["Actively Hiring"]
applicantsCount, applicantsText71, 71 applicants (<25 when LinkedIn only says "be among the first 25", >200 for "over 200")
descriptionHtml, descriptionTextthe full posting
seniorityLevel, employmentType, jobFunction, industriesMid-Senior level, Full-time, Marketing and Sales, Manufacturing
jobPosterName, jobPosterTitle, jobPosterProfileUrl, jobPosterPhotothe recruiter when the posting shows one
applyTypeEASY_APPLY (applications on LinkedIn) or EXTERNAL (the company's own site)
applyUrl, inputUrlexternal apply link when exposed, the search or URL the job came from

How to scrape LinkedIn jobs

  1. Type Keywords and a Location, pick Date posted, or paste LinkedIn search URLs and job URLs into LinkedIn URLs.
  2. Narrow it down if you like: Title must contain / Title must not contain, Company names, Posted within the last N hours.
  3. Set Max jobs per search and keep Include job details on for the full description, the criteria and the apply type.
  4. 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

FieldTypeDescription
keywordsstringJob title, skill or free text.
locationstringCity, region or country as typed on LinkedIn.
datePostedanyTime / past24Hours / pastWeek / pastMonthPosting window.
postedWithinHoursintegerYour own posting window in hours; overrides datePosted.
maxJobsintegerMax jobs per search or URL (default 100). LinkedIn returns at most 1,000 per search. limitPerSource and rows are accepted too.
scrapeDetailsbooleanOpen each job for description, criteria, applicants, salary, poster, apply type (default on).
startUrlsarrayLinkedIn search URLs (filters in the URL are kept) or job URLs.
companyNamesarray of stringsCompany names; each is looked up on LinkedIn, the best match is used.
companyIdsarray of stringsNumeric company IDs (f_C= in a search URL).
titleIncludearray of stringsKeep only titles containing at least one of these words or phrases (case-insensitive).
titleExcludearray of stringsSkip titles containing any of these words or phrases (case-insensitive).
experienceLevel, jobType, workplaceTypearraysPassed to LinkedIn; applied only where LinkedIn's search still supports these filters.
easyApply, under10ApplicantsbooleanEasy Apply only; fewer than 10 applicants only.
sortByrelevance / dateLinkedIn's order or newest first.
geoId, distancestring, integerPrecise location ID and radius in miles.
maxConcurrencyintegerSearches in parallel (default 5).
proxyConfigurationobjectResidential 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 spendJobs
$5, which is what the free plan includesabout 16,700
$49about 163,300
$499about 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.
  • applyUrl is usually empty: LinkedIn hides the external apply link behind a login for most postings. applyType still tells Easy Apply from external applications, and the job URL in link always works.
  • Title filters look at the title only, not at the description; companyNames uses LinkedIn's best match for a name, so check the log line or use companyIds for 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.

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: 36 once every 24 hours, then use the Apify node's Get items operation on the run's defaultDatasetId. In Google Sheets, use Append or update row and match the id column. 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.

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

ActorWhat it doesPrice
Facebook Ads Library Scraperads from the Meta Ad Library with creatives, dates, platforms and EU reach$0.45 per 1,000 ads
Google Ads Transparency Scraperevery 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 Scraperplaces 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 ScraperLinkedIn 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 Scraperproducts from searches, Best Sellers lists and ASINs in 22 Amazon stores with price, rating, BSR and details$0.28 per 1,000 products
YouTube Scrapervideos 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 Scraperposts of any public page or profile$2 per 1,000 posts
Facebook Comments Scrapercomments and replies of any public post$0.30 per 1,000 comments
Facebook Pages Scraperpage details with email, phone, addressfrom $2.50 per 1,000 pages
Facebook Events Scraperevents 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.