# Linkedin Job details Scraper (`ayk_6789/linkedin-job-details-scraper`) Actor

Extract structured job intelligence from any LinkedIn job URL using the Job URL. Fast, unblockable, scalable, and perfect for ATS, analytics, and AI matching.

- **URL**: https://apify.com/ayk\_6789/linkedin-job-details-scraper.md
- **Developed by:** [YKA](https://apify.com/ayk_6789) (community)
- **Categories:** Jobs, Agents
- **Stats:** 23 total users, 12 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🚀 LinkedIn Job Details Scraper

A high-speed **LinkedIn job data extraction engine** deployed as an **Apify Actor**.

Extract **AI-ready job intelligence** from any public LinkedIn job URL — instantly, at scale, with no setup required.

---

### 👨‍💻 About the Developer

Hi, I'm **YKA_6789** — a Data Scientist and Freelance Developer specializing in **Web Scraping**, **AI/ML Solutions**, and **Apify Actor Development**.

I build automation and data products that are production-ready, scalable, and designed to plug directly into real business workflows. This Actor is one of several tools I've built to help teams extract structured intelligence from the web — without the overhead of maintaining scrapers in-house.

📩 For custom integrations, bulk data needs, or freelance projects — reach me at **yash2492727@gmail.com**

---

### 🧠 Overview

The LinkedIn Jobs Scraper is designed for:

- Job Aggregation Platforms
- Applicant Tracking Systems (ATS)
- Recruitment & HR Analytics
- Market Intelligence Platforms
- Resume–Job Matching AI Systems

---

### ✨ Features

| Feature | Description |
|--------|-------------|
| 🔍 **Job Identity Extraction** | Job ID, title, company name, company LinkedIn URL, location |
| ⏱️ **Posted Date & Popularity** | Posted time text, ISO date, applicant count |
| 🧑‍💻 **Employment Metadata** | Employment type, workplace type, seniority (when available) |
| 🧠 **AI-Ready Job Parsing** | Clean job description, experience, education, skills, certifications |
| 💰 **Salary Detection** | Salary range (when publicly available) |
| 🏢 **Company Intelligence** | Logo URL, industry, employee range (best-effort) |
| 📝 **Application Intelligence** | Easy Apply vs External Apply detection, poster info |
| 📦 **Structured JSON Output** | Ready for analytics, ATS & AI pipelines |
| 🌍 **Apify Cloud Ready** | One-click cloud deployment |

---

### ✅ Data Coverage

#### 1. Core Job Identity

- `job_posting_id`
- `job_url`
- `job_title`
- `company_name`
- `company_linkedin_url`
- `job_location`
- `country_code`

#### 2. Job Timing & Popularity

- `job_posted_text`
- `job_posted_date`
- `job_num_applicants`
- `promoted_by_hirer` (boolean)
- `actively_hiring` (boolean)

#### 3. Employment Metadata (When Available)

- `job_employment_type`
- `workplace_type`
- `job_seniority_level`
- `job_function`
- `job_industries`

#### 4. Job Description Intelligence

- Full clean job description
- `experience_years_min`
- `experience_years_max`
- `education_level`
- `skills`
- `certifications`

#### 5. Compensation (When Available)

- `job_base_pay_range`

#### 6. Company Intelligence (Best-Effort)

- `company_logo_url`
- `num_of_employees`
- `company_website` (when listed)

#### 7. Application Intelligence

- `apply_method` (Easy Apply / External Apply)
- `apply_link`
- `easy_apply_enabled`
- `job_poster_name`
- `job_poster_title`
- `job_poster_linkedin_profile`

---

### ▶️ Input Format

```json
{
  "startUrls": [
    { "url": "https://www.linkedin.com/jobs/view/4319924354/" },
    { "url": "https://www.linkedin.com/jobs/view/4360563087/" }
  ]
}
````

You can pass a single URL or hundreds — the Actor handles batching and concurrency automatically.

***

### 📤 Sample Output

```json
{
  "scrape_status": "success",
  "job_posting_id": "4319924354",
  "job_url": "https://www.linkedin.com/jobs/view/4319924354/",
  "job_title": "Senior Data Engineer",
  "company_name": "Acme Corp",
  "company_linkedin_url": "https://www.linkedin.com/company/acme-corp/",
  "job_location": "San Francisco, CA",
  "country_code": "US",
  "job_employment_type": "Full-time",
  "workplace_type": "Hybrid",
  "job_seniority_level": "Mid-Senior level",
  "job_posted_date": "2025-03-14T10:00:00",
  "job_num_applicants": "47 applicants",
  "actively_hiring": true,
  "easy_apply_enabled": true,
  "apply_method": "Easy Apply",
  "experience_years_min": 3,
  "experience_years_max": 6,
  "education_level": ["Bachelor's", "Master's"],
  "skills": ["Python", "SQL", "Spark", "AWS", "Kafka"],
  "certifications": ["AWS"],
  "job_base_pay_range": "$130,000 - $160,000",
  "job_description": "We are looking for a Senior Data Engineer..."
}
```

***

### 🏗️ Built For

| Use Case | How This Actor Helps |
|----------|----------------------|
| **Job Aggregation Platforms** | Ingest structured job data at scale without building your own scraper |
| **ATS & Recruitment Tools** | Enrich job pipelines with live market data |
| **AI Resume Matching** | Feed clean job descriptions directly into matching models |
| **HR & Market Analytics** | Track hiring trends, salary ranges, and in-demand skills |
| **Talent Intelligence Platforms** | Monitor competitor hiring signals and role demand |

***

### ⚙️ Performance

- **Concurrent processing** — Up to 10 parallel requests per batch
- **Batch size** — 50 jobs per batch with automatic pacing
- **Retry logic** — 3 automatic retries per job with exponential backoff
- **Rate limit handling** — Detects and backs off gracefully
- **Typical speed** — 50–100 jobs per minute on Apify cloud

***

### 🔒 Reliability & Quality

- Every job returns a `scrape_status` field: `success` or `failed`
- Failed jobs include an `error_message` for easy debugging
- Partial data always returned — no silent nulls
- Multi-fallback selector chains handle LinkedIn UI variations

***

### ❓ FAQ

**Can I scrape hundreds of jobs at once?**
Yes. Pass all URLs in `startUrls`. The Actor handles batching and concurrency automatically.

**Are all fields always populated?**
No — some fields like salary, poster info, and employee count depend on what LinkedIn makes public for that specific posting. All fields are always present in the output; missing data is returned as `null`.

**What happens if a job is no longer available?**
The Actor returns a `failed` status with an appropriate error message. It will not crash.

**How fresh is the data?**
Data is scraped live at the time you run the Actor — always real-time.

***

### 🛠️ Support

If you run into an issue, have a feature request, or need a custom integration — contact me through the Apify platform or directly at **yash2492727@gmail.com**. I respond to all messages.

# Actor input Schema

## `startUrls` (type: `array`):

Add LinkedIn job URLs one by one. Click '+ Add' button to add more URLs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.linkedin.com/jobs/view/4319924354/"
    }
  ]
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.linkedin.com/jobs/view/4319924354/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ayk_6789/linkedin-job-details-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://www.linkedin.com/jobs/view/4319924354/" }] }

# Run the Actor and wait for it to finish
run = client.actor("ayk_6789/linkedin-job-details-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.linkedin.com/jobs/view/4319924354/"
    }
  ]
}' |
apify call ayk_6789/linkedin-job-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ayk_6789/linkedin-job-details-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Linkedin Job details Scraper",
        "description": "Extract structured job intelligence from any LinkedIn job URL using the Job URL. Fast, unblockable, scalable, and perfect for ATS, analytics, and AI matching.",
        "version": "0.0",
        "x-build-id": "OmMfrwwnZHrQf2HnC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ayk_6789~linkedin-job-details-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ayk_6789-linkedin-job-details-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ayk_6789~linkedin-job-details-scraper/runs": {
            "post": {
                "operationId": "runs-sync-ayk_6789-linkedin-job-details-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ayk_6789~linkedin-job-details-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-ayk_6789-linkedin-job-details-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "LinkedIn Job URLs",
                        "type": "array",
                        "description": "Add LinkedIn job URLs one by one. Click '+ Add' button to add more URLs.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
