LinkedIn Jobs Scraper avatar

LinkedIn Jobs Scraper

Pricing

from $0.50 / 1,000 job scrapeds

Go to Apify Store
LinkedIn Jobs Scraper

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

Crawlix

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Categories

Security

Limited permissions

Share

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_details enabled): 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:

  1. 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.
  2. Competitive Talent & Hiring Intelligence: Track hiring patterns, team expansions, and in-demand tech stacks across rival companies in real time.
  3. 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.
  4. Labor Market & Compensation Research: Analyze salary distributions, geographic hiring trends, remote work availability, and seniority distributions across industries.
  5. 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.
  6. 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:

ParameterTypeDefaultDescription
keywordsArray of Strings["Python Developer"]Job titles, keywords, skills, or role queries to search for (e.g. ["Data Engineer", "DevOps Engineer"]).
locationString"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_idString""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.
companiesArray 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 ($)Integer50Maximum 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_postedSelect"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_applicantsBooleanfalseWhen 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_applyBooleanfalseWhen 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_detailsBooleantrueEnabled 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.
proxyCountrySelect"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_configurationObject{ "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:

  1. Geo ID Takes Priority: When both geo_id and location are entered, the actor prioritizes the exact numeric Geo ID.
  2. 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.
  3. 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. 103644278 for United States, 102257491 for Greater London, 106779217 for Bangladesh, 101282230 for 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 NamePricingWhen Charged
job$0.002 per jobCharged 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

{
"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 NameTypeDescription
titleStringOfficial job title of the opening.
company_nameStringName of the hiring company.
locationStringJob workplace location (city, state, region, or country).
descriptionStringFull clean plain-text job description with requirements and responsibilities.
description_htmlStringFormatted HTML job description markup.
seniority_levelStringCareer experience level (e.g. "Mid-Senior level", "Entry level", "Not Applicable").
employment_typeStringWork classification (e.g. "Full-time", "Contract", "Part-time").
posted_dateStringPublication date timestamp in ISO 8601 format (e.g. "2026-10-20").
posted_time_agoStringRelative publication time (e.g. "2 days ago", "1 week ago").
job_idStringUnique numeric identifier of the job posting on LinkedIn.
job_urnStringCanonical LinkedIn URN (e.g. "urn:li:jobPosting:4431992044").
job_urlStringPermanent LinkedIn public job viewing URL.
apply_urlStringApplication destination URL or LinkedIn job link.
search_keywordStringSearch keyword query that discovered this posting.
search_locationStringSearch location filter applied during the run.
scraped_atStringUTC 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 NameTypeAvailability & Description
industriesArray of StringsIndustry classification of the employer (present when specified by the company).
job_functionsArray of StringsFunctional departments or role categories (present when tagged on LinkedIn).
salary_or_benefitsStringCompensation range or rate (present only when the employer chooses to disclose salary info, e.g. "$120,000 - $150,000 / yr").
company_logo_urlStringDirect image link to the company's logo (present when the company has uploaded a logo).
company_idStringNumeric LinkedIn organization ID (present when resolvable from company profile links).
company_urlStringCanonical LinkedIn company profile page link (present when the company maintains a public profile).
applicants_countStringTotal applicant count string (present when displayed on the listing, e.g. "73 applicants", "Over 200 applicants").
workplace_typeStringWorkplace arrangement ("Remote", "Hybrid", or "On-site" when explicitly indicated).
is_actively_hiringBooleanTrue when flagged by the employer with the Actively Hiring badge.
is_easy_applyBooleanTrue when the posting supports LinkedIn's Easy Apply application feature.
is_under_10_applicantsBooleanTrue when the role has fewer than 10 applicants or is flagged with "Be an early applicant".
is_new_listingBooleanTrue 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

  1. 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.
  2. 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.
  3. Under 10 Applicants for Fast Sourcing: Turn on jobs_under_10_applicants to find newly opened roles where candidate competition is low.
  4. Detail Enrichment Speed: When scrape_job_details is 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:

  1. 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_applicants while targeting top companies, almost all of their active openings will be filtered out. Turn this off to see all open jobs.

  2. 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.

  3. 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.

  4. Broaden the "Date Posted" Timeframe: If you have selected past_24_hours or past_week, try setting jobs_date_posted to "all" or "past_month" to capture listings published earlier.

  5. 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.