# Lever Jobs Scraper: Company Hiring Change Feed (`getascraper/lever-jobs-monitor`) Actor

Monitor public Lever job boards for new, updated, reappeared, and closed postings. Export source-linked roles, categories, workplace fields, and application URLs to Apify schedules, webhooks, and hiring-intelligence workflows.

- **URL**: https://apify.com/getascraper/lever-jobs-monitor.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 job postings

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🧲 Lever jobs scraper

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed">
<tr>
<td style="padding:24px 28px;background:#F5F3FF;border:1px solid #DDD6FE;border-top:4px solid #5B4BC4;border-radius:12px">
<span style="display:block;font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">🔎 See public Lever hiring changes in one place.</span>
<span style="display:block;margin-top:10px;font-size:15px;color:#57534E;line-height:1.6">Collect current public listings, keep each row tied to its source, and make the next hiring decision with a clean, repeatable feed. Work only from pages that anyone can normally view.</span>

</td>
</tr>
</table>

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed">
<tr>
<td style="padding:16px 14px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-top:3px solid #5B4BC4;border-radius:10px 0 0 10px;vertical-align:top"><span style="display:block;font-size:15px;font-weight:800;color:#3F348A;line-height:1.3">🧭 Focused sources</span><span style="display:block;margin-top:8px;font-size:12px;color:#57534E;line-height:1.5">Use ordinary public company and careers pages.</span></td>
<td style="padding:16px 14px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-top:3px solid #5B4BC4;border-left:none;vertical-align:top"><span style="display:block;font-size:15px;font-weight:800;color:#3F348A;line-height:1.3">🔔 Meaningful changes</span><span style="display:block;margin-top:8px;font-size:12px;color:#57534E;line-height:1.5">Separate new, updated, returning, and closed roles.</span></td>
<td style="padding:16px 14px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-top:3px solid #5B4BC4;border-left:none;vertical-align:top"><span style="display:block;font-size:15px;font-weight:800;color:#3F348A;line-height:1.3">🔗 Source context</span><span style="display:block;margin-top:8px;font-size:12px;color:#57534E;line-height:1.5">Keep the original job link beside every record.</span></td>
<td style="padding:16px 14px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-top:3px solid #5B4BC4;border-left:none;border-radius:0 10px 10px 0;vertical-align:top"><span style="display:block;font-size:15px;font-weight:800;color:#3F348A;line-height:1.3">📅 Ready to repeat</span><span style="display:block;margin-top:8px;font-size:12px;color:#57534E;line-height:1.5">Run once for research or on a schedule for monitoring.</span></td>
</tr>
</table>

### 🎯 Turn public hiring activity into a useful signal

Follow public Lever company boards for new postings, updated roles, returning listings, and confirmed closures. Each record stays connected to the public listing so a recruiter, analyst, or operations team can verify the context before acting.

#### Who gets value

- **I am a talent intelligence analyst** looking to turn a target-company watchlist into an evidence-backed hiring feed.
- **I am a recruiting operations lead** looking to keep a clean, current feed of roles without checking company sites by hand.
- **I am a research analyst** looking to compare hiring signals across a defined company list.

### ⚡ Get results in three steps

Start with a small public source to confirm the output fits your workflow. Repeat the same setup on an Apify schedule when you need ongoing visibility.

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed">
<tr>
<td style="padding:16px 14px;width:33.333%;background:#F5F3FF;border:1px solid #DDD6FE;border-radius:10px 0 0 10px;vertical-align:top"><span style="display:block;font-size:12px;font-weight:800;color:#5B4BC4;letter-spacing:1px">STEP 1</span><span style="display:block;margin-top:6px;font-size:14px;font-weight:700;color:#1C1917;line-height:1.35">Add sources</span><span style="display:block;margin-top:6px;font-size:12px;color:#57534E;line-height:1.5">Paste a Lever company name or supported public company link.</span></td>
<td style="padding:16px 14px;width:33.333%;background:#F5F3FF;border:1px solid #DDD6FE;border-left:none;vertical-align:top"><span style="display:block;font-size:12px;font-weight:800;color:#5B4BC4;letter-spacing:1px">STEP 2</span><span style="display:block;margin-top:6px;font-size:14px;font-weight:700;color:#1C1917;line-height:1.35">Choose the view</span><span style="display:block;margin-top:6px;font-size:12px;color:#57534E;line-height:1.5">Collect a current snapshot or focus on changes.</span></td>
<td style="padding:16px 14px;width:33.333%;background:#F5F3FF;border:1px solid #DDD6FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top"><span style="display:block;font-size:12px;font-weight:800;color:#5B4BC4;letter-spacing:1px">STEP 3</span><span style="display:block;margin-top:6px;font-size:14px;font-weight:700;color:#1C1917;line-height:1.35">Use the feed</span><span style="display:block;margin-top:6px;font-size:12px;color:#57534E;line-height:1.5">Send source-linked records into your existing process.</span></td>
</tr>
</table>

### 🧩 Configure your run

The first setting identifies the public sources you want to follow. The remaining settings let you balance detail, scope, and the amount of history returned.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `companySites` | List of text or links | No | Public Lever company names or supported public company links. |
| `region` | Choice | No | Choose the public global or European source region, or use automatic selection. |
| `includeDetails` | Yes or no | No | Include public role descriptions, lists, and application details. |
| `maxItems` | Number | No | Maximum postings returned across all requested companies. |
| `maxPages` | Number | No | Maximum listing pages checked in one run. |
| `outputMode` | Choice | No | Return every observed posting or only new, updated, reappeared, and closed changes. |
| `stateName` | Text | No | Name the saved comparison history for this watchlist. |
| `pageSize` | Number | No | Postings requested in each result page. |
| `maxConcurrency` | Number | No | Number of detailed role pages collected at once. |
| `requestDelayMs` | Number | No | Delay between public source requests. |
| `requestTimeoutMs` | Number | No | Maximum wait for one public source response. |
| `maxRetries` | Number | No | Retries for temporary availability problems. |

### 📦 Use the data immediately

Every result is a structured record with the original public source retained for review. Choose a full view for a current snapshot or a change-focused view for downstream actions.

| Field | Type | Description |
| --- | --- | --- |
| `event` | Text | New, updated, reappeared, or closed status when a change is found. |
| `title` | Text | Public role title. |
| `companySite` | Text | Public company board name. |
| `categories` | Object or null | Public team, location, commitment, and workplace labels. |
| `workplaceType` | Text or null | Published workplace type. |
| `country` | Text or null | Published country. |
| `region` | Text | Public source region used for the record. |
| `postingId` | Text | Source posting identifier. |
| `applyUrl` | Link or null | Original application link. |
| `hostedUrl` | Link | Original public role page. |
| `createdAt` | Date and time or null | Public posting creation time when available. |
| `observedAt` | Date and time | Time this Actor observed the posting. |
| `closedAt` | Date and time or null | Time a confirmed closure was recorded. |
| `scanComplete` | Yes or no | Whether the source check was complete enough for lifecycle comparison. |
| `source` | Text | Public source family used for the record. |

### 💳 Understand your run cost

Review the current pricing shown in the Apify Store before you scale a scheduled workflow. Begin with a small public source so you can confirm the records match your criteria.

### ⭐ Enjoying Lever jobs scraper?

After a successful run, rate the Actor based on the usefulness and clarity of the records. Your feedback helps improve the next release for teams with the same workflow.

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed">
<tr>
<td style="padding:20px 24px 14px;background:#F5F3FF;border:1px solid #DDD6FE;border-left:5px solid #5B4BC4;border-radius:10px 10px 0 0">
<span style="display:block;font-size:20px;letter-spacing:4px;color:#F59E0B">⭐ ⭐ ⭐ ⭐ ⭐</span>
<span style="display:block;margin-top:8px;font-size:17px;font-weight:800;color:#1C1917;line-height:1.35">Rate this Actor if it helped you spot Lever hiring changes sooner.</span>
<span style="display:block;margin-top:8px;font-size:14px;color:#57534E;line-height:1.5">Your feedback helps talent teams find a trustworthy public jobs workflow.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#5B4BC4;border:1px solid #DDD6FE;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/lever-jobs-monitor/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ Frequently asked questions

These answers cover the safest way to get a reliable first result. Use a separate saved state for each independent watchlist or client workflow.

#### Can I start with a normal public source link?

Yes. Paste a public Lever company link or company name, then use the available settings to narrow the collection.

#### Can I use this for recurring monitoring?

Yes. Run it on an Apify schedule and choose the change-focused output when you only need records that have meaningfully changed.

#### How are closed roles handled?

A role is only treated as closed after complete checks confirm that it is no longer present. This reduces false closure events caused by incomplete source results.

#### Do I need access to the employer system?

No. This Actor is designed for publicly available listings and does not request employer, applicant, or account access.

### 🛡️ Use public information responsibly

Use the records for legitimate hiring research, workforce planning, and internal operations. Respect the source’s terms and intended use, minimize retention, and do not use the data to make sensitive decisions about individuals.

### 🔗 Other actors

These adjacent Actors cover public hiring sources that teams often track alongside this one. Choose the source that matches the company’s careers platform.

- [🌱 Greenhouse jobs scraper](https://apify.com/getascraper/greenhouse-requisition-monitor)
- [🏥 NHS jobs scraper](https://apify.com/getascraper/nhs-trust-vacancy-monitor)
- [🎯 SmartRecruiters jobs scraper](https://apify.com/getascraper/smartrecruiters-jobs-monitor)
- [🗂️ Workday jobs scraper](https://apify.com/getascraper/workday-tenant-jobs-monitor)
- [🇨🇦 Job Bank Canada scraper](https://apify.com/getascraper/jobbank-scraper)

# Actor input Schema

## `companySites` (type: `array`):

Public Lever site slugs or jobs.lever.co and jobs.eu.lever.co URLs. No credentials are needed.

## `region` (type: `string`):

Choose the public Lever Postings API host. Auto follows an EU URL and uses global for a slug.

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

Fetch each selected posting from the public detail endpoint for descriptions and lists.

## `maxItems` (type: `integer`):

Maximum postings returned across all requested sites. A cap makes a scan partial for change monitoring.

## `maxPages` (type: `integer`):

Maximum paginated list responses per run. Reaching this bound leaves the scan partial.

## `outputMode` (type: `string`):

Return every observed posting or only rows with NEW, UPDATED, REAPPEARED, or CLOSED events.

## `stateName` (type: `string`):

Name of the saved comparison stream. Use a different state name for different site sets.

## `pageSize` (type: `integer`):

Number of postings requested per public list API page.

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

Maximum simultaneous detail requests per run.

## `requestDelayMs` (type: `integer`):

Delay before each public API request in milliseconds. The default respects Lever's one-second crawl delay.

## `requestTimeoutMs` (type: `integer`):

Timeout for each public API request in milliseconds.

## `maxRetries` (type: `integer`):

Retries for timeouts, rate limits, and 5xx responses. Authentication is never requested.

## Actor input object example

```json
{
  "companySites": [
    "https://jobs.eu.lever.co/lever"
  ],
  "region": "auto",
  "includeDetails": true,
  "maxItems": 25,
  "maxPages": 10,
  "outputMode": "full",
  "stateName": "lever-default",
  "pageSize": 25,
  "maxConcurrency": 4,
  "requestDelayMs": 1000,
  "requestTimeoutMs": 20000,
  "maxRetries": 3
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

No description

## `runSummary` (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 = {
    "companySites": [
        "https://jobs.eu.lever.co/lever"
    ],
    "region": "auto",
    "includeDetails": true,
    "maxItems": 25,
    "maxPages": 10,
    "outputMode": "full",
    "stateName": "lever-default",
    "pageSize": 25,
    "maxConcurrency": 4,
    "requestDelayMs": 1000,
    "requestTimeoutMs": 20000,
    "maxRetries": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/lever-jobs-monitor").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 = {
    "companySites": ["https://jobs.eu.lever.co/lever"],
    "region": "auto",
    "includeDetails": True,
    "maxItems": 25,
    "maxPages": 10,
    "outputMode": "full",
    "stateName": "lever-default",
    "pageSize": 25,
    "maxConcurrency": 4,
    "requestDelayMs": 1000,
    "requestTimeoutMs": 20000,
    "maxRetries": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/lever-jobs-monitor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "companySites": [
    "https://jobs.eu.lever.co/lever"
  ],
  "region": "auto",
  "includeDetails": true,
  "maxItems": 25,
  "maxPages": 10,
  "outputMode": "full",
  "stateName": "lever-default",
  "pageSize": 25,
  "maxConcurrency": 4,
  "requestDelayMs": 1000,
  "requestTimeoutMs": 20000,
  "maxRetries": 3
}' |
apify call getascraper/lever-jobs-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=getascraper/lever-jobs-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/wkUY3fqsi4esAwhWc/builds/MrFtJ4NH4XYZ2ve4d/openapi.json
