LinkedIn Jobs Scraper
Pricing
from $1.26 / 1,000 results
LinkedIn Jobs Scraper
Scrape job listings from LinkedIn. Search by keywords, location, job type, experience level, and more. Extract job details, company information, and application links.
Pricing
from $1.26 / 1,000 results
Rating
0.0
(0)
Developer
Artificially
Maintained by CommunityActor stats
0
Bookmarked
117
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
Scrape job listings from LinkedIn without login. Search by keywords, location, job type, experience level, and more. Extract job details, company information, and direct application links.
Built by Artificially | Follow us on X @artificially_io
Use with AI agents (MCP)
This actor works as a tool for AI agents through Apify's MCP server at https://mcp.apify.com: the agent passes job search keywords and gets back one JSON item per job. For agents, set compactOutput: true to get slim items without photos and long text blobs, and keep limits small (maxJobs around 10-25).
Quick setup (sign in with your Apify account when asked):
- Claude (claude.ai or Claude Desktop): Settings → Connectors → Add custom connector, and paste
https://mcp.apify.com?tools=artificially/linkedin-jobs-scraper - Claude Code or Cursor via the Apify CLI (latest version,
apify upgrade):apify mcp install claude-code --tools artificially/linkedin-jobs-scraper(usecursorinstead ofclaude-codefor Cursor) - Any MCP client (Cursor, VS Code, Windsurf):
{"mcpServers": {"apify": { "url": "https://mcp.apify.com?tools=artificially/linkedin-jobs-scraper" }}}
Try asking:
- "Find 20 remote data engineer jobs on LinkedIn posted in the last week."
- "Show product manager jobs in London on LinkedIn with company and posting date."
Features
- No login required - Uses LinkedIn's public guest API
- Powerful filters - Job type, experience level, date posted, remote/on-site
- Multiple queries - Search for multiple job titles in one run
- Reliable extraction - Robust parsing with fallback selectors
- Duplicate detection - The same job is never saved (or charged) twice in a run
- Rate limit handling - Built-in retries and respectful delays
- Proxy support - Works with Apify Proxy for reliable results
Input
| Field | Type | Description | Default |
|---|---|---|---|
searchQueries | array | Job search keywords | Required |
location | string | Location to search in | - |
maxJobs | integer | Max jobs per query (1-1000) | 100 |
jobType | array | full-time, part-time, contract, etc. | All |
experienceLevel | array | entry, mid-senior, director, etc. | All |
datePosted | string | any, past-24h, past-week, past-month | any |
remoteFilter | string | any, remote, on-site, hybrid | any |
maxAttemptsPerPage | integer | Retries per blocked/rate-limited page, each on a fresh proxy IP | 6 |
residentialFallback | boolean | Switch later retries to residential proxies when blocked | true |
compactOutput | boolean | Save slim items with only the key fields. Recommended for AI agents | false |
proxyConfiguration | object | Proxy settings | Apify Proxy |
Example Input
{"searchQueries": ["software engineer", "data scientist"],"location": "San Francisco, CA","maxJobs": 100,"jobType": ["full-time"],"experienceLevel": ["entry", "associate"],"datePosted": "past-week","remoteFilter": "remote","proxyConfiguration": {"useApifyProxy": true}}
Output
Each job listing contains:
| Field | Type | Description |
|---|---|---|
jobId | string | LinkedIn job ID |
title | string | Job title |
company | string | Company name |
companyUrl | string | LinkedIn company page URL |
companyLogoUrl | string | Company logo image URL |
location | string | Job location |
listingDate | string | When job was posted (e.g., "2 days ago") |
listingDateParsed | string | ISO date when available |
jobUrl | string | Direct link to job posting |
searchQuery | string | The search query that found this job |
scrapedAt | string | When the data was scraped |
Example Output
{"jobId": "3812345678","title": "Senior Software Engineer","company": "Tech Company Inc","companyUrl": "https://www.linkedin.com/company/tech-company","companyLogoUrl": "https://media.licdn.com/dms/image/...","location": "San Francisco, CA (Remote)","listingDate": "1 week ago","listingDateParsed": "2024-01-08T00:00:00.000Z","jobUrl": "https://www.linkedin.com/jobs/view/3812345678","searchQuery": "software engineer","scrapedAt": "2024-01-15T10:30:00.000Z"}
Usage
Via Apify Console
- Go to the LinkedIn Jobs Scraper page
- Enter search keywords and location
- Configure filters as needed
- Click "Start"
- Download results in JSON, CSV, or Excel
Via API
curl -X POST "https://api.apify.com/v2/acts/artificially~linkedin-jobs-scraper/runs" \-H "Authorization: Bearer <your_api_token>" \-H "Content-Type: application/json" \-d '{"searchQueries": ["software engineer"],"location": "New York","maxJobs": 50,"jobType": ["full-time"],"datePosted": "past-week"}'
Via JavaScript SDK
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<your_api_token>' });const input = {searchQueries: ['software engineer', 'data scientist'],location: 'San Francisco, CA',maxJobs: 100,jobType: ['full-time'],remoteFilter: 'remote',};const run = await client.actor('artificially/linkedin-jobs-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(job => {console.log(`${job.title} at ${job.company} - ${job.location}`);});
Via Python SDK
from apify_client import ApifyClientclient = ApifyClient("<your_api_token>")run_input = {"searchQueries": ["software engineer", "data scientist"],"location": "San Francisco, CA","maxJobs": 100,"jobType": ["full-time"],}run = client.actor("artificially/linkedin-jobs-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['title']} at {item['company']} - {item['location']}")
Use Cases
- Job Market Research - Analyze hiring trends and in-demand skills
- Salary Benchmarking - Compare compensation across companies
- Recruitment Intelligence - Track competitor hiring patterns
- Career Monitoring - Get alerts for new job postings
- Skills Analysis - Identify most requested qualifications
- Geographic Analysis - Compare job markets across locations
Tips for Best Results
- Enable Proxy - LinkedIn may block requests without proxy
- Use Specific Keywords - More specific queries yield better results
- Try Location Variations - "San Francisco" vs "San Francisco, CA" vs "Bay Area"
- Combine Filters - Use multiple filters to narrow results
- Start Small - Test with 50 jobs before scaling up
Pricing
You only pay for complete results. A job is saved (and charged) only when it has a real title, company and LinkedIn job ID. Pages blocked by LinkedIn (rate limits, login walls), incomplete listings and duplicates are skipped for free. A SUMMARY record in the run's key-value store shows how many jobs were saved and skipped, with details in FAILED_PAGES and INVALID_JOBS.
| Resource | Cost |
|---|---|
| Platform usage | ~$1.79 per 1,000 jobs |
| Actor fee | $2.00 per 1,000 jobs |
| Total | ~$3.79 per 1,000 jobs |
Limitations
- LinkedIn limits guest API results to ~1000 jobs per search
- Some company logos may not be available
- Rate limiting is applied to respect LinkedIn's servers
Changelog
v1.0.0
- Initial production release
- Robust job parsing with multiple fallback selectors
- Automatic retry on rate limiting
- Duplicate detection
- All major filters supported
Legal Notice
This actor scrapes publicly available job listings from LinkedIn's guest API. No login or authentication is required or used. Please respect LinkedIn's Terms of Service and use responsibly for legitimate business purposes.
Support
- X/Twitter: @artificially_io
- Apify Profile: artificially
- Issues: Use the Issues tab on this actor's Apify page
Related actors
- LinkedIn Profile Scraper - Full public profiles: headline, experience, education, skills and languages.
- LinkedIn Company Scraper - Company pages: website, industry, size, headquarters, specialties and funding.
- LinkedIn Company Employees Scraper - Employees featured on a company page with name, title, location and profile URL.
- LinkedIn Posts Scraper - Recent public company posts with text, engagement counts and media type.
- Career Site Jobs Scraper - Jobs straight from company career sites on Greenhouse, Lever, Ashby, Workday and more.