ATS Hiring Signals: Greenhouse, Lever & Ashby Jobs API
Pricing
from $1.00 / 1,000 job results
ATS Hiring Signals: Greenhouse, Lever & Ashby Jobs API
Turn company domains or names into open jobs from the official public Greenhouse, Lever and Ashby job-board APIs. Normalized jobs (annual USD salary, seniority, function), a per-company hiring summary with a transparent hiring-intent score, and new/closed job tracking between runs.
Pricing
from $1.00 / 1,000 job results
Rating
0.0
(0)
Developer
Dot Com
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Turn a list of company domains or names into open jobs and hiring signals. The Actor finds out whether each company uses Greenhouse, Lever or Ashby, then reads that ATS's official public job-board API. You get back:
- Normalized jobs: title, department, location, remote/hybrid/on-site, employment type, seniority, job function and published salary (also converted to annual USD).
- A per-company summary: open jobs by department, function and seniority, hiring velocity, salary transparency, and a transparent 0–100 hiring-intent score.
- Change tracking: jobs that are new or closed since your last run. Schedule it daily to monitor hiring.
There is no login, no scraping of job aggregators, no Workday and no LinkedIn. The Actor only reads the documented public endpoints that employers publish so others can build careers pages.
Use cases
- Sales prospecting (hiring intent): find accounts that are hiring sales, data or security people right now. Rank them by
hiringIntentScore. - Recruiting & talent intelligence: track competitors' openings, salary bands and new roles every day.
- Job boards & newsletters: a clean, deduplicated feed of direct employer postings with apply links.
- AI agents (MCP): inputs are simple strings, every output field is described, and summaries are compact enough to fit in a prompt.
Input
| Field | What it does |
|---|---|
companies | Domains (linear.app), URLs, names (Ramp), board URLs (https://jobs.lever.co/spotify) or tokens (greenhouse:airbnb, lever:palantir, ashby:ramp). |
boards | Optional known boards; these skip detection. |
titleKeywords, excludeTitleKeywords, locations, departments, workplace, seniority, postedWithinDays | Filters. |
includeDescriptions / descriptionFormat | Adds the full description as plain text or HTML. |
changeTracking, onlyNewJobs, emitChangeEvents, stateStoreName | Monitoring between runs. |
Example:
{"companies": ["linear.app", "Ramp", "greenhouse:discord"],"titleKeywords": ["engineer"],"workplace": "remote_or_hybrid","changeTracking": true}
Output
Results go to three datasets (see the Output tab).
- Jobs (default dataset): one record per matching job. Fields include
company,ats,jobId,title,department,location(s),workplaceType,employmentType,seniority,jobFunction,salaryMin/Max/Currency/Interval,salaryAnnualMinUSD/MaxUSD,salarySource,postedAt,url,isNew,firstSeenAtand optionallydescription. - Companies: one record per input. It has the detection result (
detectionMethod,detectionConfidence,detectionEvidence) and these signals:boardOpenJobs,byDepartment,byFunction,bySeniority,postedLast7/30/90DayssalaryTransparencyRate,medianSalaryAnnualUSDnewSinceLastRun,closedSinceLastRunhiringIntentScore, plus its components and the exact formula
- Changes:
job_added/job_removedevents since the previous tracked run.
Hiring-intent score (0–100)
The score is computed on the jobs that match your filters:
volume = 35 × min(1, log10(1+openJobs)/log10(201))freshness = 30 × postedLast30Days/openJobsmomentum = 25 × clamp(0.5 + 2.5 × (new − closed)/previousOpen, 0, 1). This is neutral (12.5) on the first run.leadership = 10 × min(1, director/VP/C-level openings / 5)
Every record includes the components, so you can re-weight them yourself.
How detection works
- Direct input: a board URL or
ats:tokenis used as given (confidence high). - Website links: the Actor reads the homepage and up to 4 careers pages (
robots.txtrespected) and looks for Greenhouse, Lever or Ashby board links or embeds (confidence high). - Slug probing: it tries likely tokens (from the domain or name) against the three APIs. Confidence is medium if the company name appears in the board data, low otherwise. Check low-confidence matches before relying on them. If plain tokens fail, common Greenhouse variants are tried too (
scaleai,doordashusa,andurilindustries,gleanwork). A variant is only accepted when the company name is confirmed in the board data.
Detections are cached in the state store for 14 days.
Pricing (pay per event)
| Event | Price |
|---|---|
| Company resolved (a board was found and read) | $0.002 |
| Job result (one job record) | $0.001 |
| Change event (job added/removed since last run) | $0.0005 |
Companies that aren't found, duplicates and summary records are free. Use Max jobs per company, Output only new jobs or the platform's maximum cost per run to cap spend. The Actor stops cleanly when the limit is reached and does not advance the change-tracking snapshot for companies it could not finish.
Limitations
- Only Greenhouse, Lever and Ashby are supported. Companies on Workday, SmartRecruiters, iCIMS, etc. come back as
not_found. - Name-only inputs rely on slug probing, so give domains when you can.
- Salaries appear only when the employer publishes them. Description-parsed salaries are marked
description_text. - Seniority and job function are rule-based classifications of the title. They are not taken from the ATS.
- Greenhouse
first_publishedcan reset when a job is reposted. Lever provides no "updated" date. - Very large Greenhouse boards (descriptions over about 20 MB, e.g. 2,000+ jobs) are fetched without descriptions. A note on the company record says so.
- Large boards produce many
job-resultevents. UsemaxJobsPerCompanyor filters to cap the cost. - Lever EU boards need the
lever:eu:<token>form or ajobs.eu.lever.coURL; probing checks the global instance only. - USD conversion uses European Central Bank reference rates of the day. If those rates can't be fetched, only USD salaries get USD values.
Data sources & attribution
- Greenhouse Job Board API: https://developers.greenhouse.io/job-board.html. It states that "Job Board data is publicly available, so authentication is not required for any GET endpoints."
- Lever Postings API: https://github.com/lever/postings-api. Requests to
api.lever.coare limited to 1 per second, following its robots.txtCrawl-delay: 1. - Ashby Job Posting API: https://developers.ashbyhq.com/docs/public-job-posting-api
- Exchange rates: European Central Bank euro reference rates (source: ECB).
Job content belongs to the employers who publish it. Use it in line with each employer's terms and applicable law. The Actor identifies itself with the User-Agent ATSHiringSignals/1.0.
Resumen en español
ATS Hiring Signals convierte una lista de dominios o nombres de empresa en ofertas de empleo abiertas y señales de contratación. Detecta si la empresa usa Greenhouse, Lever o Ashby y lee sus APIs públicas oficiales, sin login ni scraping de LinkedIn.
Devuelve:
- ofertas normalizadas (salario anualizado en USD, nivel de seniority, área funcional, remoto/híbrido/presencial);
- un resumen por empresa con una puntuación de intención de contratación (0–100) con fórmula transparente;
- las ofertas nuevas y cerradas desde la última ejecución.
Ideal para prospección B2B, reclutamiento y agentes de IA.
Precio: $0.002 por empresa encontrada, $0.001 por oferta y $0.0005 por cambio detectado.