Job Board & ATS Finder by Company (Greenhouse, Lever, Ashby)
Pricing
from $5.00 / 1,000 job board founds
Job Board & ATS Finder by Company (Greenhouse, Lever, Ashby)
Turn company names or websites into their public job board: which ATS (Greenhouse, Lever, Ashby, Workable, SmartRecruiters), the board slug and URL, open-job count and confidence. Reads the careers page and verifies against the vendors' public APIs. Output plugs into ATS Jobs Feed.
Pricing
from $5.00 / 1,000 job board founds
Rating
0.0
(0)
Developer
Vellum Kasane
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Job Board & ATS Finder by Company (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio)
Give it company names or websites and get back where each company's public job board lives: the ATS vendor (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee or Personio), the board slug, the board URL and API URL, the number of open jobs, sample titles and a confidence level. Every answer is verified against the vendor's public job-board API, so a found: true record is a live board you can pull jobs from right away.
Typical questions it answers:
- "Which ATS does Notion use, and what is their board slug?" ->
ashby/notion/ 128 open jobs. - "Give me the Greenhouse, Lever and Ashby slugs for these 300 companies so I can watch their hiring."
- "Which of my target accounts use an ATS I cannot read (Workday, iCIMS, Taleo, SuccessFactors...)?"
The output is designed to feed the ATS Jobs Feed Actor: each record carries a feed_input object ({ "ats": "ashby", "slug": "notion" }) that you can paste straight into its companies input to get every job as Markdown, with a new / updated / closed diff on a schedule.
Output example
One dataset record per company (JSON, CSV, Excel or HTML download):
{"query": "Notion","company_name": "Notion","website": null,"found": true,"ats": "ashby","slug": "notion","region": null,"board_url": "https://jobs.ashbyhq.com/notion","api_url": "https://api.ashbyhq.com/posting-api/job-board/notion","board_name": null,"open_jobs": 128,"confidence": "medium","evidence": ["api-probe:ashby:notion"],"sample_titles": ["Account Executive, Mid-Market", "Software Engineer, Infrastructure", "Product Designer"],"other_boards": [{"ats": "workable","slug": "notion","open_jobs": 0,"confidence": "medium","board_name": "Notion","board_url": "https://apply.workable.com/notion/"}],"ats_hints": [],"other_ats": [],"feed_input": { "ats": "ashby", "slug": "notion" },"pages_read": [],"pages_skipped_by_robots": [],"slugs_tried": ["notion"],"probes": 5,"errors": [],"fetched_at": "2026-09-28T04:30:12.000Z"}
Pricing
Pay-per-event. You pay per company checked, never per request the Actor makes on your behalf:
| Event | Price | When |
|---|---|---|
board-found | $0.005 per company | The company resolved to a live board (verified on the vendor API) with open jobs, or linked from its own site. |
company-checked | $0.001 per company | Every vendor was checked and no board was found. The record is still written (with ats_hints and other_ats). |
| Actor start | $0.01 per run | Apify's standard start event. |
A list of 200 companies of which 150 resolve costs about $0.81. Use Max total charge per run to hard-cap spend; the Actor stops gracefully before exceeding it.
How to find a company's job board and ATS
- Paste company names, domains or careers-page URLs into Companies (one JSON array). Strings are enough:
"PostHog","blueground.com","https://linear.app/careers". Objects add hints:{ "name": "GitLab", "website": "about.gitlab.com", "slugs": ["gitlab-inc"], "ats": "greenhouse" }. - Click Start. For every company the Actor:
- reads up to 5 pages of the company's own website when you gave one (home,
/careers,/jobs, plus careers links found on the home page), respectingrobots.txt, and extracts links to the five vendors' hosted boards; - derives board-slug guesses from the name and domain (
Hugging Face->huggingface,hugging-face,hugging;about.gitlab.com->gitlab) and probes each vendor's public job-board API with them; - keeps the boards the vendors confirm, grades the confidence, and picks the best one (boards with open jobs first, then confidence, then size).
- reads up to 5 pages of the company's own website when you gave one (home,
- Open the Output tab or download the dataset.
SUMMARY.jsonin the key-value store lists every company with the result and the number of probes.
Runs are fast: about 1-3 seconds per company with a website, under a second without.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
companies | array | required | Strings ("Acme", "acme.com", "https://acme.com/careers") and/or objects { name, website, slugs, ats }. Duplicates (same name + host) are checked once. |
atsList | array | all seven | Restrict to some vendors, e.g. ["greenhouse", "lever"]. |
probeWebsite | boolean | true | Read the company site for board links (only when a website is given). |
maxSlugGuesses | integer | 4 | Slug variants tried per vendor. Raise to 6-8 for companies with long or unusual names. |
includeSampleTitles | boolean | true | Include up to 5 job titles per board, useful to confirm it is the right company when the slug is generic. |
maxCompanies | integer | 100 | Hard cap per run (also caps your cost). |
Output fields
| Field | Meaning |
|---|---|
found | true when a live board with open jobs was verified on a vendor API, or the company's site links to a (possibly empty) board. |
ats, slug, region | Best board. region is eu for Lever EU boards (jobs.eu.lever.co). |
board_url / api_url | The vendor-hosted careers page and the public JSON endpoint that verified it. |
board_name | Company name as the vendor publishes it. Only Greenhouse, Workable and SmartRecruiters expose it; Lever and Ashby return null. |
open_jobs | Listed jobs on the board at fetch time (Ashby: listed only; SmartRecruiters: totalFound). |
confidence | high: linked from the company's own site, or the vendor's board name matches the company name. medium: slug equals the normalised name or domain, or the site references the vendor. low: a live board on a guessed slug with nothing else. Boards with 0 open jobs are capped at medium. |
evidence | website-link:<page>, api-probe:<ats>:<slug>, website-hint:<ats>. |
other_boards | Other live boards for the company (a dormant Workable account, a second Greenhouse board, ...), same fields. |
ats_hints | Vendors referenced on the website without a resolvable slug (e.g. an embedded Greenhouse widget on a custom domain). |
other_ats | Unsupported vendors detected on the website: workday, icims, taleo, successfactors, bamboohr, personio, recruitee, teamtailor, jobvite, breezy, rippling, jazzhr, join, welcometothejungle, pinpoint, dover, hibob, freshteam. |
feed_input | { ats, slug[, region] } for the ATS Jobs Feed Actor. |
pages_read / pages_skipped_by_robots / slugs_tried / probes / errors | What the Actor did for this company, for auditing. A company with errors may still be found. |
Limitations (read before you rely on it)
- Seven vendors only. Companies on Workday, iCIMS, Taleo, SuccessFactors, BambooHR, Teamtailor, Jobvite and similar are reported as
found: falsewith the vendor inother_atswhen their website reveals it. There is no public job-board API to verify those. - Slug guessing is heuristic. A company whose board slug is unrelated to its name (
acme-corp-2019) and whose website does not link to the board will not be found. Give the website (best), or pass the slug inslugs. - Name collisions. A live board on a guessed slug can belong to another company with the same name. Check
confidence,board_nameandsample_titles; preferhigh. - Dormant accounts. Many companies keep an old account on a second vendor (often Workable) with zero jobs. A board with 0 open jobs counts as found only when the company's own website links to it; otherwise it is listed in
other_boards, the record isfound: falseand billed ascompany-checked. - SmartRecruiters answers every company id with an empty list, so a SmartRecruiters board with zero open postings cannot be detected and is reported as not found.
- Websites are read politely, not rendered. Up to 5 pages per company, no JavaScript execution,
robots.txthonoured (User-agent: ats-job-board-finderor*), one request at a time per site. Careers pages that only render the board via JavaScript contribute nothing; the API probes still run. - Rate limits. The vendors do not document limits on these endpoints. The Actor makes at most
maxSlugGuesses x 5small requests per company, three companies at a time, and retries 429 / 5xx with backoff. Runs with thousands of companies take a few minutes; lists above 5,000 must be split. - No proxies, no logins, no personal data. Only public job-board endpoints and public web pages are read.
Tips
- Bulk mapping: paste a column of domains from your CRM; a website beats a name because the careers page is read first.
- Only Greenhouse and Lever slugs: set
atsListto["greenhouse", "lever"]to halve the probes. - Chain into a feed: a second Actor run of ATS Jobs Feed with
companies= thefeed_inputvalues (filterfound == true) turns the list into a scheduled new / updated / closed job feed. - Fast triage of unsupported vendors:
probeWebsite: true, then filter the dataset onother_atsto see who is on Workday or SuccessFactors.
Data sources
| Vendor | Endpoint probed | Documentation |
|---|---|---|
| Greenhouse | GET https://boards-api.greenhouse.io/v1/boards/{slug}/jobs and /v1/boards/{slug} | https://docs.greenhouse.io/job-board.html |
| Lever | GET https://api.lever.co/v0/postings/{slug}?mode=json (EU: api.eu.lever.co) | https://github.com/lever/postings-api |
| Ashby | GET https://api.ashbyhq.com/posting-api/job-board/{slug} | https://developers.ashbyhq.com/docs/public-job-posting-api |
| Workable | GET https://apply.workable.com/api/v1/widget/accounts/{slug} | https://workable.readme.io/reference/jobs-1 |
| SmartRecruiters | GET https://api.smartrecruiters.com/v1/companies/{slug}/postings?limit=5 | https://developers.smartrecruiters.com/docs/endpoints |
| Recruitee | GET https://{slug}.recruitee.com/api/offers/ | https://docs.recruitee.com/reference/offers |
| Personio | GET https://{slug}.jobs.personio.de/xml (or .jobs.personio.com) | https://developer.personio.de/docs/retrieving-open-job-positions |
All endpoints are public and documented by the vendors; no API keys are needed or accepted.
Verified
Version 0.2 (2026-10-02): Recruitee and Personio added to the probes and the careers-page link patterns (shared code with ATS Jobs Feed 0.4). Local run with the prefill input plus { "name": "Channable", "website": "channable.com" } and { "name": "Personio", "website": "personio.com" } and "bunq" (11 companies): 11 found, 0 not found in about 10 seconds; Channable -> recruitee:channable (10 open jobs, high, link found on channable.com), bunq -> recruitee:bunq (14, high), Personio -> personio:personio (1, medium). The eight original companies resolved exactly as in 0.1. Unit tests: 12.
Local run on 2026-09-28 with apify run --purge (Apify CLI 1.10, SDK 3.7.2, Node 24), prefill input (8 companies): all 8 resolved in about 5 seconds - PostHog -> ashby (8 jobs), Linear -> ashby (30), https://stripe.com -> greenhouse (699, high), blueground.com -> workable (10, high), SmartRecruiters -> smartrecruiters (1), GitLab -> greenhouse (200, high), Spotify -> lever (80), Notion -> ashby (128). Dormant Workable accounts with 0 jobs existed for six of the eight names and were correctly ranked into other_boards. Unit tests: npm test (11 tests: website parsing, slug candidates, careers-page link extraction, robots.txt rules, confidence and ranking).
Support
Open an issue on the Actor's Issues tab. Issues are answered within one business day; fixes ship as new builds without changing the input schema.
Made by Vellum Labs. Part of the same family as ATS Jobs Feed (jobs from the boards this Actor finds) and HN Threads & Hiring.