# ATS Database - Find a Company's ATS and Career Page URL (`starbright_overlap/ats-database`) Actor

Free lookup over 40,051 company career pages across twelve applicant tracking systems. Give it a company name and get back which ATS it uses, the career page URL and the public API endpoint. No scraping, no cost.

- **URL**: https://apify.com/starbright\_overlap/ats-database.md
- **Developed by:** [Sulle H](https://apify.com/starbright_overlap) (community)
- **Categories:** Jobs, Developer tools, Lead generation
- **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?

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

## ATS Database — 40,097 Company Career Pages, Free to Search

**Free.** Type a company name, get back which applicant tracking system it uses, its career page
URL, and the public API endpoint that serves its jobs. No scraping happens, so there is nothing to
charge for.

```json
{ "companies": ["notion", "figma", "anthropic"] }
```

```json
{ "providers": ["recruitee"], "minPostings": 50, "sortBy": "postings" }
```

### What you get back

| Field | Description |
|---|---|
| `company` | The employer, as the board is registered |
| `provider` | Which ATS — one of twelve |
| `companySlug` | The identifier in the career page URL, which is what every API wants |
| `knownPostings` | Open postings at the last registry refresh — not live, see below |
| `careerPageUrl` | The page a human opens |
| `apiEndpoint` | The public JSON endpoint, ready to call |
| `apiMethod` | `GET` for eleven platforms, `POST` for Workday |
| `fetchJobsWith` | The Actor that reads that platform, if you would rather not write a client |

### Why this exists

Every one of these platforms publishes an open JSON endpoint that the employer's own careers page
reads — no key, no login. The hard part is not calling it. **The hard part is knowing that Notion is
on Ashby, Figma is on Greenhouse, and what string to put in the URL.** There is no public directory
of that, so everyone rebuilds it.

This is that directory: **40,097 boards across twelve platforms**, carrying **1,551,977
open postings** at last count.

### Matching is forgiving

You do not need the slug. `Acme Inc.`, `acme.com` and `https://jobs.lever.co/acme` all find the
same board — punctuation, `www.`, and common domain endings are stripped before matching.

Exact and prefix matches win. If a search has one, loose substring hits are dropped rather than
padded in — searching `notion` returns Notion, not `ion`. Only when nothing exact or prefix-like
exists does it fall back to substring matches, so a vague search still returns something.

### What this Actor does not do

- **It does not fetch jobs.** It tells you where they are. Every row carries the endpoint and the
  Actor that reads it.
- **`knownPostings` is not live.** It is the count from the last registry refresh, which runs
  monthly. Treat it as board size, not as today's openings.
- **It cannot see private boards.** Employers who keep their careers module closed are invisible to
  every tool, including this one.
- **Coverage is not everyone.** 40,097 boards is what has been found and verified, not every
  company on earth. A miss means we have not found that board yet, not that the company has no
  career page.

### Coverage by platform

| Platform | Boards |
|---|---|
| BambooHR | 9,711 |
| Greenhouse | 5,751 |
| Personio | 5,172 |
| SmartRecruiters | 4,334 |
| Ashby | 3,000 |
| Breezy HR | 2,800 |
| Workday | 2,658 |
| Lever | 1,917 |
| Workable | 1,710 |
| Rippling | 1,298 |
| Recruitee | 1,126 |
| Pinpoint | 620 |

### Recipes

**Check one company before you build.** Paste the name, see whether it is reachable at all and on
which platform, then point the matching Actor at the slug.

**Size a platform.** Leave `companies` empty, set `providers` to one platform and `minPostings` to
50, and you get every employer on it that is actively hiring, largest first.

**Build a target list.** Filter by platform and posting count, export the `companySlug` column, and
feed it straight into the `companies` input of any Actor below.

### Then what

- **[Career Site Job Feed](https://apify.com/starbright_overlap/ats-job-feed)** — one run across
  every platform here, one row shape.
- **[New Job Alerts](https://apify.com/starbright_overlap/new-jobs-feed)** — the same coverage, but
  each run returns only what appeared since the last one.
- Single-platform Actors are linked from each row's `fetchJobsWith`.

If you would rather write your own client, the endpoints and the measured field coverage for all
twelve platforms are documented here:
[Which ATS API gives you what](https://hwangbyeongseon.github.io/ats-job-feed-recipes/ats-api-fields.html).

### Notes

- **No network requests.** The registry ships inside the Actor, so a run is a lookup and finishes in
  about a second.
- **Free.** There is no per-result charge. You pay only the platform compute for a one-second run,
  which is a fraction of a cent.

# Actor input Schema

## `companies` (type: `array`):

Company names, career page URLs, or board slugs. Matching is partial and ignores punctuation, so "Acme Inc.", "acme.com" and "acme" all find the same board. Leave empty to browse the whole registry.

## `providers` (type: `array`):

Any of: greenhouse, personio, smartrecruiters, breezy, workday, lever, workable, ashby, recruitee, bamboohr, rippling, pinpoint. Leave empty for all twelve.

## `minPostings` (type: `integer`):

Skip boards below this size. Useful when browsing a whole platform and you only want employers that are actively hiring. The count is from the last registry refresh, not live.

## `maxResults` (type: `integer`):

Boards are returned largest-first, so a capped run still shows the biggest employers.

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

Largest boards first, or alphabetical by company.

## Actor input object example

```json
{
  "companies": [
    "notion",
    "https://jobs.lever.co/figma"
  ],
  "minPostings": 0,
  "maxResults": 200,
  "sortBy": "postings"
}
```

# Actor output Schema

## `boards` (type: `string`):

One row per company career page: which ATS it uses, the page URL, and the public API endpoint that serves its jobs.

# 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 = {
    "companies": [
        "notion",
        "figma"
    ],
    "maxResults": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("starbright_overlap/ats-database").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 = {
    "companies": [
        "notion",
        "figma",
    ],
    "maxResults": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("starbright_overlap/ats-database").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 '{
  "companies": [
    "notion",
    "figma"
  ],
  "maxResults": 200
}' |
apify call starbright_overlap/ats-database --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,starbright_overlap/ats-database"
        }
    }
}

```

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/2rsaVARuM7dORFbnI/builds/MXaRAs81znouxaL1W/openapi.json
