# LinkedIn Jobs Scraper | Job Postings API | $0.40/1K (`monkey.d.scraping/linkedin-jobs-scraper`) Actor

Scrape LinkedIn job postings by keyword and location: description, applicants, seniority, salary range, company and poster. No login. From $0.40 per 1,000 jobs.

- **URL**: https://apify.com/monkey.d.scraping/linkedin-jobs-scraper.md
- **Developed by:** [Monkey D. Scraping](https://apify.com/monkey.d.scraping) (community)
- **Categories:** Jobs, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.13 / 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 | Job Postings API | $0.40/1K

**LinkedIn Jobs Scraper** exports public LinkedIn job postings by job title, keyword and location: title, company, location, exact posting date and salary when listed, plus the **full description, number of applicants, seniority level, employment type, industries, salary range and the person who posted the job**. **$0.40 per 1,000 jobs with full details** on the free plan, down to $0.25 on Business plans, platform usage included. No LinkedIn account, login or cookies.

Also known as: LinkedIn job scraper, LinkedIn job postings API, LinkedIn jobs API, LinkedIn job search scraper.

Built for recruiters, job boards, HR tech, sales teams and analysts who track who is hiring, for which roles, where and how fast.

**中文用户 / 中文用戶：** [简体中文说明](#chinese-simplified) · [繁體中文說明](#chinese-traditional)（领英职位采集、LinkedIn招聘数据爬虫、职位API）

#### Why choose this LinkedIn jobs scraper?

- **Full details at a low, all-inclusive price.** $0.40 per 1,000 jobs including description, applicants, seniority and salary, platform usage included, no start fee. Popular LinkedIn job scrapers charge $0.40–$2 per 1,000 jobs on the free plan (checked on 7 November 2026).
- **Only new jobs since the last run.** Turn on **Only new jobs** for scheduled runs: jobs already delivered are skipped and not charged. Ideal for job alerts and hiring monitors.
- **More than 1,000 jobs per search.** LinkedIn shows at most 1,000 jobs per search. When you ask for more, the scraper splits the search automatically with the filters LinkedIn really applies (posting date windows, Easy Apply) and merges the results without duplicates. Add several locations to go further.
- **Honest filters.** LinkedIn's public search applies only keywords, location, date posted, Easy Apply and company. Experience level, job type and maximum applicants are applied by this scraper on each job's details, and jobs that do not match are **not charged**, so the filter really works.
- **Who is hiring, for lead generation.** The *Hiring companies and posters* view lists companies, roles and the people who posted the jobs; the run summary ranks the top hiring companies.
- **Fast.** Plain HTTP on LinkedIn's public job pages, no browser. 200 jobs with full details in about 2 minutes.
- **You never pay for gaps.** Duplicates are free, details are charged only when obtained, unreadable job IDs are not charged.

#### What can you use it for?

- **Recruiting and job boards**: collect fresh postings for roles and locations you cover, with full descriptions.
- **Job alerts**: schedule a search with **Only new jobs** and get only postings you have not seen.
- **Sales prospecting**: find companies hiring for roles that signal a need for your product (for example "data engineer" or "SDR"), and who posted the job.
- **Labour market analysis**: compare roles, seniority, salaries and applicants by location and over time.
- **Competitor tracking**: see which roles a competitor is hiring for (company IDs filter).

#### What data do you get?

| Field | Description | Job ($0.20/1K) | Details (+$0.20/1K) |
|---|---|---|---|
| `jobId`, `jobUrl` | LinkedIn job ID and link | ✅ | ✅ |
| `title`, `companyName`, `companyUrl`, `companyLogoUrl` | Job title and company | ✅ | ✅ |
| `location`, `postedDate`, `postedTimeAgo` | Location and exact posting date | ✅ | ✅ |
| `salaryText`, `benefits` | Salary and badges shown in search results, when listed | ✅ | ✅ |
| `descriptionText`, `descriptionHtml` | Full job description | — | ✅ |
| `applicantsCount`, `applicantsText` | Number of applicants (for example `Over 200 applicants` → 200) | — | ✅ |
| `seniorityLevel`, `employmentType`, `jobFunction`, `industries` | Job criteria as published by LinkedIn | — | ✅ |
| `salary` | Salary range as numbers: `min`, `max`, `currency`, `period`, when published | — | ✅ |
| `posterName`, `posterTitle`, `posterProfileUrl` | Person who posted the job, when shown | — | ✅ |
| `applyType` | `easy-apply` (on LinkedIn) or `external` (company site) | — | ✅ |

Every row also has `searchKeyword`, `searchLocation`, `detailsIncluded` and `scrapedAt`.

- Covers the public job postings LinkedIn shows without login.
- Salary ranges and job posters are returned when LinkedIn shows them (salary is common in the US, rarer in Europe).
- `applyType` tells you whether the job uses Easy Apply or the company's site; `jobUrl` opens the posting.

#### How much does it cost?

You pay only for results. Platform usage is included.

| Per 1,000 jobs | Free plan | Starter plan | Scale plan | Business plan and above |
|---|---|---|---|---|
| Jobs with full details (default) | **$0.40** | $0.35 | $0.30 | $0.25 |
| Jobs only (details off) | **$0.20** | $0.18 | $0.15 | $0.125 |

For example, 100 jobs with full details cost $0.04 on the free plan.

- Duplicates and jobs filtered out by experience level, job type or applicants are not charged.
- With **Only new jobs**, already-delivered jobs are skipped and not charged.
- Set a maximum cost per run in Apify Console and the run stops when it is reached.

#### Benchmark on the same search

Same input, same day (7 November 2026): `data analyst` in Italy, 50 jobs with details, free Apify plan.

| | This Actor | Most used alternative | Second most used alternative |
|---|---|---|---|
| Jobs delivered | **50** | 49 | 50 |
| Run time | **10 s** | 1 min 29 s | 36 s |
| Price paid | **$0.020** | $0.098 | $0.021 |
| Company details (size, website) | ❌ | ✅ | not stated |
| Only new jobs since last run | ✅ | ❌ | ❌ |

The most used alternative adds company details; this Actor is about five times cheaper and nine times faster, and adds an "only new jobs" mode for scheduled alerts.

#### Measured on real searches

Runs from 7 November 2026, default settings:

| Search | Result | Run time |
|---|---|---|
| `software engineer`, United States, 200 jobs with details | 200 / 200 with applicants, 16 with a salary range | 1 min 56 s |
| `product manager`, Germany, past week, 30 jobs | 30 / 30 with details | 7 s |
| `sales`, United States, 1,500 jobs without details | 1,490 unique jobs (search split past the 1,000 cap) | 4 min 45 s |
| `data scientist`, Milan and Rome, 15 jobs each | 30 / 30 with details | 5 s |
| `marketing manager`, Italy, Only new jobs, run twice | second run skipped the 20 jobs already seen and returned 20 new ones | 5 s |
| `data analyst`, Italy, 10 jobs (example input) | 10 / 10 with details | under 1 min |

#### How to use it

1. Enter one or more **job titles or keywords** and one or more **locations**.
2. Optional: **date posted**, **experience level**, **job type**, **maximum applicants**, **Easy Apply only**.
3. Set **maximum jobs per search**. Start with 10 to see the output.
4. Click **Start**. Export to JSON, CSV or Excel, or use the API. For alerts, schedule the run with **Only new jobs** and a **monitor name**.

For remote jobs, add `remote` to the keyword or use `Remote` as a location.

LinkedIn labels the seniority of many jobs as `Not Applicable`, so experience-level filters work best with broad keywords.

#### Input example

```json
{
  "keywords": ["data engineer"],
  "locations": ["Germany", "Netherlands"],
  "datePosted": "pastWeek",
  "experienceLevels": ["mid-senior"],
  "maxJobsPerSearch": 100,
  "includeDetails": true
}
```

#### Output example

Real result with details, shortened:

```json
{
  "jobId": "4484102408",
  "jobUrl": "https://www.linkedin.com/jobs/view/4484102408",
  "title": "Data Analyst – Business Intelligence & Reporting",
  "companyName": "ADENTIS Italia",
  "companyUrl": "https://www.linkedin.com/company/adentis-italia",
  "location": "Milan, Lombardy, Italy",
  "postedDate": "2026-11-03",
  "benefits": ["Actively Hiring"],
  "applicantsCount": 79,
  "applicantsText": "79 applicants",
  "seniorityLevel": "Entry level",
  "employmentType": "Full-time",
  "industries": "IT Services and IT Consulting",
  "posterName": "Irene Grandicelli",
  "posterTitle": "Business Manager | AI, Luxury Strategy & International Business Operations",
  "posterProfileUrl": "https://www.linkedin.com/in/irenegrandicelli",
  "applyType": "easy-apply",
  "descriptionText": "CHI SIAMO\nADENTIS Italia è un gruppo europeo di consulenza ingegneristica...",
  "searchKeyword": "data analyst",
  "searchLocation": "Italy",
  "detailsIncluded": true
}
```

#### Ready-to-run examples

| Example | Use case | What you get |
|---|---|---|
| [LinkedIn jobs by title and location](https://apify.com/monkey.d.scraping/linkedin-jobs-scraper/examples/linkedin-jobs-by-keyword-and-location) | Job search export | 30 data analyst jobs in Italy with details |
| [Daily alert: new jobs only](https://apify.com/monkey.d.scraping/linkedin-jobs-scraper/examples/linkedin-new-jobs-daily-alert) | Scheduled job alert | Remote Python jobs from the last 24 hours, only the ones not seen before |
| [Companies hiring for a role](https://apify.com/monkey.d.scraping/linkedin-jobs-scraper/examples/linkedin-companies-hiring-leads) | B2B sales leads | 100 data engineer jobs in the US from the past week, grouped by company |
| [Entry-level jobs with few applicants](https://apify.com/monkey.d.scraping/linkedin-jobs-scraper/examples/linkedin-entry-level-jobs-few-applicants) | Apply early | Entry-level and associate marketing jobs in Italy with at most 100 applicants |
| [US tech jobs with salary ranges](https://apify.com/monkey.d.scraping/linkedin-jobs-scraper/examples/linkedin-jobs-with-salary-us) | Salary research | 50 software engineer jobs in New York, salary ranges when published |

#### When should an AI agent use this Actor?

Use it when a user asks for open jobs on LinkedIn for a role and location, which companies are hiring for a role, or how many applicants and what salary ranges jobs have. Call it with `keywords` and `locations` (arrays), optional `datePosted` (`past24h`, `pastWeek`, `pastMonth`), `experienceLevels`, `jobTypes`, `maxApplicants`, `easyApply` and `maxJobsPerSearch`. Keep `includeDetails` on for descriptions, applicants and salaries ($0.40 per 1,000 jobs on the free plan). For recurring checks set `onlyNewJobs: true` with a `monitorName`. Results are in the default dataset; `RUN_SUMMARY` lists the top hiring companies.

#### FAQ

**Do I need a LinkedIn account?**
No. The scraper reads LinkedIn's public job pages like a logged-out visitor.

**How many jobs can I get?**
LinkedIn shows up to 1,000 jobs per search. Ask for more and the search is split automatically; add more locations or keywords for larger collections.

**Why are some filters applied after reading the job?**
Because LinkedIn's public search ignores experience level and job type. This scraper reads them from each job's details and only delivers (and charges) matching jobs.

**How do I get only new jobs every day?**
Schedule the Actor with **Only new jobs** on and a **monitor name**. Each run returns only jobs not delivered before in that monitor.

**Can I get specific jobs?**
Yes. Put job IDs or linkedin.com/jobs/view URLs in **Job IDs or job URLs**.

#### Chinese Simplified

#### 中文说明：领英职位采集工具（LinkedIn Jobs 爬虫 / 职位API）

**LinkedIn Jobs Scraper** 按职位名称、关键词和地点，批量导出 **领英（LinkedIn）公开招聘职位**：职位名称、公司、地点、准确发布日期和薪资（如有），以及**完整职位描述、申请人数、职级、雇佣类型、行业、薪资范围和职位发布人**。**含完整详情每1,000个职位仅0.40美元**（免费套餐），Business套餐低至0.25美元，平台用量已包含。无需领英账号、无需登录、无需Cookie。

专为海外招聘团队、出海企业HR、招聘网站、HR科技公司、销售团队和分析师打造：掌握谁在招聘、招什么岗位、在哪里招、招得多快。

##### 为什么选择这款领英职位采集工具？

- **完整详情，价格全包**：每1,000个职位0.40美元，含职位描述、申请人数、职级和薪资，平台用量已包含，没有启动费。
- **只获取上次运行后的新职位**：开启 **Only new jobs** 后，已交付的职位自动跳过且不收费，非常适合职位提醒和招聘监控。
- **单次搜索超过1,000个职位**：领英每次搜索最多显示1,000个职位，需要更多时工具自动按发布时间等条件拆分搜索并去重合并；添加多个地点可获取更多。
- **筛选真正生效**：领英公开搜索只应用关键词、地点、发布时间、Easy Apply和公司。职级、雇佣类型和最多申请人数由本工具在职位详情上筛选，不符合条件的职位**不收费**。
- **谁在招聘，一目了然**：*Hiring companies and posters* 视图列出公司、岗位和发布人，运行摘要中还有招聘最多的公司排名，适合销售拓客。
- **速度快**：无需浏览器，200个含完整详情的职位约2分钟。
- **只为有效数据付费**：重复职位免费，详情只有成功获取时才计费。

##### 同一搜索实测对比

2026年11月7日，`data analyst`、意大利、50个含详情的职位、Apify免费套餐：

| | 本工具 | 最常用替代工具 | 第二常用替代工具 |
|---|---|---|---|
| 交付职位数 | **50** | 49 | 50 |
| 运行时间 | **10秒** | 1分29秒 | 36秒 |
| 实付费用 | **0.020美元** | 0.098美元 | 0.021美元 |
| 只获取新职位 | ✅ | ❌ | ❌ |

本工具比最常用的替代工具便宜约五倍、快约九倍。

##### 适用场景

- **海外招聘与人才市场调研**：出海企业了解目标国家的岗位需求、职级分布和薪资水平。
- **招聘网站与职位聚合**：按岗位和地区持续采集最新职位及完整描述。
- **职位提醒**：设置定时运行并开启 **Only new jobs**，只收到没见过的新职位。
- **销售拓客**：找出正在招聘某类岗位的公司（如 `data engineer`、`SDR`），这往往意味着对你的产品有需求，还能看到职位发布人。
- **劳动力市场分析**：按地区和时间比较岗位、职级、薪资和申请人数。
- **竞品招聘追踪**：按公司ID查看竞争对手在招哪些岗位。

##### 可以获取哪些数据？

- **职位（0.20美元/1,000个）**：职位ID和链接、职位名称、公司名称、公司主页和Logo、地点、准确发布日期、搜索结果中显示的薪资和福利标签。
- **详情（另加0.20美元/1,000个）**：完整职位描述（文本和HTML）、申请人数、职级、雇佣类型、职能、行业、数字化薪资范围（最低、最高、币种、周期）、职位发布人姓名、头衔和主页、申请方式（Easy Apply或公司官网）。

##### 价格

按结果付费，平台用量已包含：

| 每1,000个职位 | 免费套餐 | Starter套餐 | Scale套餐 | Business及以上 |
|---|---|---|---|---|
| 职位 + 完整详情（默认） | **0.40美元** | 0.35美元 | 0.30美元 | 0.25美元 |
| 仅职位（关闭详情） | **0.20美元** | 0.18美元 | 0.15美元 | 0.125美元 |

例如，100个含完整详情的职位在免费套餐只需0.04美元。被职级、雇佣类型或申请人数筛掉的职位不收费。

##### 使用方法

1. 输入一个或多个**职位名称或关键词**，以及一个或多个**地点**。
2. 可选：**发布时间**、**职级**、**雇佣类型**、**最多申请人数**、**仅Easy Apply**。
3. 设置**每次搜索的最大职位数**，建议先用10个查看结果。
4. 点击 **Start**，完成后导出为JSON、CSV、Excel，或通过API获取。如需职位提醒，开启 **Only new jobs** 并填写 **monitor name** 后设置定时运行。

搜索远程职位：在关键词中加入 `remote`，或将地点设为 `Remote`。

```json
{
  "keywords": ["mandarin"],
  "locations": ["Germany"],
  "datePosted": "pastMonth",
  "maxJobsPerSearch": 30,
  "includeDetails": true
}
```

**一键运行中文示例：** [领英职位采集：德国的中文岗位](https://apify.com/monkey.d.scraping/linkedin-jobs-scraper/examples/linkedin-jobs-mandarin-germany-zh)（上面的输入已保存为示例任务，打开即可运行）。

##### 常见问题

**需要领英账号吗？**
不需要。工具像未登录的访客一样读取领英公开的职位页面。

**一次可以获取多少职位？**
需要超过1,000个时，工具会自动拆分搜索；添加更多地点或关键词可以获取更多。

**如何每天只获取新职位？**
开启 **Only new jobs** 并填写 **monitor name**，然后设置定时运行。每次只返回该监控中之前没有交付过的职位。

**可以获取指定职位吗？**
可以。在 **Job IDs or job URLs** 中填写职位ID或 linkedin.com/jobs/view 链接。

**可以通过API、自动化工具或AI智能体调用吗？**
可以。支持Apify API、Python和Node.js客户端，以及n8n、Make、Zapier等自动化工具；也可以通过Apify MCP服务器作为AI智能体的工具使用。

**中文说明会翻译采集到的数据吗？**
不会。中文说明只是使用文档；采集到的数据保持来源的原始语言（职位名称和描述按发布时的原文呈现）。

##### 其他工具

- [领英广告库采集工具](https://apify.com/monkey.d.scraping/linkedin-ad-library-scraper)：查看公司在LinkedIn上投放的广告、各国家展示占比和定向。
- [Google广告采集工具（Google广告透明度中心）](https://apify.com/monkey.d.scraping/google-ads-transparency-scraper)：查看公司在Google上投放的广告。

#### Chinese Traditional

#### 中文說明（繁體）：LinkedIn職缺擷取工具（LinkedIn Jobs 爬蟲 / API）

**LinkedIn Jobs Scraper** 依職稱、關鍵字與地點匯出 **LinkedIn公開職缺**：職稱、公司、地點、刊登日期與薪資，以及完整職缺說明、應徵人數、職級、僱用類型與刊登者。**含完整詳細資料每1,000筆職缺0.40美元**（免費方案），平台用量已包含。不需要帳號，也不必登入。

##### 為什麼選擇這款LinkedIn職缺爬蟲？

- **只取得新職缺**：開啟 **Only new jobs**，已交付的職缺自動略過且不收費。
- **單次搜尋超過1,000筆**：自動拆分搜尋並去除重複。
- **篩選真正生效**：職級、僱用類型與應徵人數依詳細資料篩選，不符合的不收費。
- **誰在招募一目了然**：列出公司、職缺與刊登者，並有招募最多的公司排名。

##### 適用場景

- **招募與人才市場調查**：目標國家的職缺需求、職級分布與薪資水準。
- **業務開發**：找出正在招募 `data engineer`、`SDR` 等職缺的公司及刊登者。
- **職缺通知**：設定排程並開啟 **Only new jobs**，只收到新職缺。
- **競爭對手招募追蹤**：依公司ID查看對手在招募哪些職缺。

##### 使用方法

1. 輸入**職稱或關鍵字**，以及一個或多個**地點**。
2. 選填**刊登時間**、**職級**、**僱用類型**，設定**每次搜尋的最大職缺數**（建議先用10筆）。
3. 點擊 **Start**，匯出JSON、CSV、Excel或透過API取得。

```json
{
  "keywords": ["mandarin"],
  "locations": ["Germany"],
  "datePosted": "pastMonth",
  "maxJobsPerSearch": 30,
  "includeDetails": true
}
```

##### 價格

| 每1,000筆職缺 | 免費 | Starter | Scale | Business以上 |
|---|---|---|---|---|
| 含完整詳細資料（預設） | **0.40美元** | 0.35美元 | 0.30美元 | 0.25美元 |
| 僅職缺 | **0.20美元** | 0.18美元 | 0.15美元 | 0.125美元 |

##### 常見問題

**需要LinkedIn帳號嗎？**
不需要，工具就像未登入的訪客一樣讀取公開職缺頁面。

**如何每天只取得新職缺？**
開啟 **Only new jobs** 並填寫 **monitor name**，再設定排程執行。

**中文說明會翻譯擷取到的資料嗎？**
不會。說明是中文，資料保留來源的原始語言（職稱與職缺說明以刊登時的語言呈現）。

完整欄位與輸出範例請見[英文說明](#what-data-do-you-get)或[简体中文说明](#chinese-simplified)。

#### Related tools

- [Hiring Intelligence: Jobs, Tech Mentions & Sales Leads](https://apify.com/monkey.d.scraping/hiring-signal-intelligence): hiring signals and technology mentions from job postings, for sales prospecting.
- [Welcome to the Jungle Jobs Scraper & Hiring Signals](https://apify.com/monkey.d.scraping/wttj-jobs-hiring-signals): jobs from Welcome to the Jungle, popular in France and Europe.
- [LinkedIn Ad Library Scraper](https://apify.com/monkey.d.scraping/linkedin-ad-library-scraper): the LinkedIn ads companies run, with impressions by country and targeting.

#### More tools for sales and marketing

- [Website SEO Audit & Contact Scraper](https://apify.com/monkey.d.scraping/website-opportunity-auditor): audit a company's website, with SEO issues and contact details.
- [Google News Scraper — Company News & Article URLs](https://apify.com/monkey.d.scraping/google-news-scraper-lite): recent news about the companies that are hiring.
- [Google Ads Scraper — Transparency Center](https://apify.com/monkey.d.scraping/google-ads-transparency-scraper): the Google ads a company runs.

These are separate Actors and are never called by this one.

# Actor input Schema

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

One search per line, for example <code>data analyst</code> or <code>python developer</code>. For remote jobs, add <code>remote</code> to the keyword or use <code>Remote</code> as location.

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

One per line: city, region or country as you would type it on LinkedIn, for example <code>Italy</code>, <code>London</code> or <code>Remote</code>. Each keyword is searched in each location. Leave empty for worldwide.

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

Only jobs posted in this period (a filter LinkedIn applies itself).

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

Jobs to return for each keyword or search URL. Start with 10 to check the output. Above 1,000 the search is split automatically.

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

Opens each job posting for the full description, number of applicants, seniority level, employment type, industries, salary range and the person who posted it. Turn off for a faster and cheaper list.

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

Only these experience levels. Read from each job's details (jobs that do not match are not charged).

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

Only these job types. Read from each job's details (jobs that do not match are not charged).

## `maxApplicants` (type: `integer`):

Only jobs with at most this many applicants, to apply early. Read from each job's details (jobs that do not match are not charged).

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

Only jobs you can apply to directly on LinkedIn (a filter LinkedIn applies itself).

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

For scheduled runs: return (and charge) only jobs not delivered in previous runs of the same monitor.

## `monitorName` (type: `string`):

Keeps the memory of seen jobs separate per monitor, for example <code>python-jobs-italy</code>. Used with Only new jobs.

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

Paste search URLs from linkedin.com/jobs/search with your filters already set.

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

Only jobs from these LinkedIn company IDs (the number in a company's job search filter).

## `jobIds` (type: `array`):

Get the details of specific jobs: LinkedIn job IDs or linkedin.com/jobs/view URLs.

## Actor input object example

```json
{
  "keywords": [
    "data analyst"
  ],
  "locations": [
    "Italy"
  ],
  "datePosted": "any",
  "maxJobsPerSearch": 10,
  "includeDetails": true,
  "easyApply": false,
  "onlyNewJobs": false
}
```

# Actor output Schema

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

One row per unique job posting.

## `leads` (type: `string`):

Companies hiring and the people who posted the jobs.

## `summary` (type: `string`):

Searches, top hiring companies and network statistics.

# 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": [
        "Italy"
    ],
    "maxJobsPerSearch": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("monkey.d.scraping/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": ["Italy"],
    "maxJobsPerSearch": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("monkey.d.scraping/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": [
    "Italy"
  ],
  "maxJobsPerSearch": 10
}' |
apify call monkey.d.scraping/linkedin-jobs-scraper --silent --output-dataset

```

## MCP server setup

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