ATS Detection - Applicant Tracking System & Job Board URL
Pricing
from $3.70 / 1,000 confirmed job boards
ATS Detection - Applicant Tracking System & Job Board URL
For recruiters, talent intelligence and CRM enrichment: feed it company domains and get which applicant tracking system runs their job board, what the board is called, its URL and how many roles are open now. The Greenhouse board named 'example' had 21 real jobs and nothing to do with example.com
Pricing
from $3.70 / 1,000 confirmed job boards
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
For recruiters, B2B sales teams and CRM enrichment: give it a list of company domains and get back which ATS runs each company's job board, under what board name, and how many roles are open right now — the one fact every other job-board Actor expects you to already know (stripe, spotify, monzo).
It proves ownership instead of guessing it. Measured on 2026-08-28 with the shipped build, 7 of 12 domains were confirmed and charged and 5 came back as free leads — four of those five have a real board this Actor could not prove, and you pay nothing for them. Confirmed in that run: stripe.com → Greenhouse stripe, 580 open; ramp.com → Ashby ramp, 137 open; notion.so → Ashby notion, 135 open.
Why guessing is not an option: a board named example exists on Greenhouse with 21 open jobs and has nothing to do with example.com (measured 2026-08-28 — a real board with real jobs). And a16z.com links the boards of eight portfolio companies from its own jobs page; treating "linked from their site" as ownership would report all eight as a16z's boards, and charge you for them.
Up to 500 domains per run. Feed it a list of domains from your CRM and you get a directory: ATS, board name, board URL, and how many roles are open right now. Export as JSON, CSV or Excel.
"What applicant tracking system does this company use?" and "what is their Greenhouse / Lever / Ashby / Workable board called?" are questions people answer by hand, one company at a time. This finds it.
What makes an answer trustworthy here
A board named example exists on Greenhouse with 21 open jobs. It has nothing to do with example.com. Guessing the board name from the domain and reporting a hit would have produced exactly that lie - measured on 2026-08-28, that is a real board with real jobs.
So this Actor separates two different claims, in two different columns:
| Column | Question it answers |
|---|---|
verified | Does a live board with this name exist on this ATS right now? (checked against the ATS's own API) |
confidence | Is it this company's board? |
confidence is one of:
confirmed-by-board-links-back- the board's job postings link to the company's own domainconfirmed-by-job-posted-on-company-site- a job link on the company's site resolves to a job that really is on that boardconfirmed-by-board-name-matching-domain- the company site links a board whose name is the company's own domain nameconfirmed-by-sole-board-link-on-company-site- the company site links exactly one board, and nothing suggests it belongs to anyone elselinked-on-company-site-but-not-attributable- the board is linked from the site, but the page also lists other companies' jobsname-match-only- the board name simply matches the domain and nothing else backs it up
rowType follows from that:
rowType | ok | Meaning | Charged? |
|---|---|---|---|
board-found | true | Confirmed to be this company's board | Yes |
unconfirmed-link | true | Linked from the site, but the page lists other companies' boards too - a lead | No |
name-match | true | A live board of that name exists, nothing else backs it up - a lead | No |
no-board-found | true | Nothing could be confirmed for this domain | No |
unavailable | false | The domain was unusable, or the ATS APIs could not be reached | No |
Why unconfirmed-link exists
A link on a company's page is not proof the board is theirs. Investor portfolios, accelerators, universities and partner pages all link job boards they do not own.
Measured on 2026-08-28: a16z.com links the job boards of eight portfolio companies (Figma, xAI, Anduril and others) from its own jobs page. Treating "it was linked from their site" as ownership would report all eight as a16z's boards - and charge for them. This Actor returns a16z's own board as board-found and the other eight as free unconfirmed-link leads, naming them rather than hiding them.
The same rule applies to job links: when a page references jobs from more than one board, none of those references are accepted as proof of ownership.
You are charged only for board-found rows. Leads, misses and errors are free.
How it looks up a board
- Guess from the domain (
stripe.com→stripe) and ask all four ATS APIs whether that board exists. Costs nothing to the company's own site. - Read the company's own pages (home page, then
/careers,/jobs,/careers/jobs,/company/careers, ...) and look for a link to a Greenhouse, Lever, Ashby or Workable board - or to an individual job on one. Careers links are followed one hop, including to a separate careers domain when it carries the company's name.robots.txtis fetched for every host that is about to be read and obeyed, a host that refuses once is not asked again, and the page budget is a hard cap. - Check every candidate against the ATS's own API. A link on a page is a claim, not a fact - only boards the ATS confirms are returned, with their live open-role count.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
domains | array | stripe.com, monzo.com, ramp.com, lyst.com | Company domains, up to 500. Full URLs work; only the host is used; duplicates are collapsed. |
tryDomainNameFirst | boolean | true | Probe the ATS APIs with the name guessed from the domain |
scanCareerPages | boolean | true | Read the company's own pages to confirm ownership |
maxPagesPerSite | integer | 4 | How many pages of the company's site to read before giving up |
respectRobots | boolean | true | Read robots.txt first and skip anything it disallows |
Output columns
rowType, ok, reason, domain, ats, boardSlug, boardName, boardUrl, openJobs, verified, foundVia, confidence, evidenceUrl, checkedAt
Every row has all 13 columns, including the misses - so the table never changes shape.
boardSlug is exactly what you feed into a job-scraping Actor afterwards; boardUrl is the page a human can open.
boardName is the company name the board itself declares - stripe comes back with "Stripe". It is the quickest way to confirm a board really belongs to the company you asked about, rather than to someone with a similar slug. Only Greenhouse and Workable publish it; Lever and Ashby do not, and those rows carry null rather than a name lifted from somewhere else in the response.
Measured, not estimated
Run on 2026-08-28 with the shipped build:
Twelve domains, one run, 44 seconds:
| Domain | Result |
|---|---|
stripe.com | Confirmed - Greenhouse stripe, 580 open; the board's jobs link back to stripe.com |
monzo.com | Confirmed - Greenhouse monzo, 66 open; the site links a board named after the company |
ramp.com | Confirmed - Ashby ramp, 137 open; a job on the site is on that board |
lyst.com | Confirmed - Workable lyst, 8 open; same |
notion.so | Confirmed - Ashby notion, 135 open; same |
linear.app | Confirmed - Ashby linear, 29 open; same |
a16z.com | Confirmed - Greenhouse a16z, 16 open, plus 8 portfolio boards returned as free unconfirmed-link leads |
gitlab.com, cloudflare.com, discord.com, posthog.com | Lead only (name-match). These boards are real, but those careers pages are rendered by JavaScript, so nothing in the HTML proves ownership. Not charged. |
example.com | Lead only (name-match). A Greenhouse board called example exists with 21 open jobs and has nothing to do with this domain. Not charged. |
7 of 12 domains confirmed and charged; 5 returned as free leads. Four of those five have a real board this Actor could not prove - that is the honest cost of not guessing, and you pay nothing for it.
Test suite: 79 checks across two files, plus 34 deliberate defects injected into the source, all 34 caught by the tests (re-run and verified 2026-09-01). The whole per-domain decision - robots handling, the page budget, and every ownership rule - is driven by fakes so each branch is exercised.
Next step: pull the jobs
boardSlug is exactly the input the companion Actor takes. Once you know a company's board, ATS Jobs API returns every open role from Greenhouse, Lever, Ashby and Workable in one identical 29-column schema - with the same rule that an empty board, a missing board and a failed fetch are three different answers.
// this Actor -> { "ats": "Greenhouse", "boardSlug": "monzo", "openJobs": 66 }// then -> { "boards": ["greenhouse:monzo"] }
Questions this answers
- Which ATS does a company use? -
atscolumn, checked against that ATS's own API. - What is their board called? -
boardSlug, the identifier every job-board tool asks for. - Are they hiring at all right now? -
openJobs, live at the moment of the run. - Is this really their board, or just a name that matches? -
confidence, and you are only charged when it is really theirs.
Typical uses
- Build a target list of companies and hand the
boardSlugvalues straight to a job-scraping Actor - Track which companies are hiring at all -
openJobsis live at the moment of the run - Enrich a CRM with a careers-page URL that is actually correct
- Find out which ATS a set of companies uses, for competitive or vendor research
Notes and limits
- Only publicly published job boards are read. Nothing requires a login.
- Companies whose careers page is rendered entirely by JavaScript, or whose root domain does not lead to a careers page at all, may not expose a board link in the HTML. A genuine board then comes back as
name-match- reported as a lead rather than upgraded by guesswork. Measured hit rate on the twelve domains above: 7 confirmed, 5 leads. - Duplicate domains in your input (
stripe.comandwww.stripe.com) are collapsed to one lookup, so you are never charged twice for the same company. - Greenhouse boards on the EU data-residency hosts (
job-boards.eu.greenhouse.io) are not covered yet. - Only Greenhouse, Lever, Ashby and Workable are covered today. Others come back as
no-board-found, which is stated plainly rather than implied.
Other tools by NeverEmpty
Every NeverEmpty Actor follows the same rule: it never returns an empty result to mean two different things, and it only charges for rows that actually carry an answer.
- ats-jobs-api - every open job from a Greenhouse, Lever, Ashby or Workable board, one schema
- website-contacts - emails, phones and social profiles from any website, no invented addresses
- domain-lookup - WHOIS, DNS, MX, SPF, DMARC and SSL expiry for a list of domains
Support
Open an issue on the Issues tab with the domain in question - it will be reproduced against the live sources before anything is changed.