LinkedIn Jobs Scraper - Salary, Recruiter & Company ($0.5/1k)
Pricing
from $0.40 / 1,000 job results
LinkedIn Jobs Scraper - Salary, Recruiter & Company ($0.5/1k)
Scrape LinkedIn jobs by keyword, location & filters, or any LinkedIn search URL - no login or cookies. Get salary, seniority, applicant count, recruiter contact, and full descriptions in text, Markdown & HTML. Optional company details; beat the ~1,000 cap. Pay per result. MCP & AI-agent ready.
Pricing
from $0.40 / 1,000 job results
Rating
5.0
(1)
Developer
Harsh Maur
Maintained by CommunityActor stats
2
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
LinkedIn Jobs Scraper — Scrape LinkedIn Jobs, Salaries, Recruiters & Company Data (No Login)
Extract job listings from LinkedIn at scale — by job title and location, with filters, or straight from a LinkedIn jobs search URL. Get the title, company, location, posting date, full description, seniority, salary, applicant count, the job poster (recruiter) contact, and optional company details — exported to JSON, CSV, or Excel, or pulled via the Apify API. No LinkedIn account, login, or cookies required.
What does LinkedIn Jobs Scraper do? {#what-does-it-do}
It turns any LinkedIn job search into a clean, structured dataset — one row per job, ready for spreadsheets, BI tools, a database, or an AI pipeline.
✅ No login or cookies
Reads LinkedIn's public, logged-out job pages. You never share credentials or risk an account.
🔎 Search by keyword or paste a URL
Drive it with a job title + location + filters, or paste a search URL you built on LinkedIn — use either or both.
🧾 Full job details
Description (text + HTML), seniority level, employment type, job function, industries, applicant count, and salary (parsed into min/max/currency/period).
🧑💼 Recruiter contact
When a posting lists a job poster, you get their name, title, and LinkedIn profile URL — great for sourcing and outreach.
🏢 Optional company enrichment
Turn on scrapeCompany to add each employer's description, website, employee count, and headquarters.
🌎 Beat the 1,000-result cap
splitByLocation fans a search across a country's metros so a single run can gather far more than LinkedIn's per-search ceiling.
🔄 Export anywhere
JSON, CSV, Excel, HTML table, RSS, or JSONL — plus the Apify API and integrations.
How to scrape LinkedIn jobs without logging in {#how-to-scrape}
LinkedIn serves its public jobs feed to logged-out visitors. This Actor reads that same feed, ten listings at a time, following a search until it hits your Max jobs limit or LinkedIn's ~1,000-results-per-search ceiling. With Scrape full job details on, it then opens each posting for the description, criteria, salary, applicant count, and recruiter.
Two ways to drive it, separately or together:
- By keyword — a job title (e.g.
product manager), a location (Berlin,United States,Remote), and optional filters: date posted, workplace type, job type, experience level, sort order. - By URL — build a filtered search on linkedin.com/jobs and paste the page URL; the Actor reproduces that exact search and paginates it.
What data can you extract from LinkedIn jobs? {#what-data}
Every job is one dataset item with a consistent shape (missing values come back as null, never omitted):
| Field | Description |
|---|---|
title | Job title |
company, companyUrl, companyLogo | Employer name, LinkedIn company page, logo |
location | Job location as shown on the listing |
postedAt, postedTimeAgo | ISO posting date + human "3 days ago" |
employmentType | Full-time, Part-time, Contract, … |
seniorityLevel | Entry, Associate, Mid-Senior, Director, … |
jobFunction, industries | LinkedIn job function + industries |
applicants | Applicant count (LinkedIn caps display at ~200) |
salary, salaryMin, salaryMax, salaryCurrency, salaryPeriod | Raw + parsed compensation (when listed) |
benefits | Listing badges (e.g. "Actively Hiring") |
jobPosterName, jobPosterTitle, jobPosterProfileUrl, jobPosterPhoto | Recruiter / hiring contact (when present) |
descriptionText, descriptionMarkdown, descriptionHtml | Full job description as clean text, Markdown, and HTML |
companyDescription, companyWebsite, companyEmployeesCount, companyHeadquarters | Company-page fields (with scrapeCompany) |
url, jobId | Canonical job URL + LinkedIn job id |
searchTerm, searchPosition, scrapedAt | Which search found it, its rank, when scraped |
LinkedIn job scraping use cases {#use-cases}
- Recruiting & sourcing — build candidate-market maps and reach the recruiter behind each role via the job-poster fields.
- Salary & labor-market research — aggregate parsed salary ranges by title, seniority, and region.
- Lead generation — companies posting jobs are companies that are hiring (and buying); enrich with company size + website.
- Job boards & aggregators — keep a niche board stocked with fresh, structured listings.
- Competitive intelligence — track a competitor's open roles, locations, and growth signals over time.
- AI & RAG pipelines — feed clean descriptions into matching, summarization, or classification.
How to scrape LinkedIn jobs by keyword and location {#scrape-by-keyword}
Search by title + location
{ "keywords": "software engineer", "location": "United States", "maxItems": 200 }
Filter by workplace type (remote / hybrid / on-site)
{ "keywords": "data scientist", "location": "United States", "workplaceType": "remote", "maxItems": 200 }
Filter by experience level and recency
{ "keywords": "marketing manager", "location": "New York, NY", "experienceLevel": "mid-senior", "datePosted": "7" }
Get the newest postings first
{ "keywords": "product manager", "location": "London", "datePosted": "1", "sortBy": "recent" }
How to scrape LinkedIn jobs from a search URL {#scrape-by-url}
Built a finely-filtered search on LinkedIn? Paste its URL and it's scraped as-is (the URL's own filters are honored):
{ "startUrls": [{ "url": "https://www.linkedin.com/jobs/search/?keywords=devops&location=Germany&f_E=4&f_WT=2" }], "maxItems": 300 }
How to scrape more than 1,000 LinkedIn jobs {#beat-the-cap}
LinkedIn returns at most ~1,000 results for any single search. Enable Split by location to automatically fan the search across the chosen country's major metro areas — each metro is its own search with its own ceiling — and results are de-duplicated by job id across cities:
{ "keywords": "software engineer", "splitByLocation": true, "splitCountry": "us", "maxItems": 5000 }
How to scrape LinkedIn company details {#scrape-company}
Turn on Scrape company details to add each employer's description, website, employee count, and HQ. Company pages are fetched once per unique employer (cached), so it stays efficient even across thousands of jobs:
{ "keywords": "account executive", "location": "United States", "scrapeDetails": true, "scrapeCompany": true, "maxItems": 100 }
Fast, lightweight runs {#fast-mode}
Only need the search-card fields (title, company, location, posted date, logo, URL)? Turn Scrape full job details off to skip the per-job page fetch for a faster, cheaper run:
{ "keywords": "sales", "location": "Remote", "scrapeDetails": false, "maxItems": 1000 }
Limiting results {#limits}
- Max jobs (
maxItems) caps the total across every search and URL. Set0for no cap (stops when LinkedIn runs out of results). - A single search is bounded by LinkedIn's ~1,000-result ceiling; use Split by location to go beyond it.
Output example {#output-example}
{"title": "Senior Data Scientist","company": "Acme Analytics","companyUrl": "https://www.linkedin.com/company/acme-analytics","companyLogo": "https://media.licdn.com/dms/image/.../company-logo_100_100","location": "San Francisco, CA","postedAt": "2026-06-12","postedTimeAgo": "3 days ago","benefits": ["Actively Hiring"],"employmentType": "Full-time","seniorityLevel": "Mid-Senior level","jobFunction": "Engineering and Information Technology","industries": "Software Development","applicants": 87,"salary": "$170,000.00/yr - $210,000.00/yr","salaryMin": 170000,"salaryMax": 210000,"salaryCurrency": "USD","salaryPeriod": "YEAR","jobPosterName": "Jane Recruiter","jobPosterTitle": "Talent Partner at Acme Analytics","jobPosterProfileUrl": "https://www.linkedin.com/in/jane-recruiter","companyDescription": "Acme Analytics builds decision-intelligence tools…","companyWebsite": "https://acme.example","companyEmployeesCount": 6420,"companyHeadquarters": "San Francisco, California, US","applyUrl": null,"url": "https://www.linkedin.com/jobs/view/4416601085","descriptionText": "About the role…","descriptionMarkdown": "## About the role\n\n- Build…","jobId": "4416601085","searchTerm": "data scientist","searchPosition": 4,"scrapedAt": "2026-06-18T12:00:00.000Z"}
The recruiter, salary, and applyUrl fields populate only when LinkedIn exposes them on a given posting; the company* fields appear when scrapeCompany is enabled.
How much does it cost to scrape LinkedIn jobs? {#pricing}
Pay only per result — no login, no start fee, no subscription. From $0.50 per 1,000 jobs — about half the price of the most popular LinkedIn jobs scraper, and you get more per job: parsed salary, the recruiter (job-poster) contact, Markdown descriptions, and optional company details. Turn Scrape full job details off for a faster, cheaper run with the core search-card fields only.
Use LinkedIn Jobs Scraper with AI agents and MCP {#ai-mcp}
Every Apify Actor is callable by AI agents through the Apify MCP server, so assistants like Claude can run this scraper and read its results as a tool. It also pairs naturally with LLM workflows — pull clean descriptionText into matching, summarization, or candidate-screening prompts.
Integrate with n8n, Zapier, and Make {#integrations}
Trigger runs and collect results from your stack via the Apify API or native integrations.
Run and get results synchronously (good for small scrapes):
POST https://api.apify.com/v2/acts/harshmaur~linkedin-jobs-scraper/run-sync-get-dataset-items?token=YOUR_TOKENContent-Type: application/json{ "keywords": "product manager", "location": "United States", "maxItems": 100 }
Run asynchronously (for large scrapes), then fetch the dataset when done:
POST https://api.apify.com/v2/acts/harshmaur~linkedin-jobs-scraper/runs?token=YOUR_TOKEN
Schedule recurring runs from the Apify console to keep a live LinkedIn jobs feed.
Support {#support}
Found a bug or need a field added? Open an issue on the Actor's Issues tab — questions and feature requests are welcome, and fixes ship quickly.
FAQ {#faq}
Do I need a LinkedIn account, login, or cookies?
No. The scraper only reads LinkedIn's public, logged-out job pages — no credentials of any kind.
How many jobs can I scrape from LinkedIn?
Up to ~1,000 per search (LinkedIn's own ceiling). Enable Split by location to fan out across a country's metros and gather many thousands in one run.
Can I scrape only remote jobs?
Yes — set Workplace type to Remote (or Hybrid/On-site), or paste a remote-filtered LinkedIn search URL.
Can I get the recruiter or hiring manager's contact?
When a posting lists a job poster, you get their name, title, and profile URL. Not every job names one.
Does it include salary data?
When LinkedIn shows compensation on a listing, you get the raw string plus parsed salaryMin/salaryMax/salaryCurrency/salaryPeriod. Many listings don't publish salary.
Can I scrape a specific filtered search I built on LinkedIn?
Yes — paste its URL into Search URLs and its filters are honored as-is.
Can I get job descriptions as Markdown?
Yes — every scraped description is returned as clean Markdown (descriptionMarkdown) in addition to plain text and raw HTML. Markdown keeps the headings and bullet lists intact, which is ideal for feeding LLMs and RAG pipelines.
Which export formats are supported?
JSON, CSV, Excel, HTML table, RSS, and JSONL from the dataset, plus the Apify API.
How fresh is the data?
Every run fetches live results from LinkedIn; use Date posted to restrict to the last 24 hours, week, or month.
Can AI agents use this scraper?
Yes — it's available as a tool via the Apify MCP server.
Other Actors {#other-actors}
Part of a family of no-login, pay-per-result scrapers:
| Actor | Description |
|---|---|
| Indeed Jobs Scraper | Indeed listings with salary, company details, and full descriptions |
| Reddit Scraper | Posts, comments, communities, and user profiles |
| Reddit Comments Scraper | Every comment and nested reply from any post |
| Reddit Search Scraper | Keyword search across posts, comments, and communities |
| Reddit Subreddit Scraper | Entire subreddits, past the listing cap |
Pair the LinkedIn and Indeed scrapers to build a cross-source hiring or market-research dataset.