Siftsmith
← Hiring Signals

Find which ATS a company uses, and whether it’s hiring

Most companies publish their open roles through an applicant tracking system (ATS) such as Greenhouse, Lever or Ashby. Once you know which one and the company’s board name, its open jobs are one public request away. This page shows how to find both by hand, how to read the job count and posting dates yourself, and how to do it for a whole account list in one run.

Why the ATS is the useful part

A careers page tells you a company is hiring. The ATS behind it tells you how much: the job board has every open role with its department, location and the date it was published, usually in a public JSON feed. That’s what makes hiring usable as a signal:

Find the ATS by hand

1. Open the careers page and click through to a job

Try /careers and /jobs on the company’s domain, or the Careers link in the footer. Then open any job or its Apply button and look at the address bar. Most ATSs host the board on their own domain, with the company’s board name (the “slug”) in the URL:

The URL looks likeATS
boards.greenhouse.io/slug or job-boards.greenhouse.io/slugGreenhouse
jobs.lever.co/slugLever
jobs.ashbyhq.com/slugAshby
apply.workable.com/slugWorkable
jobs.smartrecruiters.com/slugSmartRecruiters
slug.breezy.hrBreezy HR
slug.jobs.personio.dePersonio
tenant.wdN.myworkdayjobs.com/siteWorkday

Enterprise systems such as iCIMS, Oracle Taleo and SAP SuccessFactors show up too, usually on their own vendor domains. Their boards have no simple public feed like the ones below, so this guide doesn’t cover them.

2. If the jobs sit on the company’s own domain

Many companies embed the board in their own site, so the address bar shows nothing useful. View the page source (Ctrl+U, or Cmd+Option+U on a Mac) and search for greenhouse, lever.co, ashbyhq, workable or myworkdayjobs. ramp.com/careers, for example, links each role to jobs.ashbyhq.com/ramp/…, so Ramp is on Ashby with the slug ramp.

3. Read the open jobs from the public API

Greenhouse, Lever and Ashby each publish a no-login JSON feed of a board’s open jobs, meant for companies to show jobs on their own sites. With the slug, one request tells you whether the company is hiring and how much:

# Greenhouse: total open jobs
curl -s https://boards-api.greenhouse.io/v1/boards/stripe/jobs | jq '.meta.total'

# Lever: the response is an array of postings
curl -s "https://api.lever.co/v0/postings/palantir?mode=json" | jq 'length'

# Ashby
curl -s https://api.ashbyhq.com/posting-api/job-board/ramp | jq '.jobs | length'

On 27 September 2026 those returned 702 (Stripe), 321 (Palantir) and 158 (Ramp). A slug that doesn’t exist returns HTTP 404 on all three. For “how fast”, each job carries a date: first_published on Greenhouse, createdAt on Lever (milliseconds since 1970) and publishedAt on Ashby. Count how many fall in the last 30 days and you have a posting rate.

Two traps. An empty board is not proof a company exists on that ATS: SmartRecruiters’ API answers any name, including made-up ones, with "totalFound":0. And a slug you guessed can belong to a different company with the same name; Greenhouse’s /v1/boards/slug (without /jobs) returns the board’s own company name, so check it.

Check a whole list in one run

By hand this is a few minutes per company. For a 300-account territory it’s a day, and most of that time goes on guessing slugs across ATSs. Hiring Signals does the steps above for every company in your list and returns one row per input. Put names, domains or explicit boards into Companies on the Apify Store page, or send JSON through the API:

{
  "companies": ["stripe.com", "Ramp", "Palantir", "Hugging Face", "Apple"]
}

For each name or domain it tries likely slugs (Hugging Face becomes huggingface, hugging-face and hugging_face) on Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Breezy HR and Personio, keeps only boards with at least one open job, and compares the company name the board gives for itself with your input. Workday is never guessed: its URL has three parts that can’t be derived from a name, so pass it as workday:tenant:wdN:site from the careers URL. If you already know a board, pass it directly, e.g. greenhouse:stripe or lever:palantir.

What that run returned (27 September 2026)

InputatsboardCompanyNameopenJobspostedLast30dhiringScoreTop technologies
stripe.comgreenhouseStripe70228176SQL, Python, Java, Ruby, Salesforce
RampashbyRamp1586068Python, Salesforce, NetSuite, SQL, LLMs
PalantirleverPalantir Technologies3211462Python, Java, JavaScript, C++, TypeScript
Hugging FaceworkableHugging Face8338Python, TypeScript, Rust, C++, AWS
Applefound: false, not charged

All four matches came back with matchConfidence: "high". One row, trimmed (the full row also has departments, locations, seniority mix, up to 25 technologies and change tracking):

{
  "company": "Ramp",
  "found": true,
  "ats": "ashby",
  "slug": "ramp",
  "boardUrl": "https://jobs.ashbyhq.com/ramp",
  "boardCompanyName": "Ramp",
  "matchConfidence": "high",
  "openJobs": 158,
  "postedLast7d": 19,
  "postedLast30d": 60,
  "postedLast90d": 115,
  "hiringScore": 68,
  "bulkRepublish": false,
  "engineeringShare": 0.27,
  "remoteShare": 0.09,
  "topTechnologies": [
    { "name": "Python", "count": 29 },
    { "name": "Salesforce", "count": 26 },
    { "name": "NetSuite", "count": 24 }
  ]
}

And the Apple row (error text trimmed):

{
  "company": "Apple",
  "found": false,
  "error": "No public job board with open jobs found on Greenhouse, Lever,
    Ashby, Workable, SmartRecruiters, Breezy HR or Personio (Workday is
    never guessed). ... Not charged."
}

The run cost $0.20: four company reports at $0.05, Apple free. Things worth noticing:

Export as CSV, Excel or JSON, or pull the dataset from the API. ats and boardUrl answer the “which ATS” question for every company that was found.

What each row contains

What it is, and what it isn’t

Hiring Signals checks the companies you give it, live, at run time. It is not a database: it can’t answer “show me every company hiring a Snowflake engineer”. It reads only the public job boards of the eight ATSs above. It does not touch LinkedIn, Indeed or any other job site, and it doesn’t see roles a company only posts there.

If you need discovery across all companies, the job-data providers crawl and index postings for you:

ToolWhat it isPrice (official pricing page)
TheirStackSearchable database of job postings and technographicsFree plan with 50 company credits and 200 API credits a month; API plans from $49/month for 1,500 API credits. The API uses 1 credit per job and 3 per company returned.
PredictLeadsCompany datasets, job openings included, by API100 free API credits a month; then $0.04 per API credit with a $40 minimum monthly charge, falling with volume. One request for a company’s job openings is 1 credit.
Hiring SignalsLive check of a list you supply$0.05 per company whose board is found; not found is free; no subscription

A common pattern is to use a database to build the list and a live check to confirm who is hiring this week, since a database row can be days or weeks behind the board itself.

Competitor prices are from their public pricing pages, checked 27 September 2026: TheirStack pricing (credit usage from TheirStack’s credits docs), PredictLeads pricing.

What it costs

Company report$0.05 ($50 per 1,000), no subscription
Job row$0.002, only if you turn on individual jobs

A company is charged when a job board with at least one open job is found for it. These come back as free rows:

Set a maximum total charge for the run and you’re never charged past it. Once it’s reached, every input left over still gets a row with skipped: true, uncharged.

FAQ

How do I tell if a company is hiring right now?

Find its job board (steps 1 and 2 above) and count the open roles in the public feed. A board with roles published in the last few weeks is actively hiring; a board whose newest role is months old may just be keeping evergreen listings up. postedLast30d gives that number directly.

Which ATS does a company use if its careers page shows nothing?

Search the page source for the ATS domains listed above. If none appear, the company may use an ATS that isn’t in the table or an in-house system, and Hiring Signals will return it as not found, free.

Does it scrape LinkedIn?

No. It reads only the job-board APIs and feeds that the ATSs publish for showing jobs on company websites. No login, no personal data; the output is job and company information only.

What if it matches the wrong company?

Check boardCompanyName and boardUrl. Two companies with the same name can both come out high, and a medium match was not checked because the board gave no name. For generic names, pass the board explicitly.

Can I run it from Clay or a spreadsheet?

Yes: through Apify’s integrations (Clay, Make, Zapier) or the API. Using our tools in Clay has the steps.

Check your list on the Apify Store →