LinkedIn Jobs Scraper avatar

LinkedIn Jobs Scraper

Pricing

Pay per event

Go to Apify Store
LinkedIn Jobs Scraper

LinkedIn Jobs Scraper

Scrape LinkedIn job listings using the public guest API. Search by keyword, location, job type, experience level, and workplace type. Returns salary, company info, full descriptions, and more. No login or cookies required. 256MB, HTTP-only, fast and cheap.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

3 days ago

Last modified

Share

Scrape LinkedIn job listings by keyword, location, and filters. Extract salary, company info, full descriptions, and more. No login or cookies required.

What does LinkedIn Jobs Scraper do?

LinkedIn Jobs Scraper extracts job posting data from LinkedIn using the public guest API. It searches for jobs by keyword and location, then extracts detailed information including salary ranges, company profiles, job descriptions, seniority levels, and applicant counts. No LinkedIn account or cookies needed.

What data can you extract?

FieldDescription
Job titleFull position title
CompanyCompany name, LinkedIn URL, and logo
LocationJob location (city, state, country)
SalarySalary range when available
Workplace typeRemote, On-site, or Hybrid
DescriptionFull job description (HTML and plain text)
Seniority levelEntry, Mid-Senior, Director, Executive, etc.
Employment typeFull-time, Part-time, Contract, etc.
Job functionEngineering, Marketing, Sales, etc.
IndustriesIndustry sectors
Applicants countNumber of applicants (as integer)
Posted dateWhen the job was listed
Apply URLDirect application link
BenefitsListed benefits
Job URLDirect LinkedIn job posting link

Why scrape LinkedIn jobs?

  • Job market research -- Analyze hiring trends, in-demand skills, and salary benchmarks across industries and locations
  • Recruitment intelligence -- Monitor competitor hiring activity and identify talent market dynamics
  • Salary benchmarking -- Compare compensation packages across companies, roles, and regions
  • Lead generation -- Identify companies that are actively hiring (growing companies = potential customers)
  • Academic research -- Study labor market patterns, job description language, and employment trends
  • Career planning -- Track job availability and requirements for specific roles

How to scrape LinkedIn jobs

  1. Go to the LinkedIn Jobs Scraper page on Apify Store.
  2. Click Try for free to open the actor configuration.
  3. Enter a search query (e.g., "software engineer", "data analyst", "marketing manager").
  4. Enter a location (e.g., "New York", "London", "Remote").
  5. Optionally filter by job type, experience level, workplace type, or date posted.
  6. Set the maximum number of jobs you want (up to 1,000).
  7. Click Start and wait for your data.
  8. Download results as JSON, CSV, or Excel, or connect via the Apify API.

Input example

{
"searchQuery": "software engineer",
"location": "United States",
"maxJobs": 50,
"jobType": "F",
"workplaceType": "2",
"scrapeJobDetails": true
}

Input parameters

ParameterTypeDefaultDescription
searchQuerystringrequiredJob title, keyword, or company name
locationstring""City, state, country, or "Remote"
maxJobsinteger50Max job listings to scrape (up to 1,000)
jobTypestring"all"F=Full-time, P=Part-time, C=Contract, T=Temporary, I=Internship
experienceLevelstring"all"1=Internship, 2=Entry, 3=Associate, 4=Mid-Senior, 5=Director, 6=Executive
workplaceTypestring"all"1=On-site, 2=Remote, 3=Hybrid
datePostedstring"all"r86400=Past 24h, r604800=Past week, r2592000=Past month
sortBystring"R"R=Most relevant, DD=Most recent
scrapeJobDetailsbooleantrueFetch full details (description, salary, criteria)

Output example

{
"id": "4370317193",
"title": "Software Engineer (New Grads) - San Francisco",
"url": "https://www.linkedin.com/jobs/view/software-engineer-new-grads-san-francisco-at-giga-4370317193",
"companyName": "Giga",
"companyLinkedinUrl": "https://www.linkedin.com/company/gigaml",
"companyLogo": "https://media.licdn.com/dms/image/v2/...",
"location": "San Francisco, CA",
"postedAt": "2 weeks ago",
"salary": "$160,000.00/yr - $250,000.00/yr",
"applicantsCount": 200,
"workplaceType": null,
"descriptionHtml": "<strong>About Giga</strong>...",
"descriptionText": "About Giga...",
"seniorityLevel": "Not Applicable",
"employmentType": "Full-time",
"jobFunction": "Engineering and Information Technology",
"industries": "Software Development",
"applyUrl": "https://www.linkedin.com/jobs/view/...",
"benefits": null,
"scrapedAt": "2026-03-17T17:38:24.331Z"
}

Filters and search options

Job type filter

Filter results by employment type:

  • Full-time (F) -- Standard full-time positions
  • Part-time (P) -- Part-time roles
  • Contract (C) -- Contract/freelance work
  • Temporary (T) -- Temporary positions
  • Internship (I) -- Internship opportunities

Experience level filter

Narrow by seniority:

  • Internship (1), Entry level (2), Associate (3), Mid-Senior level (4), Director (5), Executive (6)

Workplace type filter

Find jobs matching your work preferences:

  • On-site (1) -- In-office positions
  • Remote (2) -- Fully remote roles
  • Hybrid (3) -- Mix of remote and on-site

Pricing

This actor uses pay-per-event pricing -- 50% cheaper than alternatives:

EventPriceDescription
Run started$0.005One-time charge per run
Job scraped$0.0005Per job listing extracted

Cost estimate: Scraping 1,000 job listings costs approximately $0.505 ($0.005 start + $0.50 for listings). Compare to competitors charging $1.00+ per 1,000 results.

Pure HTTP architecture (no browser overhead) means lower platform costs too. Runs on 256MB memory with datacenter proxy.

Tips for best results

  • Use specific keywords -- "react developer" returns more relevant results than "developer"
  • Combine filters -- Use job type + experience level + workplace type to narrow results
  • Set scrapeJobDetails: false for faster runs when you only need listing summaries (title, company, location)
  • Sort by date (sortBy: "DD") to find the newest postings first
  • LinkedIn caps results at ~1,000 per search -- use more specific queries to get targeted results

Integrations

Connect LinkedIn Jobs Scraper with your tools and workflows:

  • Google Sheets -- Export job listings directly to a spreadsheet for tracking and analysis
  • Slack -- Get notified when new jobs matching your criteria are found
  • Zapier -- Trigger workflows when new job data is available (e.g., alert hiring managers, update CRM)
  • Make -- Build automated pipelines: scrape jobs, enrich data, then push to your ATS
  • Webhooks -- Send results to your own API endpoint
  • Schedule -- Run daily or weekly to monitor new job postings automatically

Programmatic access via API

Use the Apify API to run LinkedIn Jobs Scraper from your code.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("automation-lab/linkedin-jobs-scraper").call(run_input={
"searchQuery": "data analyst",
"location": "New York",
"maxJobs": 50,
"scrapeJobDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['title']} @ {item['companyName']} -- {item.get('salary', 'N/A')}")

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/linkedin-jobs-scraper').call({
searchQuery: 'data analyst',
location: 'New York',
maxJobs: 50,
scrapeJobDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(`${item.title} @ ${item.companyName} -- ${item.salary}`));

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~linkedin-jobs-scraper/runs?token=YOUR_API_TOKEN&waitForFinish=120" \
-H "Content-Type: application/json" \
-d '{"searchQuery": "data analyst", "location": "New York", "maxJobs": 50}'

Use with AI agents via MCP

LinkedIn Jobs Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com"
}
}
}

Example prompts

Once connected, try asking your AI assistant:

  • "Search LinkedIn for 'software engineer' jobs in San Francisco"
  • "Find all remote data scientist jobs posted this week"
  • "Get marketing manager positions in London"

Learn more in the Apify MCP documentation.

FAQ

How much does it cost to scrape LinkedIn jobs?

At $0.0005 per listing, scraping 1,000 jobs costs about $0.51. Apify's free plan includes $5/month of platform credits, so you can scrape approximately 10,000 job listings per month for free.

How fast is the scraper?

Very fast -- it uses pure HTTP requests (no browser), so it can extract 100 jobs with full details in under 60 seconds. Without details (scrapeJobDetails: false), 100 listings complete in about 5 seconds.

Does it require a LinkedIn account?

No. This scraper uses LinkedIn's public guest API, which does not require login, cookies, or any LinkedIn account. It accesses the same data visible to anyone browsing LinkedIn jobs without signing in.

Does it extract full job descriptions?

Yes. With scrapeJobDetails: true (the default), the scraper fetches the complete job detail page for each listing. This includes the full HTML and plain text description, salary, seniority level, employment type, job function, industries, and applicant count.

What is the maximum number of results?

LinkedIn's guest API caps search results at approximately 1,000 per query. For larger datasets, use multiple searches with different keyword/location/filter combinations.

What data formats can I export?

You can download results as JSON, CSV, Excel, XML, or HTML table. You can also access the data via the Apify API or connect it to Google Sheets, Zapier, Make, and other integrations.

This actor is provided for educational and research purposes. Users are responsible for ensuring their use complies with LinkedIn's Terms of Service and applicable laws. Always use scraped data responsibly.

Why are some fields null?

Not all LinkedIn listings include salary, workplace type, or benefits information. When employers don't provide this data, the corresponding fields will be null. Use filters in your downstream processing to handle optional fields.

Can I scrape LinkedIn jobs on a schedule?

Yes. Use Apify Schedules to run the scraper daily or weekly. Combine with Google Sheets to build a live job tracking dashboard, or use Slack notifications to get alerted when new jobs match your criteria.

How does this compare to other LinkedIn scrapers?

This scraper is 50% cheaper ($0.0005 vs $0.001/job), uses structured input (keyword + location + filters instead of raw URLs), extracts workplace type (Remote/On-site/Hybrid), and runs on 256MB with datacenter proxy (competitors need 4GB + residential proxy).

Technical details

  • Architecture: Pure HTTP requests with cheerio HTML parsing -- no browser, no Playwright, no Puppeteer
  • Memory: 256MB (minimum Apify allocation)
  • Proxy: Works with datacenter proxy (no residential proxy needed)
  • Rate limiting: Built-in delays between requests to avoid LinkedIn rate limits
  • Retry logic: Configurable retry attempts with exponential backoff
  • Pagination: Automatically paginates through search results (25 per page)
  • Deduplication: Tracks seen job IDs to avoid duplicate results

Limitations

  • LinkedIn caps guest API search results at approximately 1,000 per query
  • Some job listings may not include salary, workplace type, or benefits data
  • LinkedIn occasionally rotates HTML structure -- if extraction breaks, please report an issue
  • The guest API does not support scraping company detail pages (employee count, revenue, etc.)
  • Very high-volume scraping may trigger temporary rate limits from LinkedIn

Other job scrapers and lead generation tools