# ATS Detector: Which Job Board Does a Company Use? (`worthwhile_quinsy/ats-detector`) Actor

Detect which applicant tracking system a company uses (Greenhouse, Lever, Ashby, Workable and more) from its website, with career page and open roles.

- **URL**: https://apify.com/worthwhile\_quinsy/ats-detector.md
- **Developed by:** [Eki Soka](https://apify.com/worthwhile_quinsy) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 company ats founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## ATS Detector: which job board (applicant tracking system) does a company use?

Give it a list of **company websites**; get back which **ATS** each company uses (**Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters, BambooHR, Personio**), its **public career page**, how many roles are open, its top hiring teams and countries, and the date of its latest posting.

Companies already in our daily database (1,250+ job boards) are answered instantly; others are detected live from their website and career page.

### Who uses it

- **HR-tech and recruiting software sales:** know which ATS a prospect runs before you call (competitor displacement, integrations, partner lists).
- **Recruiters and agencies:** find the right career page and see how actively a company hires.
- **Job aggregators and data teams:** map companies to their job board feeds.
- **Market research:** ATS market share across a list of companies.

### Example

```json
{ "companyWebsites": ["stripe.com", "vanta.com", "notion.so", "ramp.com"] }
```

### Output

| Field | Example |
| --- | --- |
| `website`, `company` | https://www.vanta.com, Vanta |
| `ats`, `ats_name`, `board` | ashby, Ashby, vanta |
| `careers_page` | https://jobs.ashbyhq.com/vanta |
| `open_jobs`, `remote_share` | 120, 0.35 |
| `top_departments`, `hiring_countries`, `latest_posting` | \["Engineering", "Sales"], \["US", "IE"], 2026-10-01 |
| `company_industry`, `company_team_size`, `source` | B2B, 800, database / live |

Websites where no supported ATS was found are listed in the run's key-value store under `NOT_FOUND` with the reason, and are **not billed**.

### Pricing

Pay per event: one **company found** (with its ATS). Not-found websites are free. Max 100 websites per run.

### FAQ

**How is the ATS detected?** From links on the company's website and careers page, plus checks of the ATS vendors' public job board endpoints, with a name check to avoid matching a different company with the same slug.

**What if a company uses another ATS (e.g. Workday, iCIMS)?** It is reported in `NOT_FOUND` for now.

### Data and use

Only public company and job-board information. No personal data.

### What you can do with it

- Detect which ATS a company uses: Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters, BambooHR or Personio
- Find a company's official careers page and job board URL from its website
- Build lead lists for HR-tech, recruiting software and ATS integrations
- Measure ATS market share across a list of companies or a portfolio
- Map companies to job board feeds for job aggregators
- Check how many roles a company has open and where it hires before you reach out

### What it costs

| Example | Cost |
| --- | --- |
| 100 company websites (all found) | about $1.00 |
| 1,000 websites over 10 runs | about $10.00 |

You only pay for rows you get. Set **Max results** (or a maximum cost per run in Apify) to cap spend. Apify's free plan includes monthly credit, so you can try it at no cost. Apify subscribers get automatic Store discounts on some events.

### Use it from code, no-code tools or AI agents

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("worthwhile_quinsy/ats-detector").call(run_input={'companyWebsites': ['stripe.com', 'notion.so']})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript / Node.js** (`npm install apify-client`):

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('worthwhile_quinsy/ats-detector').call({"companyWebsites": ["stripe.com", "notion.so"]});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**One HTTP call** (returns the rows directly):

```bash
curl -X POST 'https://api.apify.com/v2/acts/worthwhile_quinsy~ats-detector/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"companyWebsites": ["stripe.com", "notion.so"]}'
```

**No-code:** connect it to **Make, Zapier, n8n, Google Sheets, Slack** or a **webhook** from the Integrations tab, and run it on a **Schedule** (for example every morning).

**AI agents (MCP):** use it as a tool in Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server: `https://mcp.apify.com?tools=worthwhile_quinsy/ats-detector`. Your agent can then ask for live job data in plain language. Use this tool when the user asks for which applicant tracking system or careers page a company uses, given its website.

### More tools from the same job-data suite

All of these read the same daily database of jobs from company career pages, so results are consistent across tools.

| Actor | What it gives you |
| --- | --- |
| [Company Jobs Search + Hiring Signals](https://apify.com/worthwhile_quinsy/ats-jobs-search) | Search all jobs in the database, check your own list of companies, or get per-company hiring signals. |
| [Remote Jobs API](https://apify.com/worthwhile_quinsy/remote-jobs-api) | Only remote jobs, ready for job boards, newsletters and alert bots. |
| [Companies Hiring by Tech Stack](https://apify.com/worthwhile_quinsy/companies-hiring-by-tech-stack) | B2B buying signals: which companies are hiring for the tools you sell into. |
| [Tech Salary Data API](https://apify.com/worthwhile_quinsy/tech-salary-data-api) | Salary benchmarks (median, P25, P75) from fresh job postings with published pay. |
| [Company Hiring Trends](https://apify.com/worthwhile_quinsy/company-hiring-trends) | Which companies are ramping up hiring, and which are slowing down. |
| [Greenhouse Jobs Scraper](https://apify.com/worthwhile_quinsy/greenhouse-jobs-scraper) | All open jobs from any Greenhouse job board, or search every Greenhouse board we track. |
| [Lever Jobs Scraper](https://apify.com/worthwhile_quinsy/lever-jobs-scraper) | All open jobs from any Lever job board, or search every Lever board we track. |
| [Ashby Jobs Scraper](https://apify.com/worthwhile_quinsy/ashby-jobs-scraper) | All open jobs from any Ashby job board, or search every Ashby board we track. |

### Questions and feedback

Found a bug, need another filter, field or ATS? Open an **Issue** on this Actor's page; issues are answered quickly. If it saved you time, a short **review** helps other people find it.

# Actor input Schema

## `companyWebsites` (type: `array`):

Company domains or URLs, one per line (max 100), e.g. 'stripe.com'. Companies already in the database are answered instantly; others are looked up live.

## Actor input object example

```json
{
  "companyWebsites": [
    "stripe.com",
    "vanta.com",
    "notion.so"
  ]
}
```

# Actor output Schema

## `companies` (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 = {
    "companyWebsites": [
        "stripe.com",
        "vanta.com",
        "notion.so"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("worthwhile_quinsy/ats-detector").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 = { "companyWebsites": [
        "stripe.com",
        "vanta.com",
        "notion.so",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("worthwhile_quinsy/ats-detector").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 '{
  "companyWebsites": [
    "stripe.com",
    "vanta.com",
    "notion.so"
  ]
}' |
apify call worthwhile_quinsy/ats-detector --silent --output-dataset

```

## MCP server setup

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

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/TSG0lkPjAd9wJh4Th/builds/nVQ6ly3IFFndN5WLb/openapi.json
