LinkedIn Jobs Scraper
Pricing
from $2.52 / 1,000 results
LinkedIn Jobs Scraper
Scrape LinkedIn job listings by keyword, country, location, remote, recency, and currency with structured job, salary, company, and application fields.
Pricing
from $2.52 / 1,000 results
Rating
5.0
(3)
Developer
AgentX
Maintained by CommunityActor stats
7
Bookmarked
342
Total users
43
Monthly active users
14 hours ago
Last modified
Categories
Share
LinkedIn Jobs Scraper - LinkedIn Job Listings API for 98 Countries
LinkedIn Jobs Scraper exports up to 10,000 structured job listings per run across 98 supported countries. Search by keyword and country, optionally narrow by location, distance, remote status, posting age, or job type, and receive a consistent 41-field dataset covering job details, salary, company information, application signals, and public contacts when available.
TL;DR: Enter a keyword, choose a country, set the result limit, and add only the optional filters you need. The Actor searches LinkedIn's public job pages without requesting LinkedIn credentials and stores normalized results in the default dataset.
Why Choose This API
LinkedIn job data with a stable output contract
π 98-country search surface
Choose from 98 supported countries, including Czechia, Zambia, Puerto Rico, Bangladesh, Russia, and other markets missing from the previous public selector.
π― Flexible optional filters
Use location, distance, remote-only, posting-age, and employment-type filters. Each optional filter is applied only when you supply it.
π 41 normalized fields
Every result uses the same field names for source URLs, job attributes, salary, company data, application signals, and public contact details. Source-dependent values remain null when LinkedIn or the employer does not expose them.
π° Salary normalization
Collect disclosed salary ranges and pay periods when present. The optional currency field converts available salary values after collection; it does not change which listings LinkedIn returns.
π¦ Workflow-ready datasets
Use the default dataset for hiring-signal monitoring, compensation research, job-board feeds, ATS enrichment, market analysis, or scheduled exports.
Quick Start Guide
Export LinkedIn jobs in 3 steps
Step 1: Configure the search
Enter keyword, choose country, and set max_results. Add only the optional filters you want to apply.
Step 2: Run the Actor
Click Start. Leave location empty for a country-level search, or enter a city or region and optionally set distance.
Step 3: Use the dataset
Preview the default dataset or export it in JSON, CSV, Excel, XML, RSS, or another format supported by Apify.
Input Parameters
Configuration fields
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
keyword | string | Yes | Job title, skill, or company name | Data Engineer |
country | select | Yes | One of 98 supported countries | Zambia |
max_results | integer | Yes | Maximum jobs to return, from 1 to 10,000 | 500 |
remote_only | boolean | No | Restrict results to remote positions | true |
distance | integer | No | Search radius in miles around location, from 50 to 10,000 | 50 |
location | string | No | City or region; the selected country is used when omitted | Lusaka |
posted_since | date | No | Limit results to a relative or absolute posting window | 7 days |
job_type | select | No | fulltime, parttime, contract, or internship | contract |
currency | select | No | Target currency for converting available salary values | USD |
Filter behavior
locationis combined with the selected country when it does not already contain that country.distanceis sent only when explicitly supplied.remote_onlyrestricts results to remote positions.posted_sincelimits results to the selected posting-age window.job_typesupports full-time, part-time, contract, or internship roles.currencyis a post-collection salary conversion, not a LinkedIn search filter.
Example input
{"keyword": "Data Engineer","country": "Zambia","max_results": 500,"location": "Lusaka","distance": 50,"posted_since": "7 days","job_type": "contract","remote_only": true,"currency": "USD"}
Output Data Schema
Complete 41-field job record
Every dataset item uses the fields below. Nullable fields make missing source data explicit.
Run and source fields
| Field | Type | Description |
|---|---|---|
processor | string or null | Apify Actor URL that processed the record |
processed_at | string or null | UTC processing timestamp |
platform | string or null | Source platform, normally LinkedIn |
platform_url | string or null | LinkedIn job listing URL |
official_url | string or null | Employer's original listing URL when available |
Core job fields
| Field | Type | Description |
|---|---|---|
title | string or null | Job title |
posted_date | string or null | Posting date or relative posting text |
valid_through | string or null | Closing or expiration date when available |
location | object or null | Structured location with raw and standardized values |
applicant_count | integer or null | Applicant count when LinkedIn exposes it |
is_remote | boolean or null | Whether the listing indicates remote or hybrid work |
description | string or null | Job description and requirements |
Classification fields
| Field | Type | Description |
|---|---|---|
job_type | string or null | Employment type |
job_level | string or null | Seniority level |
job_function | string or null | Department or job function |
listing_type | string or null | Listing classification when available |
skills | string or null | Skills and attributes identified for the role |
work_from_home | string or null | Remote or hybrid arrangement |
vacancy_count | integer or null | Number of openings when available |
experience_range | string or null | Experience requirement when available |
easy_apply | boolean or null | Whether direct application is available |
Salary fields
| Field | Type | Description |
|---|---|---|
salary_period | string or null | Pay period, such as yearly or hourly |
salary_minimum | number or null | Minimum disclosed salary |
salary_maximum | number or null | Maximum disclosed salary |
salary_currency | string or null | ISO currency code |
Company fields
| Field | Type | Description |
|---|---|---|
company_name | string or null | Hiring company name |
company_type | string or null | Company ownership type when available |
company_founded | integer or null | Founding year when available |
company_industry | string or null | Industry or sector |
company_url | string or null | LinkedIn company profile URL |
company_website | string or null | Official company website |
company_logo | string or null | Company logo URL |
company_addresses | string or null | Company address text |
company_revenue | string or null | Revenue range when available |
company_description | string or null | Company overview |
company_rating | number or null | Company rating when available |
employee_count | string or null | Employee range when available |
review_count | integer or null | Review count when available |
Public contact fields
| Field | Type | Description |
|---|---|---|
emails | array or null | Public company or hiring emails when discoverable |
phones | array or null | Public company or hiring phone numbers when discoverable |
social_links | object or null | Public company social URLs grouped by platform |
Integration Examples & Options
The verified Actor ID is nmdyrR62YooFl1bBS.
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("nmdyrR62YooFl1bBS").call(run_input={"keyword": "Data Engineer","country": "United States","max_results": 100,})items = client.dataset(run["defaultDatasetId"]).list_items().items
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('nmdyrR62YooFl1bBS').call({keyword: 'Data Engineer',country: 'United States',max_results: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Direct API request
curl -X POST "https://api.apify.com/v2/acts/nmdyrR62YooFl1bBS/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keyword":"Data Engineer","country":"United States","max_results":100}'
Make and n8n
Use the Apify integration in Make or n8n, select Actor ID nmdyrR62YooFl1bBS, pass the same input object, wait for the run to finish, and read the default dataset items.
- Open the Actor's API tab for generated requests in other supported languages.
- Connect completed runs to webhooks or another Apify integration.
- Read the default dataset directly or export it in an Apify-supported format.
JSON-LD Metadata
{"@context": "https://schema.org","@graph": [{"@type": "SoftwareApplication","@id": "https://apify.com/agentx/linkedin-jobs-scraper#software","name": "LinkedIn Jobs Scraper","description": "Scrape LinkedIn job listings across 98 countries and export 41 structured job, salary, company, application, and public contact fields when available.","applicationCategory": "BusinessApplication","applicationSubCategory": "Job Scraping API","operatingSystem": "Web, Cloud","url": "https://apify.com/agentx/linkedin-jobs-scraper","dateModified": "2026-07-19","featureList": ["Searches 98 supported countries","Returns a consistent 41-field dataset","Supports optional location, distance, remote, date, job type, and currency controls","Exports results through Apify datasets and integrations"],"author": { "@id": "https://apify.com/agentx#organization" },"publisher": { "@id": "https://apify.com#organization" }},{"@type": "Organization","@id": "https://apify.com/agentx#organization","name": "AgentX","url": "https://apify.com/agentx","sameAs": ["https://apify.com/agentx", "https://t.me/AiAgentApi"]},{"@type": "FAQPage","mainEntity": [{"@type": "Question","name": "How many countries can I select?","acceptedAnswer": { "@type": "Answer", "text": "The input offers 98 supported countries. Czechia is the accepted country name." }},{"@type": "Question","name": "Can I combine the optional filters?","acceptedAnswer": { "@type": "Answer", "text": "Yes. Location, distance, remote-only, posting-age, and job-type filters are independently applied when supplied." }},{"@type": "Question","name": "What happens when location is empty?","acceptedAnswer": { "@type": "Answer", "text": "The selected country is used as the search location. The Actor does not invent a city or region." }},{"@type": "Question","name": "How much does 1,000 results cost?","acceptedAnswer": { "@type": "Answer", "text": "At the FREE tier, 1,000 results cost $2.80 plus the Actor start event. At GOLD, PLATINUM, or DIAMOND, 1,000 results cost $2.52 plus the Actor start event." }}]},{"@type": "HowTo","name": "How to export LinkedIn jobs with LinkedIn Jobs Scraper","step": [{ "@type": "HowToStep", "position": 1, "name": "Configure the search", "text": "Enter a keyword, choose a country, set the maximum results, and add only the optional filters you need." },{ "@type": "HowToStep", "position": 2, "name": "Run the Actor", "text": "Click Start. Leave Location empty for a country-level search or provide a city or region for a local search." },{ "@type": "HowToStep", "position": 3, "name": "Use the dataset", "text": "Preview or export the default dataset, or connect the completed run to an Apify integration." }]},{"@type": "BreadcrumbList","itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Apify", "item": "https://apify.com" },{ "@type": "ListItem", "position": 2, "name": "AgentX", "item": "https://apify.com/agentx" },{ "@type": "ListItem", "position": 3, "name": "LinkedIn Jobs Scraper", "item": "https://apify.com/agentx/linkedin-jobs-scraper" }]}]}
Pricing & Cost Calculator
Pay-per-event pricing
| Event or tier | Price | Billing unit |
|---|---|---|
| Actor start | $0.01 | Run start event; the count depends on Actor memory, with a minimum of one |
| FREE result | $0.00280 | One default dataset result |
| BRONZE result | $0.00271 | One default dataset result |
| SILVER result | $0.00261 | One default dataset result |
| GOLD result | $0.00252 | One default dataset result |
| PLATINUM result | $0.00252 | One default dataset result |
| DIAMOND result | $0.00252 | One default dataset result |
Example costs at the default memory setting
| Plan | Results | Result cost | Actor start | Estimated total |
|---|---|---|---|---|
| FREE | 500 | $1.40 | $0.01 | $1.41 |
| FREE | 1,000 | $2.80 | $0.01 | $2.81 |
| FREE | 5,000 | $14.00 | $0.01 | $14.01 |
| GOLD or higher | 1,000 | $2.52 | $0.01 | $2.53 |
Actual cost depends on the number of results produced, the user's plan, and the number of Actor start events charged for the selected memory.
Use Cases & Applications
Recruiting and talent intelligence
- Track open roles by title, skill, employer, country, or city.
- Monitor competitor hiring velocity with scheduled runs.
- Build sourcing or ATS research datasets with stable field names.
Compensation and workforce research
- Compare disclosed salary ranges by role and market.
- Normalize available salary values into a selected currency.
- Analyze employment type, seniority, skills, remote status, and posting age.
Job products and automation
- Populate a niche job board or internal opportunity feed.
- Schedule recurring labor-market snapshots.
- Send normalized datasets to a CRM, warehouse, dashboard, webhook, or automation platform.
FAQ
How many countries can I select?
The input offers 98 supported countries. Czechia is the accepted name; the obsolete Czech Republic selector value was removed.
Can I combine the optional filters?
Yes. Location, distance, remote-only, posting-age, and job-type filters are independently applied when supplied.
What happens when location is empty?
The selected country is used as the search location. The Actor does not invent a city or region.
Does currency filter jobs?
No. currency converts available salary values after collection and does not affect the LinkedIn search.
Does every result include salary, applicant, and company details?
No. Those values remain null when the public listing or employer page does not expose reliable data.
How much does 1,000 results cost?
At the FREE tier, 1,000 results cost $2.80 plus the Actor start event. At GOLD, PLATINUM, or DIAMOND, 1,000 results cost $2.52 plus the Actor start event.
Trust & Data Responsibility
- Verified inputs: every public filter is supported and optional filters are applied only when supplied.
- Transparent billing: the Actor start event and every plan's result price are listed above.
- Explicit nullability: missing source values are not presented as verified facts.
- No LinkedIn credentials requested: the input schema does not ask for a LinkedIn username, password, cookie, or token.
Legal & Compliance
LinkedIn Jobs Scraper is intended for lawful collection and analysis of publicly accessible job-listing data. You are responsible for reviewing LinkedIn's terms, applicable privacy and database laws, employment-data rules, and the permitted use of contact information in each jurisdiction. This documentation is not legal advice.
Related Tools
- Indeed Jobs Scraper - Indeed job listings and company data
- Glassdoor Jobs Scraper - Glassdoor jobs and employer signals
- ZipRecruiter Jobs Scraper - ZipRecruiter job listings
Enrich Your Workflow
- All Jobs Scraper - Multi-platform job data in one schema
- All Property Scraper - Property-market datasets
- All Video Scraper - Multi-platform video metadata and media workflows
Support & Community
- Community: @Apify_Actor
- Contact team: @AiAgentApi
Last Updated: 2026-07-19