ATS Hiring Intent - Buying Signals (Greenhouse + 4 ATSes)
Pricing
from $8.00 / 1,000 enriched job fetcheds
ATS Hiring Intent - Buying Signals (Greenhouse + 4 ATSes)
Aggregates jobs across Greenhouse, Lever, Ashby, SmartRecruiters, and Workday with auto ATS detection from a domain. Gemini classifier emits per-company buying signals (expanding-sales, evaluating-CRM, platform-build-out). Monitor mode tracks 100s of companies weekly via KV deltas.
Pricing
from $8.00 / 1,000 enriched job fetcheds
Rating
5.0
(1)
Developer
Actor stats
2
Bookmarked
5
Total users
4
Monthly active users
25 days ago
Last modified
Categories
Share
What does ATS Hiring Intent do?
ATS Hiring Intent aggregates open job postings across five major applicant tracking systems β Greenhouse, Lever, Ashby, SmartRecruiters, and Workday β into one normalized feed and turns the raw job data into per-company buying signals ready for a sales / RevOps pipeline.
Give it a list of company domains. It auto-detects each company's ATS, pulls every open role, normalizes function and seniority across platforms, and (in signals mode) runs each role through Gemini 2.5 Flash to extract intent tags (expanding-sales, evaluating-CRM, series-B-build, platform-build-out, β¦) and infer the specific vendors / tech stack the company is buying or building on. One composite CompanySignal per refresh tells your reps which prospects just lit up β Stripe is expanding-sales (8/8 AE roles posted, AI-customer focus, vendor hypothesis: OpenAI, Anthropic, NVIDIA).
Zero anti-bot. Zero proxies needed by default. No login. Every data source is an official public ATS endpoint. Replaces $99-$15K/seat tools (Apollo, ZoomInfo, Bombora, Cognism) on the hiring-signal job-to-be-done.
Why use ATS Hiring Intent?
- B2B sales / SDRs β find every prospect actively hiring for a role that signals they're buying your product. Hiring 5 DevOps + 2 Platform Engineers = evaluating IaC + observability tooling. Hiring a VP Sales + 3 AEs = expanding GTM motion. Apollo only counts headcount; this actor explains what they're buying.
- RevOps & GTM intelligence β score your ICP list weekly, build prospect lists from buying-intent tags, replace your stale $1-5K/mo intent-data line item.
- Recruiters & talent intelligence β track hiring velocity at competitors, see which functions/seniorities they're loading up on.
- VC / corporate development β detect Series A β C ramp signals, exec hires, geographic expansion. Headcount-delta tracking with KV-checkpointed monitoring.
- Founders doing competitive intel β type a competitor's domain, see every open role, every detected vendor, every team they're scaling.
- AI / data teams β a clean 30+ field unified ATS schema across 5 platforms with deterministic taxonomy normalization. Drop straight into a vector store or BI tool.
How to use
- Pick a mode:
discoverβ given domains, detect which ATS each one uses (cheap onboarding pass).jobsβ fetch normalized jobs only, no AI.signalsβ jobs + Gemini intent tags + per-company composite signal (the value tier).monitorβ same assignalsbut only emits deltas vs. the previous run. Best with a daily/weekly schedule.
- Provide either
companyDomains(list of domains β auto-detected) oratsTargets(direct ATS slugs likegreenhouse:stripe,lever:palantir,ashby:linear,smartrecruiters:visa,workday:nvidia.wd5/NVIDIAExternalCareerSite). - Optionally filter by
keywordFilter,functionFilter(engineering / sales / β¦),seniorityFilter,locationFilter,remoteOnly,postedWithinDays. - Run. Results land in the default dataset with a
typefield discriminator:job,company_signal,ats_discovery, orchange_event. - Export as JSON, CSV, or Excel from the Apify Console β or pull via API / webhook.
- Want weekly intent updates? Set mode to
monitorand schedule the actor. Subsequent runs only emit new/changed/closed roles + the latest composite signal.
Free trial: the first 10 chargeable events of each run are on the house β enough to validate output shape and signal quality on a single small run before committing budget.
Input examples
1. Discover which ATS your top 5 prospects use.
{"mode":"discover","companyDomains":["stripe.com","linear.app","notion.so","vercel.com","anthropic.com"]}
2. Pull every open engineering role at 3 companies, no AI.
{"mode":"jobs","companyDomains":["stripe.com","anthropic.com","linear.app"],"functionFilter":["engineering"],"seniorityFilter":["senior","lead","principal"],"maxJobsPerCompany":100}
3. Generate weekly buying signals across a 50-company prospect list.
{"mode":"signals","companyDomains":["stripe.com","notion.so","linear.app","vercel.com","anthropic.com"],"maxJobsPerCompany":50,"intentBatchSize":20,"postedWithinDays":30}
4. Monitor 200 companies β emit deltas only on the second-and-subsequent run. (Schedule daily.)
{"mode":"monitor","companyDomains":["acme.com","..."],"maxJobsPerCompany":100,"remoteOnly":false}
5. Skip auto-detection β pass direct ATS targets.
{"mode":"signals","atsTargets":["greenhouse:stripe","lever:palantir","ashby:linear","smartrecruiters:visa","workday:nvidia.wd5/NVIDIAExternalCareerSite"]}
Output
Each row has a type discriminator. Sample enriched job record:
{"type":"job","sourceId":"d3bc1ced-3ce4-4086-a050-555055dbb1ff","company":"Linear","domain":"linear.app","atsPlatform":"ashby","atsSlug":"Linear","title":"Senior / Staff Fullstack Engineer","function":"engineering","seniority":"senior","department":"Product","team":"Engineering","location":"Europe","isRemote":true,"employmentType":"FullTime","postedDate":"2026-04-21T20:13:45.158+00:00","applyUrl":"https://jobs.ashbyhq.com/linear/d3bc1ced-3ce4-4086-a050-555055dbb1ff/application","intentTags":["platform-build-out","going-international"],"vendorSignals":["TypeScript","React","GraphQL","PostgreSQL","Redis","Kubernetes"],"intentSummary":"This role indicates a focus on expanding the core product platform and international growth.","enrichmentLevel":"enriched"}
Sample company_signal record:
{"type":"company_signal","company":"Stripe","atsPlatform":"greenhouse","atsSlug":"stripe","signal":"expanding-sales","confidence":1.0,"evidence":"8/8 open roles match this signal. Examples: Account Executive AI Sales, Account Executive AI Startups, Account Executive Commercial.","vendorHypothesis":["Stripe","OpenAI","Anthropic","NVIDIA","Shopify"],"openRolesCount":8,"newRolesLast30d":8,"topFunctions":[{"function":"sales","count":8}],"secondarySignals":[{"signal":"series-B-build","confidence":0.66,"evidence":"3/8 roles tagged."}]}
Data fields (selected)
| Field | Type | Notes |
|---|---|---|
type | enum | job | company_signal | ats_discovery | change_event |
company | string | Display name pulled from board metadata when available |
atsPlatform | enum | greenhouse | lever | ashby | smartrecruiters | workday |
function | enum | Normalized: engineering, sales, marketing, product, data, design, operations, support, finance, hr, legal, other |
seniority | enum | intern | junior | mid | senior | lead | principal | director | vp | cxo | unknown |
intentTags | array | 22-tag fixed taxonomy β see input schema for the full list |
vendorSignals | array | Specific vendor / tech names mentioned in the JD |
intentSummary | string | One-line plain-English takeaway from Gemini |
salaryMin / salaryMax / salaryCurrency | numbers + ISO code | When the ATS exposes pay bands (Greenhouse + Ashby do) |
applyUrl | string | Direct link to the application page |
signal (on company_signal) | enum | The dominant intent tag, or general-hiring / shrinking / stable |
vendorHypothesis | array | Top 8 vendors aggregated across the company's open roles |
changeType (on change_event) | enum | role-opened | role-closed | role-updated | salary-changed |
How much does it cost?
| Event | Price | Fires when |
|---|---|---|
apify-actor-start | $0.0001 | Once per run (per GB of memory) |
basic-job-fetched | $0.0015 | A normalized job is emitted (modes: jobs) |
enriched-job-fetched | $0.008 | A Gemini-enriched job is emitted (modes: signals, monitor) |
company-signal-event | $0.05 | Composite buying signal per company (modes: signals, monitor) |
change-event | $0.02 | Role opened / closed / updated vs. previous run (modes: monitor, or any mode with incrementalMode) |
ats-discovered | $0.005 | Domain β ATS detection record (mode: discover) |
First 10 chargeable events of every run are free (built-in trial counter β see the run log).
Typical run costs
| Scenario | Volume | Cost |
|---|---|---|
| Discover ATS for 50 prospects | 50 discoveries | $0.25 |
| Pull 50 roles each from 10 companies | 500 basic jobs | ~$0.75 |
| Weekly signals run, 50 companies Γ 40 roles | 2,000 enriched + 50 signals | ~$18.50 |
| Daily monitor, 200 companies Γ 30 roles, ~3 deltas/co/day | 600 changes + 200 signals/day | ~$22/day |
Comparison: Apollo Pro $99/seat/mo (no signals), ZoomInfo + Bombora $3-5K/mo, Clay Growth $1.5-2.5K/mo, Cognism + intent ~$2K/mo. The 50-company weekly run above costs ~$80/mo β same job-to-be-done, ~5-25Γ cheaper than every comparable.
Tips & advanced options
monitormode is built for scheduling. Set up an Apify schedule (daily or weekly), feed in your prospect list, and only pay for deltas + the latest composite signal. The first run charges full freight (everything is "new"); subsequent runs are deltas-only.- Workday note β Workday tenants live at
tenant.wd{N}.myworkdayjobs.comwhere N is 1-12. Useworkday:tenant.wdN/SiteSegmentform. Find thewdNfrom any URL on their careers page. Some Workday tenants throttle aggressive scraping β switch toRESIDENTIALproxy if you see 403s. - Auto-detection covers ~25K-30K companies out of the box (all Greenhouse, Lever, Ashby, SmartRecruiters customers + most Workday F500). For non-detectable domains, pass a direct
atsTargetsentry and the actor skips resolution. - Filter aggressively to control budget.
functionFilter,seniorityFilter,locationFilter,remoteOnly,postedWithinDaysall run before Gemini enrichment, so you only pay enrichment cost on the roles that matter. intentBatchSize= 20 is the cost-vs-latency sweet spot. Larger batches cost less per job but increase end-to-end latency.- Vendor signals are tools/tech mentioned in JDs, not necessarily companies the prospect is buying. A role mentioning "Salesforce" usually means they use Salesforce β sometimes it means they sell to Salesforce customers. Cross-check with
intentSummaryfor context. - Cross-ATS dedup β if the same company is somehow listed twice (rare), dedup by
(atsPlatform, atsSlug)downstream.
Legal & ToS
- Every ATS endpoint used by this actor is publicly published and intended for third-party career-site / aggregator use. No login or API key required.
- Greenhouse Job Board API, Lever Postings API, Ashby Public Job Posting API, and SmartRecruiters Posting API are all explicitly documented as public β see developers.greenhouse.io/job-board, github.com/lever/postings-api, developers.ashbyhq.com/docs/public-job-posting-api, developers.smartrecruiters.com/docs/posting-api.
- Workday CXS endpoints serve the same data as the public-facing careers page; we paginate at default 20-per-page with gentle 150ms pacing.
- The actor is intended for sales intelligence, recruiting research, and market analysis. Do not use the data to discriminate, harass, or auto-apply at scale.
- Job descriptions are Β© the posting employer. We store and re-emit them verbatim for analysis. Do not republish full JDs as your own content.
FAQ & support
Q: Which ATSes are supported in v1? A: Greenhouse, Lever, Ashby, SmartRecruiters, Workday. BambooHR, Recruitee, Teamtailor, Personio in v1.1.
Q: What's the difference between signals and monitor?
A: signals runs the full pipeline every time. monitor does the same but auto-enables incremental mode β on subsequent runs you only see new / changed / closed roles, plus the refreshed company-signal record. Use monitor for scheduled subscriptions.
Q: Why didn't my domain auto-detect?
A: ~10-15% of companies use custom careers pages that don't link to a known ATS host. Pass an atsTargets entry directly. Also try the discover mode in isolation β it tells you what was found and what failed.
Q: Can I get LinkedIn / Indeed jobs? A: No. This actor only scrapes companies' own ATS career pages. LinkedIn aggregations are heavily anti-botted and not worth the proxy cost. The data here is fresher anyway β it's the source ATS, not a 2nd-hand index.
Q: Will the intent classifier hallucinate tags?
A: The classifier is constrained to a fixed 22-tag taxonomy and instructed to return ["unknown"] if uncertain. We've validated against ~100 real postings; false-positive rate is < 5%. If you see noise, lower the intentBatchSize to 5-8 (smaller context = sharper inference).
Q: How do I report bugs?
A: Open an issue on the actor's Apify page. Include the input JSON and the offending record's sourceId + applyUrl.
Built with TypeScript on the Apify SDK. Zero proxies, zero anti-bot, native fetch. No headless browser, no CAPTCHA.
