ATS Detection - Applicant Tracking System & Job Board URL avatar

ATS Detection - Applicant Tracking System & Job Board URL

Pricing

from $3.70 / 1,000 confirmed job boards

Go to Apify Store
ATS Detection - Applicant Tracking System & Job Board URL

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

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

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:

ColumnQuestion it answers
verifiedDoes a live board with this name exist on this ATS right now? (checked against the ATS's own API)
confidenceIs 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 domain
  • confirmed-by-job-posted-on-company-site - a job link on the company's site resolves to a job that really is on that board
  • confirmed-by-board-name-matching-domain - the company site links a board whose name is the company's own domain name
  • confirmed-by-sole-board-link-on-company-site - the company site links exactly one board, and nothing suggests it belongs to anyone else
  • linked-on-company-site-but-not-attributable - the board is linked from the site, but the page also lists other companies' jobs
  • name-match-only - the board name simply matches the domain and nothing else backs it up

rowType follows from that:

rowTypeokMeaningCharged?
board-foundtrueConfirmed to be this company's boardYes
unconfirmed-linktrueLinked from the site, but the page lists other companies' boards too - a leadNo
name-matchtrueA live board of that name exists, nothing else backs it up - a leadNo
no-board-foundtrueNothing could be confirmed for this domainNo
unavailablefalseThe domain was unusable, or the ATS APIs could not be reachedNo

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

  1. Guess from the domain (stripe.comstripe) and ask all four ATS APIs whether that board exists. Costs nothing to the company's own site.
  2. 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.txt is 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.
  3. 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

FieldTypeDefaultWhat it does
domainsarraystripe.com, monzo.com, ramp.com, lyst.comCompany domains, up to 500. Full URLs work; only the host is used; duplicates are collapsed.
tryDomainNameFirstbooleantrueProbe the ATS APIs with the name guessed from the domain
scanCareerPagesbooleantrueRead the company's own pages to confirm ownership
maxPagesPerSiteinteger4How many pages of the company's site to read before giving up
respectRobotsbooleantrueRead 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:

DomainResult
stripe.comConfirmed - Greenhouse stripe, 580 open; the board's jobs link back to stripe.com
monzo.comConfirmed - Greenhouse monzo, 66 open; the site links a board named after the company
ramp.comConfirmed - Ashby ramp, 137 open; a job on the site is on that board
lyst.comConfirmed - Workable lyst, 8 open; same
notion.soConfirmed - Ashby notion, 135 open; same
linear.appConfirmed - Ashby linear, 29 open; same
a16z.comConfirmed - Greenhouse a16z, 16 open, plus 8 portfolio boards returned as free unconfirmed-link leads
gitlab.com, cloudflare.com, discord.com, posthog.comLead 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.comLead 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? - ats column, 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 boardSlug values straight to a job-scraping Actor
  • Track which companies are hiring at all - openJobs is 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.com and www.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.