ATS Hiring Intent - Buying Signals (Greenhouse + 4 ATSes) avatar

ATS Hiring Intent - Buying Signals (Greenhouse + 4 ATSes)

Pricing

from $8.00 / 1,000 enriched job fetcheds

Go to Apify Store
ATS Hiring Intent - Buying Signals (Greenhouse + 4 ATSes)

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

Omar Eldeeb

Maintained by Community

Actor stats

2

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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

  1. 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 as signals but only emits deltas vs. the previous run. Best with a daily/weekly schedule.
  2. Provide either companyDomains (list of domains — auto-detected) or atsTargets (direct ATS slugs like greenhouse:stripe, lever:palantir, ashby:linear, smartrecruiters:visa, workday:nvidia.wd5/NVIDIAExternalCareerSite).
  3. Optionally filter by keywordFilter, functionFilter (engineering / sales / …), seniorityFilter, locationFilter, remoteOnly, postedWithinDays.
  4. Run. Results land in the default dataset with a type field discriminator: job, company_signal, ats_discovery, or change_event.
  5. Export as JSON, CSV, or Excel from the Apify Console — or pull via API / webhook.
  6. Want weekly intent updates? Set mode to monitor and 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)

FieldTypeNotes
typeenumjob | company_signal | ats_discovery | change_event
companystringDisplay name pulled from board metadata when available
atsPlatformenumgreenhouse | lever | ashby | smartrecruiters | workday
functionenumNormalized: engineering, sales, marketing, product, data, design, operations, support, finance, hr, legal, other
seniorityenumintern | junior | mid | senior | lead | principal | director | vp | cxo | unknown
intentTagsarray22-tag fixed taxonomy — see input schema for the full list
vendorSignalsarraySpecific vendor / tech names mentioned in the JD
intentSummarystringOne-line plain-English takeaway from Gemini
salaryMin / salaryMax / salaryCurrencynumbers + ISO codeWhen the ATS exposes pay bands (Greenhouse + Ashby do)
applyUrlstringDirect link to the application page
signal (on company_signal)enumThe dominant intent tag, or general-hiring / shrinking / stable
vendorHypothesisarrayTop 8 vendors aggregated across the company's open roles
changeType (on change_event)enumrole-opened | role-closed | role-updated | salary-changed

How much does it cost?

EventPriceFires when
apify-actor-start$0.0001Once per run (per GB of memory)
basic-job-fetched$0.0015A normalized job is emitted (modes: jobs)
enriched-job-fetched$0.008A Gemini-enriched job is emitted (modes: signals, monitor)
company-signal-event$0.05Composite buying signal per company (modes: signals, monitor)
change-event$0.02Role opened / closed / updated vs. previous run (modes: monitor, or any mode with incrementalMode)
ats-discovered$0.005Domain → 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

ScenarioVolumeCost
Discover ATS for 50 prospects50 discoveries$0.25
Pull 50 roles each from 10 companies500 basic jobs~$0.75
Weekly signals run, 50 companies × 40 roles2,000 enriched + 50 signals~$18.50
Daily monitor, 200 companies × 30 roles, ~3 deltas/co/day600 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

  • monitor mode 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.com where N is 1-12. Use workday:tenant.wdN/SiteSegment form. Find the wdN from any URL on their careers page. Some Workday tenants throttle aggressive scraping — switch to RESIDENTIAL proxy 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 atsTargets entry and the actor skips resolution.
  • Filter aggressively to control budget. functionFilter, seniorityFilter, locationFilter, remoteOnly, postedWithinDays all 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 intentSummary for context.
  • Cross-ATS dedup — if the same company is somehow listed twice (rare), dedup by (atsPlatform, atsSlug) downstream.
  • 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.