# LinkedIn Jobs Scraper — No Login, Descriptions & Apply Links (`yasaslive/linkedin-jobs-scraper`) Actor

Scrape LinkedIn job postings by keyword, location or search URL — no login or cookies. Get title, company, salary, full description, seniority, employment type, applicants and apply link. Filter by date, job type, level and remote.

- **URL**: https://apify.com/yasaslive/linkedin-jobs-scraper.md
- **Developed by:** [Eonix Pvt Ltd](https://apify.com/yasaslive) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 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 — No Login, Full Descriptions & Apply Links

Scrape **LinkedIn job postings** by keyword, location or any LinkedIn job-search URL — **no login, no cookies, no browser**. Each result includes the full job description, seniority, employment type, industries, applicant count and the external apply link.

### What you get

`jobId, title, companyName, companyUrl, companyLogo, location, salary, benefits, postedAt, postedTimeAgo, jobUrl, descriptionText, descriptionHtml, seniorityLevel, employmentType, jobFunction, industries, applicantsCount, applicantsText, salaryDetail, applyUrl, easyApply, recruiterName, recruiterTitle, searchQuery, scrapedAt`

### Filters

- Keywords (one search per keyword) + location
- Date posted: past 24h / week / month
- Job type, experience level, workplace type (remote / hybrid / on-site)
- Or paste any `linkedin.com/jobs/search` URL — its filters (geoId, company, industry…) are kept

### Pricing

**$0.80 per 1,000 jobs** ($0.0008 per job, full details included). 500 jobs ≈ $0.40.

### Example input

```json
{
  "keywords": ["data scientist", "machine learning engineer"],
  "location": "United States",
  "datePosted": "week",
  "workplaceTypes": ["remote"],
  "maxJobs": 200
}
```

### Use cases

- Job boards and aggregators
- Hiring-signal lead generation (who is hiring for what)
- Salary and skills market research
- Recruiting pipelines and alerts (schedule it daily with "Past 24 hours")

### FAQ

**Do I need a LinkedIn account?** No — only public job listings are collected.
**How many jobs per search?** LinkedIn shows up to ~1,000 results per search. Split big searches by location or keyword to get more.
**Is it legal?** It only collects publicly available job ads. Do not collect personal data without a legitimate reason and follow your local laws.

### Feedback & support

Found a bug or need a field added? Open an issue in the **Issues** tab and we usually reply within 24 hours. If this Actor saved you time, a quick **review on Apify Store** helps other people find it — thank you!

# Actor input Schema

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

Job titles or skills to search for. Each keyword runs as its own search.

## `location` (type: `string`):

City, state, country or 'Worldwide'. Applied to every keyword.

## `searchUrls` (type: `array`):

Paste search URLs from linkedin.com/jobs/search — filters in the URL (geoId, f\_TPR, f\_WT, f\_C, ...) are kept.

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

Only jobs posted within this period.

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

Leave empty for all.

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

Leave empty for all.

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

Leave empty for all.

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

Order of results from LinkedIn.

## `maxJobs` (type: `integer`):

Total jobs to save across all searches (LinkedIn shows up to ~1,000 per search).

## `scrapeJobDetails` (type: `boolean`):

Fetch full description, seniority, employment type, industries, applicants and apply URL for each job.

## `proxyConfiguration` (type: `object`):

Apify Proxy is recommended.

## Actor input object example

```json
{
  "keywords": [
    "data scientist"
  ],
  "location": "United States",
  "datePosted": "any",
  "sortBy": "relevance",
  "maxJobs": 50,
  "scrapeJobDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

LinkedIn job postings with company, location, salary and full details.

## `allFields` (type: `string`):

Every field for every item.

## `stats` (type: `string`):

Counters for this run.

# 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 scientist"
    ],
    "location": "United States",
    "maxJobs": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yasaslive/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 scientist"],
    "location": "United States",
    "maxJobs": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("yasaslive/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 scientist"
  ],
  "location": "United States",
  "maxJobs": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yasaslive/linkedin-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yasaslive/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/eXmfUJ34SdYA2FkqM/builds/h5zh0QeFtZPMbltXD/openapi.json
