# LinkedIn Jobs Scraper 💰$0.30/1K – No Login, Full Details (`rt-solutions/linkedin-jobs-scraper`) Actor

Scrape LinkedIn job postings without login or cookies: full description, salary, applicants count, seniority, employment type, industries, job poster, exact posted date. Many keywords × locations in one run, all LinkedIn filters, no duplicates.

- **URL**: https://apify.com/rt-solutions/linkedin-jobs-scraper.md
- **Developed by:** [RT SOLUTIONS](https://apify.com/rt-solutions) (community)
- **Categories:** Jobs, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.22 / 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.
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

### LinkedIn Jobs Scraper – no login, full details, $0.30 per 1,000 jobs

Scrape **LinkedIn job postings** without a LinkedIn account, cookies or browser. Every job comes with its **full description, salary (when shown), number of applicants, seniority level, employment type, industries, apply type (Easy Apply or company site), job poster and exact posted date** — at the same low price.

Run **many keywords × many locations in one run**, use every LinkedIn filter, and get **no duplicates** across searches.

#### What you can do

- 🔎 **Search by keyword and location**: `data analyst` in `United States`, `nurse` in `London`, `python developer` in `Remote`…
- 🔗 **Paste LinkedIn search URLs**: set your filters on linkedin.com/jobs, copy the URL, paste it here.
- 📄 **Scrape specific jobs**: paste `linkedin.com/jobs/view/…` links or job IDs.
- 🕐 **Monitor new jobs**: `Posted within the last N hours` (e.g. 1, 6, 24) + `Sort by: Most recent` — schedule the actor every hour or day.
- 🎯 **All LinkedIn filters**: date posted, job type, experience level, on-site / remote / hybrid, Easy Apply, under 10 applicants, minimum salary (US), company IDs, distance.
- 🧹 **Clean results**: keep only titles containing some words, exclude titles (e.g. `senior`) or companies (e.g. staffing agencies).

#### Output example

```json
{
  "jobId": "4460087902",
  "title": "Senior Software Engineer, Payments",
  "companyName": "Whatnot",
  "companyUrl": "https://www.linkedin.com/company/whatnot",
  "location": "San Francisco, CA",
  "postedDate": "2026-10-28",
  "postedAgo": "3 days ago",
  "applicants": 200,
  "applicantsText": "Over 200 applicants",
  "salary": "$155,000.00/yr - $160,000.00/yr",
  "seniorityLevel": "Mid-Senior level",
  "employmentType": "Full-time",
  "industries": "Technology, Information and Internet",
  "applyType": "external",
  "isClosed": false,
  "jobPoster": { "name": "Jane Doe", "title": null, "profileUrl": "https://www.linkedin.com/in/janedoe" },
  "description": "About the role\n• Build …",
  "descriptionHtml": "<strong>About the role</strong> …",
  "companyLogo": "https://media.licdn.com/…",
  "jobUrl": "https://www.linkedin.com/jobs/view/senior-software-engineer-payments-at-whatnot-4460087902",
  "searchKeyword": "software engineer",
  "searchLocation": "San Francisco"
}
```

`applyType` is `easy-apply` (apply on LinkedIn) or `external` (apply on the company website). `jobPoster` is filled when LinkedIn shows the hiring person. Export to JSON, CSV, Excel, or connect to Google Sheets, Make, n8n, Zapier and AI agents.

#### Pricing

**$0.30 per 1,000 jobs** with full details (pay per event, cheaper on higher Apify plans). Nothing else to pay for — no start fee per search, no extra fee for descriptions.

#### Tips

- Location accepts what you would type on LinkedIn: a country, region, city, or `Remote`. Empty = Worldwide.
- `Minimum salary` is a LinkedIn filter that only works for US searches.
- Choose exactly one `On-site / remote` value to also get a `workplaceType` field on every job.
- Turn off `Full job details` only if you need a faster, lighter list (title, company, location, date).

#### Use cases

- **Recruiters and staffing agencies**: collect new openings by role and city every day, with seniority and employment type.
- **Sales prospecting**: find companies that are hiring for a given role, and the job poster when LinkedIn shows one.
- **Job boards and newsletters**: publish fresh jobs with full descriptions and the apply type.
- **Salary and market research**: compare salaries (when shown), seniority levels and remote / hybrid share by location.
- **Job seekers**: get alerts for jobs posted in the last hours with few applicants.

#### Use with AI agents (MCP)

You can call this actor from Claude, ChatGPT, Cursor or any other MCP client through the Apify MCP server (https://mcp.apify.com), using the actor ID `rt-solutions/linkedin-jobs-scraper`. Example request: *"Find data analyst jobs in London posted in the last 24 hours on LinkedIn and list the companies and salaries."* It also works through the Apify API, Make, n8n and Zapier.

#### FAQ

**How do I scrape LinkedIn jobs without logging in?** Enter keywords and locations, or paste a LinkedIn jobs search URL, and run. The actor reads public job pages only — no account, cookies or browser.

**How much does it cost to scrape 10,000 LinkedIn jobs?** $3, at $0.30 per 1,000 jobs with full details. No start fee and no extra fee for descriptions.

**How many jobs can I get?** LinkedIn shows up to about **1,000 jobs per search**. To collect more, add more keywords or more precise locations (cities instead of a country) — duplicates are removed automatically.

**Can I monitor new jobs?** Yes. Set `Posted within the last N hours` (e.g. 1, 6, 24) with `Sort by: Most recent` and schedule the actor every hour or day.

**Why are some fields empty?** `salary` is filled only when the job shows one, `jobPoster` only when LinkedIn shows the hiring person, and `workplaceType` only when you choose exactly one on-site / remote value.

**Can I export to CSV, Excel or Google Sheets?** Yes. Export to JSON, CSV or Excel, or connect the dataset to Google Sheets.

**Is it legal to scrape LinkedIn jobs?** This actor only reads **public job pages** that LinkedIn shows to anyone without logging in. It does not log in, does not use cookies and does not collect private data. Job poster names are the ones LinkedIn publicly shows on the job page. Use the data responsibly and in line with the laws that apply to you (e.g. GDPR).

**Code example:** [LinkedIn jobs scraper in Python](https://github.com/rtsolutionsmr/linkedin-jobs-scraper-python) — ready-to-run Python script on GitHub.

#### Related scrapers

- [Career Site Jobs Scraper](https://apify.com/rt-solutions/career-site-jobs-scraper)
- [SEEK Jobs Scraper](https://apify.com/rt-solutions/seek-jobs-scraper)
- [India Tech Jobs Scraper](https://apify.com/rt-solutions/india-tech-jobs-scraper)

#### Support

Found a problem or need a field? Open an issue on the actor page — we answer fast.

# Actor input Schema

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

One search per keyword (combined with every location). Example: data analyst, python developer, nurse.

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

Country, region or city, as you would type it on LinkedIn (e.g. United States, London, Berlin, Germany, Remote). Empty = Worldwide.

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

Paste any linkedin.com/jobs/search/ URL with your filters already set. Job URLs (linkedin.com/jobs/view/…) are also accepted.

## `jobUrls` (type: `array`):

Scrape specific job postings: linkedin.com/jobs/view/… links or job IDs.

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

Only jobs posted within this period.

## `postedWithinHours` (type: `integer`):

Custom window, e.g. 1 = last hour, 6 = last 6 hours. Overrides Date posted. Great for hourly monitoring.

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

Leave empty for all job types.

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

Leave empty for all levels.

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

Leave empty for all. Choose exactly one to also get a workplaceType field on each job.

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

Only jobs you can apply to directly on LinkedIn.

## `under10ApplicantsOnly` (type: `boolean`):

Fresh jobs with little competition.

## `minSalary` (type: `string`):

LinkedIn salary filter — works for US searches only.

## `companyIds` (type: `array`):

Numeric LinkedIn company IDs (the f_C value in a LinkedIn search URL).

## `distanceMiles` (type: `string`):

Search radius around a city.

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

Most recent is best for monitoring new jobs.

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

Full description, applicants count, salary, seniority, employment type, industries, apply type and job poster. Same price — turn off only for a faster light list.

## `titleMustInclude` (type: `array`):

Keep only jobs whose title contains at least one of these words.

## `titleMustExclude` (type: `array`):

e.g. senior, lead, intern.

## `companyExclude` (type: `array`):

Company names to skip, e.g. staffing agencies.

## `maxJobsPerSearch` (type: `integer`):

LinkedIn shows up to ~1,000 jobs per search. Add more keywords or locations to collect more.

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

Stop after this many jobs across all searches.

## `maxConcurrency` (type: `integer`):

Number of job pages loaded at the same time.

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

Apify Proxy is recommended (LinkedIn limits requests per IP).

## Actor input object example

```json
{
  "keywords": [
    "data analyst"
  ],
  "locations": [
    "United States"
  ],
  "datePosted": "any",
  "easyApplyOnly": false,
  "under10ApplicantsOnly": false,
  "minSalary": "",
  "distanceMiles": "",
  "sortBy": "relevance",
  "includeDetails": true,
  "maxJobsPerSearch": 100,
  "maxJobs": 0,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

# 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 analyst"
    ],
    "locations": [
        "United States"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rt-solutions/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 analyst"],
    "locations": ["United States"],
    "proxyConfiguration": { "useApifyProxy": True },
}

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

```

## MCP server setup

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