LinkedIn Jobs Scraper
Pricing
from $0.50 / 1,000 job scrapeds
LinkedIn Jobs Scraper
LinkedIn Jobs Scraper searches and extracts job postings by keywords, location, and company filter. Scrape job title, company, location, salary, employment type, seniority, applicants, description, and direct apply link into clean Excel, CSV, or JSON.
Pricing
from $0.50 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Crawlix
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Security
Limited permissionsShare
The LinkedIn Jobs Scraper extracts verified public job postings and hiring opportunities directly from LinkedIn without requiring an account, login credentials, or cookies. Search by job keywords, roles, technologies, or skills across any global location, apply targeted filters for employers, posting dates, Easy Apply, or under 10 applicants, and collect complete job records with titles, companies, locations, compensation, and optional deep enrichment (full job descriptions, seniority levels, employment types, job functions, industries, and direct apply links).
Use it as an automated recruiting intelligence pipeline, a job board aggregator, a market salary tracker, or a lead generator for staffing agencies directly exporting into Excel, CSV, or JSON formats.
Overview & Core Capabilities: LinkedIn Jobs Scraper
The LinkedIn Jobs Scraper is built for high-throughput, structured extraction of LinkedIn job listings. Instead of manually searching through pagination, copying job cards, and clicking into individual openings to view descriptions, this actor automates search execution, pagination up to the 1,000-job platform guest ceiling, and optional full-page detail enrichment in a single resilient run.
What This LinkedIn Jobs Scraper Extracts:
- Core Search Tracking: Search keyword query, search location, and targeted company name/ID.
- Job Identifiers & Links: Unique job ID, canonical LinkedIn job URN, direct LinkedIn job URL, and external direct apply URL.
- Role & Employer Metadata: Job title, hiring company name, numeric company ID, company profile URL, and office/workplace location.
- Publication & Timing: Exact publication ISO timestamp (
posted_date) and relative posting time (posted_time_ago, e.g. "2 hours ago", "3 days ago"). - Compensation & Badges: Listed salary ranges, hourly rates, or benefit compensation tags, actively hiring badges, and Easy Apply flags.
- Candidate Intelligence: Number of applicants who have applied (
applicants_count, e.g. "Under 10 applicants", "45 applicants"). - Deep Role Attributes (with
scrape_job_detailsenabled): Seniority level (Entry level, Mid-Senior level, Director, etc.), employment type (Full-time, Part-time, Contract, etc.), job functions, industry categories, clean plain-text description, and formatted description HTML.
Whether you execute the LinkedIn Jobs Scraper for one-off career research or integrate it into recurring enterprise talent ETL pipelines, every output row adheres to a clean, standardized schema with a custom overview table view ready for immediate analysis.
Practical Use Cases & Applications
Talent acquisition teams, recruitment agencies, market researchers, and software engineers rely on the LinkedIn Jobs Scraper for critical data workflows:
- Job Board Aggregation & Career Portals: Populate custom vertical job boards or niche career sites with real-time job listings filtered by role, skill, or location.
- Competitive Talent & Hiring Intelligence: Track hiring patterns, team expansions, and in-demand tech stacks across rival companies in real time.
- Staffing Agency Lead Generation: Identify companies that are actively hiring or listings with under 10 applicants to reach out to hiring managers before roles are filled.
- Labor Market & Compensation Research: Analyze salary distributions, geographic hiring trends, remote work availability, and seniority distributions across industries.
- Job Search Automation & Candidate Alerts: Set up scheduled scrapers to deliver freshly posted openings (past 24 hours or past week) directly into Slack, email, or a database.
- Skills & Tech Stack Trend Analysis: Aggregate thousands of job descriptions to discover trending programming languages, frameworks, certifications, and required qualifications.
Input Parameters & Configuration Reference
The LinkedIn Jobs Scraper accepts the following parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
keywords | Array of Strings | ["Python Developer"] | Job titles, keywords, skills, or role queries to search for (e.g. ["Data Engineer", "DevOps Engineer"]). |
location | String | "Worldwide" | Name of a single city, state, country, or region (e.g. "United States", "London", "Germany"). Only 1 location is allowed per run. No need to provide both Location and Geo ID; entering either will work. If both are given, Geo ID takes priority. Must be valid, otherwise falls back to Worldwide. |
geo_id | String | "" | Optional single numeric LinkedIn Geo ID (e.g. "103644278" for United States, "102257491" for London). Recommended for the highest success rate. Only 1 Geo ID is allowed per run. When provided, it takes priority over Location name. If incorrect or yields no results, falls back to Location name. If both are invalid, defaults to Worldwide. |
companies | Array of Strings | [] | Optional company names, handles, or URLs to restrict searches to specific employers (e.g. ["Google", "https://www.linkedin.com/company/apple"]). When provided, only jobs from these companies will be collected. |
max_jobs ($) | Integer | 50 | Maximum number of job postings to scrape per keyword (up to 1,000 max). Collecting jobs incurs a fee of $0.002 per job saved. |
jobs_date_posted | Select | "all" | Filter jobs by publication timeframe: "all", "past_month", "past_week", or "past_24_hours". Free to use with no extra fee. |
jobs_under_10_applicants | Boolean | false | When enabled, only returns job postings that currently have fewer than 10 applicants (f_EA=true). Note: Major companies (like Apple, Google, Microsoft) receive applicants very quickly; if you get 0 results when searching specific top employers, turn this filter off. Free to use with no extra fee. |
jobs_easy_apply | Boolean | false | When enabled, only returns jobs that feature 1-click LinkedIn Easy Apply. Important Tip: Many companies (especially major tech firms and large corporations like Apple, Google, Microsoft, Amazon) do not support Easy Apply and require direct career site applications. If this filter is enabled for such companies, the search may return 0 results. It is safest to keep this filter turned off when targeting specific corporate employers. |
scrape_job_details | Boolean | true | Enabled by default. Visits each job page to enrich records with full descriptions, seniority level, employment type, job functions, industries, and apply URLs. Free to use with no extra fee. |
proxyCountry | Select | "US" | Residential Proxy Country. Select from the 158+ residential proxy country option list. Sets the regional exit country your run connects from using residential proxies. Pick the country closest to your target market. |
proxy_configuration | Object | { "useApifyProxy": true } | Proxy configuration options. Residential proxies are automatically managed. |
Location Targeting Guide: Geo ID vs. Location Name
To target job postings in a specific geographic area, you can provide either a Location Name or a Geo ID:
1. Single Input Rule
- Only 1 location or 1 Geo ID is allowed per run: You can only specify a single location or single Geo ID at a time. Multiple locations or multiple Geo IDs (such as lists or comma-separated names) are not accepted.
2. No Need to Provide Both
- Providing either a Location Name OR a Geo ID will work seamlessly. You do not need to input both.
3. Priority & Automatic Fallback Hierarchy
If you provide both, or if an input is invalid, the actor executes the following intelligent hierarchy:
- Geo ID Takes Priority: When both
geo_idandlocationare entered, the actor prioritizes the exact numeric Geo ID. - Fallback to Location Name: If the provided Geo ID is incorrect, invalid, or yields zero job results on LinkedIn, the scraper automatically falls back to searching using your Location name input instead.
- Safe Fallback to Worldwide: You must provide a valid Geo ID or a correctly spelled Location name. If both the Geo ID and Location name are incorrect, unresolvable, or return no results, the scraper cleanly and safely defaults to searching Worldwide.
[!TIP]
Pro-Tip: Use Geo ID for the Highest Success Rate & Accuracy
Using the exact Geo ID directly gives the best chance and highest success rate compared to using a free-text location name. If you know the numeric Geo ID for your desired city, state, or country (e.g.
103644278for United States,102257491for Greater London,106779217for Bangladesh,101282230for Germany), entering it directly in the Geo ID field ensures maximum pinpoint accuracy without geographic ambiguity.
Pay-Per-Event (PPE) Pricing Model
The LinkedIn Jobs Scraper features a simple, transparent pricing structure: you are only charged per job listing successfully scraped. All filters (date posted, under 10 applicants, Easy Apply) and deep job detail enrichments are completely free and included at no extra cost.
| Event Name | Pricing | When Charged |
|---|---|---|
job | $0.002 per job | Charged only for each unique job posting successfully collected and saved to the dataset. All filters and job details are free! |
Free Account Note: Free Apify accounts can collect up to 50 items per run. Upgrade to an Apify paid plan for unlimited high-volume scraping.
Example Input Configurations
1. Keyword & Global Location Search
{"keywords": ["React Developer", "Node.js Developer"],"location": "Worldwide","max_jobs": 100,"jobs_date_posted": "past_week","scrape_job_details": true}
2. Company-Specific Job Search with Early Bird (Under 10 Applicants) Filter
{"keywords": ["Software Engineer"],"location": "United States","companies": ["Apple", "Google", "Microsoft"],"max_jobs": 50,"jobs_under_10_applicants": true,"jobs_easy_apply": true,"scrape_job_details": true}
Extracted Dataset Schema & Field Definitions
With Scrape Full Job Details enabled by default, the actor visits each posting to extract available specifications and employer attributes.
1. Fields That Most of the Time May Come in the Output
For the vast majority of LinkedIn job postings, these core fields are typically populated and may appear in your output records:
| Field Name | Type | Description |
|---|---|---|
title | String | Official job title of the opening. |
company_name | String | Name of the hiring company. |
location | String | Job workplace location (city, state, region, or country). |
description | String | Full clean plain-text job description with requirements and responsibilities. |
description_html | String | Formatted HTML job description markup. |
seniority_level | String | Career experience level (e.g. "Mid-Senior level", "Entry level", "Not Applicable"). |
employment_type | String | Work classification (e.g. "Full-time", "Contract", "Part-time"). |
posted_date | String | Publication date timestamp in ISO 8601 format (e.g. "2026-10-20"). |
posted_time_ago | String | Relative publication time (e.g. "2 days ago", "1 week ago"). |
job_id | String | Unique numeric identifier of the job posting on LinkedIn. |
job_urn | String | Canonical LinkedIn URN (e.g. "urn:li:jobPosting:4431992044"). |
job_url | String | Permanent LinkedIn public job viewing URL. |
apply_url | String | Application destination URL or LinkedIn job link. |
search_keyword | String | Search keyword query that discovered this posting. |
search_location | String | Search location filter applied during the run. |
scraped_at | String | UTC timestamp when this job record was collected. |
2. Fields Less Often Available (Present When Provided by the Listing or Employer)
Some fields appear less frequently or only when explicitly provided by the employer or when specific platform badges apply:
| Field Name | Type | Availability & Description |
|---|---|---|
industries | Array of Strings | Industry classification of the employer (present when specified by the company). |
job_functions | Array of Strings | Functional departments or role categories (present when tagged on LinkedIn). |
salary_or_benefits | String | Compensation range or rate (present only when the employer chooses to disclose salary info, e.g. "$120,000 - $150,000 / yr"). |
company_logo_url | String | Direct image link to the company's logo (present when the company has uploaded a logo). |
company_id | String | Numeric LinkedIn organization ID (present when resolvable from company profile links). |
company_url | String | Canonical LinkedIn company profile page link (present when the company maintains a public profile). |
applicants_count | String | Total applicant count string (present when displayed on the listing, e.g. "73 applicants", "Over 200 applicants"). |
workplace_type | String | Workplace arrangement ("Remote", "Hybrid", or "On-site" when explicitly indicated). |
is_actively_hiring | Boolean | True when flagged by the employer with the Actively Hiring badge. |
is_easy_apply | Boolean | True when the posting supports LinkedIn's Easy Apply application feature. |
is_under_10_applicants | Boolean | True when the role has fewer than 10 applicants or is flagged with "Be an early applicant". |
is_new_listing | Boolean | True when flagged on LinkedIn as a newly published opening. |
Example Output Record
A standard full output record with job details enabled:
{"title": "Python Developer","company_name": "CACI International Inc","company_id": "3672","company_url": "https://www.linkedin.com/company/caci-international-inc","company_logo_url": "https://media.licdn.com/dms/image/v2/D4E0BAQFob5rET4oo0w/company-logo_100_100/...","location": "Chantilly, VA","workplace_type": "On-site","posted_date": "2026-07-08","posted_time_ago": "3 months ago","salary_or_benefits": "$120,000.00 - $150,000.00","is_actively_hiring": true,"is_easy_apply": false,"is_under_10_applicants": false,"is_new_listing": false,"seniority_level": "Not Applicable","employment_type": "Full-time","job_functions": ["Information Technology"],"industries": ["Defense and Space Manufacturing"],"applicants_count": "73 applicants","description": "Job Title: Python Developer\nJob Category: Information Technology\n...","description_html": "<div class=\"description__text description__text--rich\">...</div>","apply_url": "https://www.linkedin.com/jobs/view/python-developer-at-caci-international-inc-4431992044","job_id": "4431992044","job_urn": "urn:li:jobPosting:4431992044","job_url": "https://www.linkedin.com/jobs/view/4431992044","search_keyword": "Python Developer","search_location": "United States","scraped_at": "2026-10-21T06:01:00.000Z"}
Tips for Best Results
- Specific Locations Yield Higher Variety: Using specific country or metro names (e.g.
"United States","Germany","Austin, Texas") produces tighter, more relevant job clusters than broad queries. - Platform 1,000 Job Ceiling: LinkedIn's public guest search caps pagination at 1,000 jobs per individual search query. If you need more than 1,000 jobs in a domain, split your searches by multiple granular keywords or regional sub-locations.
- Under 10 Applicants for Fast Sourcing: Turn on
jobs_under_10_applicantsto find newly opened roles where candidate competition is low. - Detail Enrichment Speed: When
scrape_job_detailsis disabled, the scraper runs at high speed by extracting card metadata directly from search pages. Enable detail scraping when you specifically need full descriptions, seniority levels, and external direct apply links.
Troubleshooting: Getting 0 Results?
If your run finishes with 0 jobs, it is almost always due to strict filter combinations or specific employer hiring practices. Follow this checklist to expand your results:
-
Turn off "Under 10 Applicants": Established enterprises and global tech firms (like Apple, Google, Microsoft, Amazon) receive dozens of applications within minutes of posting. If you turn on
jobs_under_10_applicantswhile targeting top companies, almost all of their active openings will be filtered out. Turn this off to see all open jobs. -
Turn off "Easy Apply": Major corporations generally do not use LinkedIn 1-click Easy Apply. Instead, they require applicants to apply on their official external career portals (e.g.
jobs.apple.com). If you filter by a specific corporate employer and keep Easy Apply turned on, LinkedIn will return 0 matching jobs. Keep this filter turned off when targeting specific corporate employers. -
Try Location: "Worldwide": A specific company may not currently have openings for your exact keyword in a specific country (e.g. Apple might have 200 Python openings in the US, but 0 in Japan this month). Broadening the location to
"Worldwide"lets you discover open positions across all countries. -
Broaden the "Date Posted" Timeframe: If you have selected
past_24_hoursorpast_week, try settingjobs_date_postedto"all"or"past_month"to capture listings published earlier. -
Direct LinkedIn Verification: If you ever want to verify whether 0 results is expected, open LinkedIn.com/jobs in your browser and run the exact same query with the same filters (same keyword, company, location, and filters):
- If LinkedIn also returns 0 results: There are genuinely no public job postings matching that combination on LinkedIn right now (the actor is functioning with 100% accuracy).
- If LinkedIn displays active listings: Please let us know via the Issues tab and we will investigate and resolve it immediately!
Support & Feedback
If you encounter an issue, have feature suggestions, or need assistance configuring custom workflows, please open an issue in the Issues tab of this actor. We monitor feedback actively and release regular updates.