# Employer ATS Job Feed — Free Beta (`bgmowl/employer-job-feed-beta`) Actor

Free beta; Apify usage applies. Collect and filter job openings from 1–3 companies that use Lever for their careers pages. Export job details, application links, timestamps, and a report showing whether each source was fully checked.

- **URL**: https://apify.com/bgmowl/employer-job-feed-beta.md
- **Developed by:** [bgm owl](https://apify.com/bgmowl) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## 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

## Employer ATS Job Feed — Free Beta

Collect job openings from companies that use Lever for their careers pages, and turn them into a tidy list you can download and review.

**What is a Lever board?** Lever is hiring software companies use to publish job openings. A Lever board is a company’s public jobs page hosted by Lever. This beta works with public Lever pages only, not every company’s careers website.

![Employer ATS Job Feed workflow: choose one to three employers, filter roles, and export a snapshot with factual metadata, public application links, timestamps, and a completeness report. Illustrative workflow with fictional sample roles.](https://api.apify.com/v2/key-value-stores/FGL15twewurY34tAd/records/employer-ats-job-feed-workflow.png?signature=18A0dJWcndYPMaXMjlzNs)

Get a small, filtered snapshot of published jobs directly from employers' Lever boards. Supply one to three employers and role filters; receive factual job metadata, public application links, observation timestamps, and a source-completeness report.

Use it to check a short recruiting or job-search watchlist and export matching roles to a spreadsheet. Employer names and board mappings come from your input. Verify the connection on the employer's own careers page before adding a board.

[![Employer ATS Job Feed illustrative demo: public Lever jobs in one tidy feed](https://api.apify.com/v2/key-value-stores/FGL15twewurY34tAd/records/bgmowl-employer-job-feed.gif?signature=62NJ3WiQJdVjrTm8SQJd)](https://api.apify.com/v2/key-value-stores/FGL15twewurY34tAd/records/bgmowl-employer-job-feed.gif?signature=62NJ3WiQJdVjrTm8SQJd)

[Open animated demo](https://api.apify.com/v2/key-value-stores/FGL15twewurY34tAd/records/bgmowl-employer-job-feed.gif?signature=62NJ3WiQJdVjrTm8SQJd) · The preview on this page is static; the link opens the looping GIF.

*Fictional demo with an illustrative output layout. Public Lever boards only; employer mappings require your verification.*

### Try the prefilled example

The input form is prefilled with Metabase and engineering/account-executive title filters. Run it as supplied, then open the default dataset and the `REPORT` output. On October 7, 2026, the example returned eight matching jobs from 18 published postings through one public API request. Published jobs change, so future results can differ or be empty.

```json
{
  "sources": [
    {
      "company": "Metabase",
      "domain": "metabase.com",
      "career_url": "https://jobs.lever.co/metabase",
      "identity_evidence_url": "https://www.metabase.com/jobs"
    }
  ],
  "filters": {
    "title_any": ["engineer", "account executive"],
    "title_exclude": ["intern"]
  }
}
```

For another employer, provide its hosted Lever `career_url`, or provide `ats: "lever"`, its `board` identifier, and optionally `region: "eu"` (the default is `global`). Each source also requires `company`, `domain`, and `identity_evidence_url`. The evidence URL records your supplied mapping; this Actor does not independently verify it or discover boards from domains.

### Filters and results

Supported filters are `title_any`, `title_exclude`, `location_any`, `department_any`, and `workplace_any`. Filters use case-insensitive literal substrings. Alternatives within each positive list are OR; different dimensions are AND. Any `title_exclude` match removes a role. An empty positive list does not restrict that dimension. To get all titles, set `"filters": {}`. Missing filters use the prefilled example filters.

The dataset contains matched rows with a stable job key, company and board, title, locations, department, workplace/employment metadata when supplied, public job/application URLs, observation dates, filter results, and source completeness. Repeated native IDs on the same board are deduplicated; similar jobs with different IDs can remain distinct.

`REPORT` records each source's dated observation, request receipts, completion status, errors or caps, and output counts. Inspect it alongside the dataset. A successful Actor execution can contain an incomplete source.

This beta is a fresh snapshot on every run. `change: "baseline"` means first observation in that run; it does not mean newly published. It does not compare earlier runs or report closed jobs. A fetch failure or capped result never establishes closure. Presence on a published board does not prove that an employer is actively reviewing applications. Native publication dates may be absent.

### Scope and limits

This beta supports public Lever global/EU published-posting endpoints. [Lever's official API documentation](https://github.com/lever/postings-api) describes these endpoints and third-party access to published postings. Outputs contain factual metadata and links. Full descriptions, excerpts, raw responses, and a shared historical corpus are excluded. Applications stay on the employer's public application page.

| Limit | Maximum |
|---|---:|
| Explicit boards | 3 |
| Public API requests | 3 pages per board; 9 total; no upstream retry |
| Jobs inspected | 250 per board |
| Source response body | 4 MB per board, plus a one-byte cap-detection sentinel |
| Output | 750 rows and 1 MB of projected dataset JSON |
| Input | 64 KB; 30 phrases per filter; 200 characters per phrase |
| Request timeout | 15 seconds |
| Collection / process deadline | 150 / 180 seconds |
| Memory setting | 512 MB |

Large boards can produce partial snapshots. Narrow the watchlist if output limits are exceeded. Unsupported providers and input options are rejected. Greenhouse, Ashby, general web crawling, login-only sources, and application submission are outside this beta's scope.

### Free-beta pricing and feedback

The developer fee is **$0**. Apify platform usage consumes the runner's credits and can incur charges under their plan, including compute, storage, and transfer. Free beta does not mean free platform usage. Hosted cost and cold-start time still need measurement; the local example's timing is not a cloud performance promise.

For feedback, open an Actor issue with the public board URL, role filters, run ID, and expected result. Useful reports include incorrect mappings, missing fields, duplicate candidates, partial results, and time saved compared with a manual check. Do not include credentials, candidate data, or application details.

# Actor input Schema

## `sources` (type: `array`):

Lever global/EU only. Supply verified employer career evidence plus hosted career_url or ats/board. No domain discovery.

## `filters` (type: `object`):

Literal substring lists; OR within each list, AND across dimensions.

## Actor input object example

```json
{
  "sources": [
    {
      "company": "Metabase",
      "domain": "metabase.com",
      "career_url": "https://jobs.lever.co/metabase",
      "identity_evidence_url": "https://www.metabase.com/jobs"
    }
  ],
  "filters": {
    "title_any": [
      "engineer",
      "account executive"
    ],
    "title_exclude": [
      "intern"
    ]
  }
}
```

# Actor output Schema

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

No description

## `report` (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 = {
    "sources": [
        {
            "company": "Metabase",
            "domain": "metabase.com",
            "career_url": "https://jobs.lever.co/metabase",
            "identity_evidence_url": "https://www.metabase.com/jobs"
        }
    ],
    "filters": {
        "title_any": [
            "engineer",
            "account executive"
        ],
        "title_exclude": [
            "intern"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("bgmowl/employer-job-feed-beta").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 = {
    "sources": [{
            "company": "Metabase",
            "domain": "metabase.com",
            "career_url": "https://jobs.lever.co/metabase",
            "identity_evidence_url": "https://www.metabase.com/jobs",
        }],
    "filters": {
        "title_any": [
            "engineer",
            "account executive",
        ],
        "title_exclude": ["intern"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("bgmowl/employer-job-feed-beta").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 '{
  "sources": [
    {
      "company": "Metabase",
      "domain": "metabase.com",
      "career_url": "https://jobs.lever.co/metabase",
      "identity_evidence_url": "https://www.metabase.com/jobs"
    }
  ],
  "filters": {
    "title_any": [
      "engineer",
      "account executive"
    ],
    "title_exclude": [
      "intern"
    ]
  }
}' |
apify call bgmowl/employer-job-feed-beta --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bgmowl/employer-job-feed-beta"
        }
    }
}
```

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/HTsPPeabLVBkZYOCf/builds/4WZF1eKjzFjYBTRSF/openapi.json
