Advanced LinkedIn Jobs Scraper – Fast & Affordable
Pricing
from $0.70 / 1,000 jobs
Advanced LinkedIn Jobs Scraper – Fast & Affordable
The most affordable LinkedIn job scraper on Apify. Extract 1,000+ jobs in minutes, including full details (title, company, location, description, link). Pay-as-you-go, no cookies, no hassle.
Pricing
from $0.70 / 1,000 jobs
Rating
4.3
(4)
Developer
Practical Tools
Actor stats
5
Bookmarked
199
Total users
32
Monthly active users
18 days
Issues response
3 days ago
Last modified
Categories
Share
LinkedIn Jobs Scraper – $1 per 1,000 Jobs. No Login. AI Search.
Extract LinkedIn job listings with pay-per-result pricing, optional full job descriptions, and AI-powered natural language search. No LinkedIn account required.
💰 Pricing
| Event | Cost |
|---|---|
| Job scraped | $0.001 (1,000 jobs = $1.00) |
| Job description fetched | $0.001 per description (optional) |
- No setup fees, no subscriptions, no per-run charges
- Zero results = zero charge
- Description fetching is opt-in — only pay for it if you enable it
📋 Output
Each job is a separate dataset item (one row per job). Download as JSON, CSV, or Excel from Apify.
Standard fields (always returned):
| Field | Description |
|---|---|
jobId | LinkedIn's internal job posting ID |
title | Job title |
company | Company name |
location | Job location |
datePosted | Posting date |
url | Direct link to the job posting |
labels | Badges like "Easy Apply", "Actively Hiring" |
logo | Company logo URL |
discoveredAt | Timestamp when the job was scraped |
source | Always "linkedin" |
Optional field (when fetchDescription: true):
| Field | Description |
|---|---|
description | Full job description as plain text |
🚀 How to Use
Simple search
{"keywords": "Product Manager","location": "San Francisco Bay Area","maxPages": 5}
With job descriptions
{"keywords": "Software Engineer","location": "New York","maxPages": 3,"fetchDescription": true}
Note: Enable
fetchDescriptionwhen you need to filter by description content downstream. Each description costs one extra request and $0.001.
AI-powered natural language search
Describe your search in plain English instead of filling out individual fields:
{"naturalLanguageQuery": "senior product manager at Google or Meta in San Francisco, remote, posted last week","useNaturalLanguage": true,"openaiApiKey": "your-openai-api-key","fetchDescription": true}
More examples:
"software engineer jobs in New York, entry level, full time""data scientist positions at startups, remote, from last week""marketing manager roles in Chicago or Austin, hybrid"
The AI (GPT-4-turbo) resolves company names to LinkedIn IDs, locations to geo IDs, and maps natural language filters to LinkedIn's search parameters. Falls back to regex parsing if the AI call fails.
Advanced filtering
{"keywords": "Software Engineer","location": "United States","experienceLevel": ["3", "4"],"workLocation": ["2", "3"],"contractType": ["1"],"timePosted": "r604800","sortBy": "DD","maxPages": 20,"fetchDescription": true}
Search by company names
{"keywords": "Data Scientist","companyNames": ["Google", "Microsoft", "Apple"],"timePosted": "r604800","maxPages": 10}
⚙️ Input Reference
Search parameters
| Field | Type | Description |
|---|---|---|
keywords | string | Job title, skills, or keywords |
location | string | City, state, or country |
geoId | string | LinkedIn geo ID (overrides location) |
distance | integer | Search radius in miles (5–100) |
companyNames | string[] | Company names (resolved to LinkedIn IDs) |
companyIds | string[] | LinkedIn company IDs directly |
industryIds | string[] | LinkedIn industry IDs |
Filters
| Field | Type | Values |
|---|---|---|
experienceLevel | string[] | 1 Internship · 2 Entry · 3 Associate · 4 Mid-Senior · 5 Director · 6 Executive |
workType | string[] | 1 Full-time · 2 Part-time · 3 Contract · 4 Temporary · 5 Volunteer · 6 Internship |
workLocation | string[] | 1 On-site · 2 Remote · 3 Hybrid |
timePosted | string | r3600 1h · r86400 24h · r604800 1w · r2592000 1mo |
companySizes | string[] | 1–8 (1-10 up to 10,000+ employees) |
easyApplyOnly | boolean | LinkedIn Easy Apply jobs only |
sortBy | string | R Relevance · DD Date |
Behavior options
| Field | Type | Default | Description |
|---|---|---|---|
maxPages | integer | 1 | Pages to scrape (10 jobs per page) |
fetchDescription | boolean | false | Fetch full job description for each job |
maxRequestsPerCrawl | integer | 100 | Hard cap on HTTP requests |
Tip: When
fetchDescriptionis enabled, each job uses 2 requests (1 search + 1 detail). SetmaxRequestsPerCrawlaccordingly — e.g. 10 jobs needs at least 20 requests.
AI search (optional)
| Field | Type | Description |
|---|---|---|
naturalLanguageQuery | string | Plain English job search query |
useNaturalLanguage | boolean | Enable AI parsing |
openaiApiKey | string | Your OpenAI API key (bring your own) |
Advanced
| Field | Type | Description |
|---|---|---|
startUrls | array | Override with your own LinkedIn search URLs |
linkedinParams | object | Raw LinkedIn query params (overrides friendly fields) |
proxy | object | Apify proxy or custom proxy URLs |
❓ FAQ
Do I need a LinkedIn account? No. The actor uses LinkedIn's public guest API — no authentication required.
Is this legal? This actor only accesses publicly available job listings that anyone can view without logging in.
When should I use fetchDescription?
When you need to filter jobs by their content — required skills, responsibilities, salary info embedded in the description, etc. If you only need titles, companies, and locations, leave it off to save cost and time.
What if I get zero results? You pay nothing. Charges only apply to successfully scraped jobs and descriptions.
How does the AI search work? Your query is sent to GPT-4-turbo which extracts job title, location, company, experience level, work type, and time frame, then resolves them to LinkedIn's internal IDs. If the AI call fails, a regex fallback handles the parsing.
Do I need an OpenAI key? Only for natural language search. All other input modes work without one.
Can I use my own proxies?
Yes — pass proxyUrls in the proxy field, or use Apify's residential proxy network via useApifyProxy: true.