# Fast LinkedIn Jobs Scraper (No Cookies, Pay-Per-Result) (`zinnen/fast-linkedin-jobs-scraper`) Actor

Scrape LinkedIn job postings without login or cookies. Filter by title, location, full-time/contract, past 24h, and under 10 applicants. Export to JSON, CSV, or Excel.

- **URL**: https://apify.com/zinnen/fast-linkedin-jobs-scraper.md
- **Developed by:** [Mohd Zoheb Salim](https://apify.com/zinnen) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 job results

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

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

## 🚀 Fast LinkedIn Jobs Scraper (No Cookies, Pay-Per-Result)

Scrape real-time, comprehensive LinkedIn job postings into clean, structured JSON, CSV, or Excel — **no LinkedIn account, no cookies, and no login required**.

Designed for recruiters, job seekers, researchers, and AI workflow builders who need high-velocity, reliable job market data without account ban risks.

***

### ✨ Key Features

- **100% Guest-Session Based:** No LinkedIn login, password, or session cookies required. Zero risk of account restriction or ban.
- **Pay-Per-Result Pricing:** Pay only for the jobs you actually collect (from **$0.70 to $1.00 per 1,000 results**). No expensive monthly recurring subscription.
- **Under 10 Applicants Filter:** Target early-bird job opportunities before hundreds of candidates flood the application queue.
- **Easy Apply Filter:** Separate 1-click LinkedIn applications from third-party external career portals (Workday, Greenhouse, Lever).
- **Dual Description Extraction:** Extract both clean plain-text `description` (optimized for LLMs and AI agent tokens) and formatted `descriptionHtml` (with bolding and bullet lists intact).
- **Agent-Ready Architecture:** Designed specifically to plug directly into **n8n**, **Claude Code**, **Make**, and **LangChain** without custom cleanup.

***

### 💼 Popular Use Cases

- **Autonomous Job Hunting:** Feed real-time postings directly into automated cover letter pipelines, match evaluators, and auto-notification bots.
- **Recruitment & Headhunting:** Track hiring surges, monitor competitor talent needs, and uncover newly opened roles across regions.
- **Niche Job Boards:** Automatically populate industry-specific job boards and career newsletters with fresh, deduplicated listings.
- **Labor Market Analytics:** Analyze tech stack adoption trends, salary benchmarks, and remote-work distributions across European and global markets.

***

### 📥 Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `titles` *(Required)* | Array of Strings | `["Analytics Engineer", "BI Developer"]` | Target job titles, skills, or tech stacks to search for. |
| `locations` | Array of Strings | `["European Union"]` | Target countries, cities, or economic regions (e.g., `Netherlands`, `Germany`, `London`). |
| `rows` | Integer | `10` | Maximum number of job postings to collect per keyword/location pair (1 to 500). |
| `publishedAt` | String | `"r604800"` | Recency filter: `""` (Any Time), `"r86400"` (Past 24h), `"r604800"` (Past 7d), `"r2592000"` (Past Month). |
| `contractTypes` | Array of Strings | `["F"]` | Employment type: `F` (Full-Time), `C` (Contract/Freelance), `P` (Part-Time), `I` (Internship). |
| `under10Applicants` | Boolean | `false` | When `true`, filters strictly for roles with fewer than 10 applicants. |
| `easyApply` | Boolean | `false` | When `true`, returns only jobs supporting 1-click LinkedIn Easy Apply. |
| `proxyConfiguration` | Object | `{ "useApifyProxy": true }` | Automatically routes through Apify proxy pools to prevent rate-limiting at scale. |

***

### 📤 Sample Output Data

Every extracted job record provides comprehensive, structured metadata ready for spreadsheets, databases, or AI processing:

```json
{
  "id": "4482521949",
  "title": "Senior Analytics Engineer",
  "companyName": "Tech Scaleup",
  "location": "Amsterdam, North Holland, Netherlands",
  "jobUrl": "https://www.linkedin.com/jobs/view/4482521949",
  "postedTime": "18 hours ago",
  "applicantsCount": "Be among the first 25 applicants",
  "salary": "€75,000 - €95,000 / yr",
  "seniorityLevel": "Mid-Senior level",
  "employmentType": "Full-time",
  "jobFunction": "Engineering, Information Technology",
  "applyType": "EASY_APPLY",
  "description": "We are seeking a Senior Analytics Engineer to lead our modern data stack. You will architect scalable ELT pipelines and partner with stakeholders...",
  "descriptionHtml": "<div class=\"show-more-less-html__markup\"><p>We are seeking a <strong>Senior Analytics Engineer</strong>...</p></div>",
  "scrapingInfo": {
    "queryTitle": "Analytics Engineer",
    "queryLocation": "Netherlands"
  }
}
```

***

### 🤖 AI Agent & Automation Integration

This Actor is optimized for agentic workflows. Because it outputs pre-cleaned text descriptions alongside structured metadata, language models (Gemini, Claude, GPT-4o) can parse, evaluate, and act on listings without HTML preprocessing or token bloat.

#### 1. LangChain / Python Agent Tool

Call this scraper directly as a tool inside your LangChain or autonomous Python agents:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

## Run the scraper actor programmatically
run = client.actor("zinnen/fast-linkedin-jobs-scraper").call(
    run_input={
        "titles": ["Analytics Engineer", "BI Lead"],
        "locations": ["Netherlands", "Germany"],
        "publishedAt": "r86400",
        "rows": 5,
        "contractTypes": ["F"],
    }
)

## Fetch dataset items directly into your LLM pipeline
jobs = client.dataset(run["defaultDatasetId"]).list_items().items
for job in jobs:
    print(f"Role: {job['title']} at {job['companyName']} | Link: {job['jobUrl']}")
```

#### 2. n8n Autonomous Pipelines

Use this Actor as the trigger for automated career pipelines:

- **Scrape:** Pull the latest postings daily via the native Apify n8n node.
- **Evaluate:** Feed the clean `description` into an AI Agent node (Gemini/Ollama) to compute match scores and filter sponsorship viability.
- **Act:** Auto-generate tailored PDF cover letters and log results to Google Sheets, Notion, or Slack alerts.

#### 3. Claude Code & Model Context Protocol (MCP)

Add this scraper to your local Claude Code or MCP agent environment by referencing your Apify API token:

```bash
claude mcp add apify -- apify-mcp-server
```

Ask Claude Code:

> *"Use the fast-linkedin-jobs-scraper tool to find the 5 newest Analytics Engineer jobs in Europe posted in the past 24 hours, and analyze their required technical stacks."*

***

### ❓ Frequently Asked Questions

##### Do I need to provide a LinkedIn account or login cookies?

No. This scraper operates 100% on public guest endpoints. You never need to supply login credentials, session cookies, or personal LinkedIn credentials.

##### How do proxies work?

By default, the Actor automatically engages Apify's residential and datacenter proxy rotation pools. This bypasses IP rate-limits and bot-detection challenges even when scraping high volumes.

##### What does Pay-Per-Result mean?

Instead of paying a rigid $30–$50 monthly subscription, you only pay for the exact volume of job items your Actor successfully writes to the dataset. Small test runs cost fractions of a cent.

# Actor input Schema

## `titles` (type: `array`):

Enter job titles, skills, or tech stacks to search for (e.g., 'Analytics Engineer', 'Databricks', 'BI Developer').

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

Target countries, cities, or economic regions (e.g., 'Netherlands', 'Germany', 'European Union', 'London').

## `rows` (type: `integer`):

Maximum number of job postings to collect for each title/location pair.

## `publishedAt` (type: `string`):

Filter jobs by posting recency.

## `contractTypes` (type: `array`):

Filter by employment commitment. 'F' = Full-Time, 'C' = Contract / Freelance, 'P' = Part-Time, 'I' = Internship.

## `under10Applicants` (type: `boolean`):

Only return early-bird jobs with fewer than 10 applicants to maximize response rates.

## `easyApply` (type: `boolean`):

Filter for jobs that support 1-click LinkedIn Easy Apply.

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

Apify proxy pool configuration. Defaults to automatic cloud proxy rotation.

## Actor input object example

```json
{
  "titles": [
    "Analytics Engineer",
    "BI Developer"
  ],
  "locations": [
    "European Union"
  ],
  "rows": 10,
  "publishedAt": "r604800",
  "contractTypes": [
    "F"
  ],
  "under10Applicants": false,
  "easyApply": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Direct link to the scraped LinkedIn jobs dataset

# 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 = {
    "titles": [
        "Analytics Engineer",
        "BI Developer"
    ],
    "locations": [
        "European Union"
    ],
    "contractTypes": [
        "F"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zinnen/fast-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 = {
    "titles": [
        "Analytics Engineer",
        "BI Developer",
    ],
    "locations": ["European Union"],
    "contractTypes": ["F"],
}

# Run the Actor and wait for it to finish
run = client.actor("zinnen/fast-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 '{
  "titles": [
    "Analytics Engineer",
    "BI Developer"
  ],
  "locations": [
    "European Union"
  ],
  "contractTypes": [
    "F"
  ]
}' |
apify call zinnen/fast-linkedin-jobs-scraper --silent --output-dataset

```

## MCP server setup

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