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
Omar Eldeeb
Maintained by CommunityActor stats
2
Bookmarked
4
Total users
1
Monthly active users
10 hours 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 3.5 Flash Lite 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.
Changelog
- October 2026: The intent classifier now uses Google Gemini 3.5 Flash Lite, because the provider retires Gemini 2.5 Flash on 2026-10-20. AI calls are retried on temporary errors and on incomplete answers. Billing correction: a job is charged as
enriched-job-fetchedonly when the AI classified it (as before), and acompany-signal-eventis no longer charged when the AI gave no answer for any of that company's jobs; the signal row is still delivered. If the AI provider rejects the key or runs out of credit, the run stops using AI, says so in its status message, and still delivers every job as a basic row. No output field was added, removed or renamed.