LinkedIn Jobs Scraper
Pricing
from $1.40 / 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.40 / 1,000 results
Rating
0.0
(0)
Developer

Artificially
Actor stats
0
Bookmarked
3
Total users
1
Monthly active users
4 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
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 - Automatically removes duplicate listings
- 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 |
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
| 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