# LinkedIn Jobs Scraper: Full Details, Applicants & Salary (`tindacloud/linkedin-jobs-scraper`) Actor

Scrape LinkedIn job listings without login: title, company, location, salary, full description, number of applicants, seniority, employment type, job function and industry. Filter by date, remote, job type and experience.

- **URL**: https://apify.com/tindacloud/linkedin-jobs-scraper.md
- **Developed by:** [Seungki Min](https://apify.com/tindacloud) (community)
- **Categories:** Jobs, Lead generation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## LinkedIn Jobs Scraper: Full Details, Applicants & Salary

Scrape **LinkedIn job listings without logging in**. Search by keyword and location with LinkedIn's own filters, or paste LinkedIn search URLs. Every job includes the **full description, number of applicants, seniority, employment type, job function, industry and salary** when LinkedIn shows it.

### Why this scraper

- **Full job details at no extra cost.** Many LinkedIn job scrapers return only the search card; this one opens every job so you get description, applicants, seniority, employment type, job function and industries in the same row.
- **No account, no cookies.** Uses LinkedIn's public job pages only, so there is no risk to your LinkedIn account.
- **All the main filters:**
  - date posted (past hour / 24h / week / month)
  - on-site / remote / hybrid
  - job type and experience level
  - Easy Apply only, sort by most recent
- **Bulk searches.** Several keywords × several locations in one run, or `startUrls` copied from linkedin.com/jobs/search with any filters.
- **Monitoring mode.** *Only new jobs since last run* skips jobs you already received. Schedule it hourly or daily for job alerts and lead feeds.
- **Fast and cheap.** 900 jobs from 6 searches in about 90 seconds in testing.

### Input example

```json
{
  "keywords": ["data engineer", "analytics engineer"],
  "locations": ["United States", "London, England"],
  "datePosted": "past24h",
  "workplaceTypes": ["remote", "hybrid"],
  "experienceLevels": ["midSenior"],
  "sortBy": "recent",
  "includeDetails": true,
  "maxResultsPerSearch": 200,
  "maxResults": 1000
}
```

### Output example

```json
{
  "id": "4466333367",
  "title": "Senior Product Designer (Fully Remote)",
  "company": "PadSplit",
  "companyUrl": "https://www.linkedin.com/company/padsplit",
  "location": "Atlanta, GA",
  "postedDate": "2026-09-11",
  "postedAgo": "5 days ago",
  "salary": null,
  "salaryRange": "$120,000.00/yr - $130,000.00/yr",
  "benefits": null,
  "applicantsText": "85 applicants",
  "applicants": 85,
  "seniorityLevel": "Not Applicable",
  "employmentType": "Full-time",
  "jobFunction": "Design, Art/Creative, and Information Technology",
  "industries": "Real Estate",
  "description": "The Role We Need:\n\n \n\nPadSplit is hiring a Senior Product Designer to shape and improve experiences across our two-sided housing marketplace. Working on a growth-focused product te…",
  "url": "https://www.linkedin.com/jobs/view/4466333367/",
  "descriptionHtml": "<p>…</p>"
}
```

### Use cases

- **Recruiters & agencies:** fresh roles and hiring companies every morning.
- **Sales & lead generation:** hiring signals by company, industry and seniority.
- **Job seekers & career tools:** alerts filtered by remote, level and recency.
- **Labour-market research:** demand, applicant competition and salary ranges by role and location.
- **Job boards & AI agents:** a structured LinkedIn jobs feed.

### Pricing

Pay per job returned, with full details included, plus a negligible start fee per run. Set **Max results** or a spending limit to cap cost.

### Notes

- LinkedIn shows at most 1,000 jobs per search; split very broad searches by location or filters.
- Salary appears only when the employer publishes it. `applicants` is LinkedIn's rounded figure (e.g. "Over 200 applicants" → 200).
- Only public job postings are collected; no personal profiles.
- If something breaks after a LinkedIn change, open an issue and it will be fixed quickly.

### Related Actors

Other scrapers from the same maker, built the same way — no browser where it isn't needed, one flat price per result:

- [ATS Job Search](https://apify.com/tindacloud/ats-job-search)
- [SEEK Jobs Scraper](https://apify.com/tindacloud/seek-jobs-scraper)
- [Website Contact & Email Scraper](https://apify.com/tindacloud/website-contact-scraper)

# Actor input Schema

## `keywords` (type: `array`):

Job titles, skills or companies, e.g. “data engineer”, “product manager”. Each keyword is searched in each location.

## `locations` (type: `array`):

Countries, states or cities as you'd type them on LinkedIn, e.g. “United States”, “London, England”, “Germany”. Empty = Worldwide.

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

Paste linkedin.com/jobs/search URLs; all filters in the URL (f\_TPR, f\_WT, f\_E, f\_C…) are kept.

## `datePosted` (type: `string`):

Only jobs posted within this period.

## `workplaceTypes` (type: `array`):

Empty = any.

## `jobTypes` (type: `array`):

Empty = any.

## `experienceLevels` (type: `array`):

Empty = any.

## `easyApplyOnly` (type: `boolean`):

Only jobs with LinkedIn Easy Apply.

## `sortBy` (type: `string`):

Result order.

## `includeDetails` (type: `boolean`):

Adds description (text + HTML), number of applicants, seniority, employment type, job function, industries and salary range when shown. Same price.

## `onlyNewJobs` (type: `boolean`):

Remembers jobs already returned for each search and skips them next time.

## `maxResultsPerSearch` (type: `integer`):

LinkedIn shows up to 1,000 jobs per search. Split big searches by location or filters.

## `maxResults` (type: `integer`):

Stop after this many jobs. You are charged per job.

## `proxy` (type: `object`):

Apify datacenter proxy works for LinkedIn's public job pages.

## Actor input object example

```json
{
  "keywords": [
    "data engineer"
  ],
  "locations": [
    "United States"
  ],
  "datePosted": "anyTime",
  "easyApplyOnly": false,
  "sortBy": "recent",
  "includeDetails": true,
  "onlyNewJobs": false,
  "maxResultsPerSearch": 100,
  "maxResults": 500,
  "proxy": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

All jobs in a table view.

# 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 = {
    "keywords": [
        "data engineer"
    ],
    "locations": [
        "United States"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tindacloud/linkedin-jobs-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 = {
    "keywords": ["data engineer"],
    "locations": ["United States"],
}

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

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "data engineer"
  ],
  "locations": [
    "United States"
  ]
}' |
apify call tindacloud/linkedin-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tindacloud/linkedin-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/beRPlp3L49xXfXocd/builds/92EwBD30qRPe9WFRh/openapi.json
