ATS Hiring Signal Radar avatar

ATS Hiring Signal Radar

Pricing

from $20.00 / 1,000 company scanneds

Go to Apify Store
ATS Hiring Signal Radar

ATS Hiring Signal Radar

Turn public ATS job changes into company-level hiring intent signals. Monitor Greenhouse, Lever, Ashby to detect first hires, team buildouts, geo expansion, and function-specific buying signals.

Pricing

from $20.00 / 1,000 company scanneds

Rating

0.0

(0)

Developer

Juyeop Park

Juyeop Park

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Monitor public ATS career pages and turn job posting changes into company-level hiring intent signals — so you know who is hiring, what they're building, and why it matters to you.

Why This Actor?

Job scrapers give you rows. This actor gives you answers.

Job ScraperThis Actor
"Acme has 23 open roles""Acme is building a RevOps team for the first time — they likely need CRM and pipeline tooling"
Raw job listing dumpActionable intent event with confidence score
Runs once, gives a snapshotTracks changes over time, alerts on what's new
You filter 500 rows manuallyYou get 5 high-signal accounts ready to act on

Zero proxies. Zero login. Zero maintenance. All data comes from official public ATS APIs — no anti-bot issues, no cookie management, no breakage.

Who Is It For

  • SDRs / Sales Teams — Find accounts showing buying intent before your competitors do
  • Recruiters / Talent Intelligence — Track which companies are ramping specific teams
  • Investors / Analysts — Monitor portfolio company growth and hiring velocity
  • Market Researchers — Detect industry trends from hiring patterns at scale

Supported ATS Platforms

PlatformMethodAuth RequiredProxy NeededRegion
GreenhouseOfficial Job Board APINoNoGlobal
LeverOfficial Postings APINoNoUS + EU
AshbyOfficial Public APINoNoGlobal

V2 roadmap: Workday, Rippling, BambooHR, JazzHR.

Key Features

10 Intent Triggers Across 3 Packs

Pre-built detection patterns that convert raw job deltas into named, explainable events:

GTM Pack — Sales, Marketing, RevOps signals

TriggerFires WhenRecommended Angle
first_revops_buildoutFirst Sales Ops / CRM / Salesforce role appearsCRM, pipeline visibility, forecasting
sales_team_expansion3+ new sales roles postedSales enablement, lead gen, outreach tools
marketing_ramp2+ new marketing roles postedMarketing automation, ABM, analytics

Engineering Pack — Dev, Security, Data, AI signals

TriggerFires WhenRecommended Angle
ai_platform_buildoutFirst ML/AI/LLM role appearsMLOps, GPU infra, vector DBs, LLM tooling
first_security_hireFirst security role with no prior security teamSIEM, compliance, identity management
engineering_surge5+ new engineering roles postedDev tools, CI/CD, cloud infra, observability
data_team_buildout2+ new data roles postedData warehousing, ETL, BI platforms

Expansion Pack — Geo, Leadership, New Functions

TriggerFires WhenRecommended Angle
geo_expansionJobs posted in previously unseen locationsLocalization, compliance, local partnerships
leadership_hiring2+ director/VP/C-level roles postedOrg restructuring, strategic planning
new_function_launchEntirely new function (e.g. legal, finance) appearsFunction-specific tooling, consulting

Snapshot Diffing

Automatically stores and compares job snapshots between runs:

  • New roles added since last scan
  • Roles removed (filled or closed)
  • Net headcount change
  • Function distribution shifts (engineering vs. sales vs. marketing...)

Signal Scoring

Each company receives a 0-100 signal score:

  • high (70+) — Strong hiring momentum with clear intent triggers
  • medium (40-69) — Notable changes worth monitoring
  • low (15-39) — Minor activity detected
  • none (0-14) — Stable or no meaningful changes

First Scan Behavior

On the first scan of a new company, the actor captures a baseline snapshot without emitting signals (to avoid false positives). Signals start firing from the second run onward. You can override this with emitSignalsOnFirstScan: true.

Input

Full Input Reference

FieldTypeDefaultDescription
companiesarrayrequiredList of companies to monitor. Each needs name and ideally boardUrl.
changesOnlybooleanfalseOnly output companies with changes since last run. Ideal for scheduled alerts.
triggerPackstring"all"Which triggers to run: all, gtm, engineering, or expansion.
minConfidencenumber0.3Only report signals above this confidence (0.0 - 1.0).
maxCompaniesPerRuninteger100Cap companies per run to control cost. Max 1000.
emitSignalsOnFirstScanbooleanfalseEmit signals even on the first scan (normally suppressed for baseline).
snapshotNamespacestringautoCustom namespace for snapshot storage. Useful for separate monitoring contexts.

Company Object

FieldTypeRequiredDescription
namestringYesCompany name
domainstringNoCompany domain (e.g. stripe.com). Used for auto-detection.
boardUrlstringNoDirect ATS board URL. Recommended for reliable detection.
tagsstring[]NoCustom tags for filtering (e.g. "competitor", "prospect", "portfolio")

Input Example

{
"companies": [
{
"name": "Stripe",
"domain": "stripe.com",
"boardUrl": "https://boards.greenhouse.io/stripe",
"tags": ["fintech", "competitor"]
},
{
"name": "Figma",
"boardUrl": "https://jobs.lever.co/figma",
"tags": ["design-tools", "prospect"]
},
{
"name": "Linear",
"boardUrl": "https://jobs.ashbyhq.com/linear",
"tags": ["dev-tools"]
}
],
"changesOnly": true,
"triggerPack": "all",
"minConfidence": 0.3,
"maxCompaniesPerRun": 100,
"emitSignalsOnFirstScan": false
}

Output

Each company produces one record in the dataset with the following fields:

Output Fields Reference

FieldTypeDescription
companystringCompany name
domainstringCompany domain
tagsstring[]User-provided tags
providerstringATS provider (greenhouse, lever, ashby)
slugstringATS board slug
boardUrlstringFull ATS board URL
intentEventstringPrimary trigger ID (e.g. first_revops_buildout) or no_signal
intentLabelstringHuman-readable trigger label
signalScorenumber0-100 composite signal score
signalStrengthstringhigh, medium, low, or none
confidencenumberConfidence of the primary signal (0.0 - 1.0)
whyNowstring[]Evidence array explaining why this signal fired
recommendedAnglestringSuggested outreach angle or use case
allSignalsobject[]All detected signals (not just primary)
newRolesnumberNew roles since last scan
removedRolesnumberRemoved roles since last scan
netChangenumberNet headcount change
totalOpenRolesnumberCurrent total open roles
previousOpenRolesnumberTotal open roles at last scan
isFirstScanbooleanWhether this is the first scan for this company
functionDistributionobjectRole count by function (engineering, sales, data...)
newJobDetailsobject[]Detailed new job info (only in changesOnly mode)
scannedAtstringISO timestamp of this scan
snapshotAgestringISO timestamp of previous snapshot

Output Example

{
"company": "Acme Corp",
"domain": "acme.com",
"tags": ["prospect", "series-b"],
"provider": "greenhouse",
"slug": "acmecorp",
"boardUrl": "https://boards.greenhouse.io/acmecorp",
"intentEvent": "first_revops_buildout",
"intentLabel": "First RevOps / Sales Ops Buildout",
"signalScore": 72,
"signalStrength": "high",
"confidence": 0.86,
"whyNow": [
"Sales Ops Manager posted",
"Salesforce Admin posted",
"BI Analyst posted"
],
"recommendedAngle": "CRM, pipeline visibility, forecasting, territory planning",
"allSignals": [
{
"triggerId": "first_revops_buildout",
"label": "First RevOps / Sales Ops Buildout",
"pack": "gtm",
"confidence": 0.86,
"evidence": ["Sales Ops Manager posted", "Salesforce Admin posted", "BI Analyst posted"],
"recommendedAngle": "CRM, pipeline visibility, forecasting, territory planning"
}
],
"newRoles": 5,
"removedRoles": 1,
"netChange": 4,
"totalOpenRoles": 23,
"previousOpenRoles": 19,
"isFirstScan": false,
"functionDistribution": {
"engineering": 8,
"sales": 5,
"revops": 3,
"marketing": 4,
"other": 3
},
"scannedAt": "2026-03-23T12:00:00.000Z",
"snapshotAge": "2026-03-22T12:00:00.000Z"
}

The run summary is stored separately in the Key-Value Store under the key RUN_SUMMARY:

{
"totalCompanies": 50,
"processed": 48,
"skipped": 1,
"signalsDetected": 12,
"errors": 1,
"triggerPack": "all",
"changesOnly": true,
"completedAt": "2026-03-23T12:05:00.000Z"
}

Scheduling for Monitoring

This actor is built for recurring scheduled runs:

  1. Set up a schedule — daily or weekly in Apify Console
  2. Enable changesOnly: true — only companies with new activity appear in output
  3. Connect webhooks — pipe results to Slack, email, HubSpot, or Salesforce via Make/Zapier
  4. Tune minConfidence — raise to 0.5+ if you want fewer, higher-quality alerts

Pricing

This actor uses pay-per-event (PPE) pricing with a single event: company-scanned.

You are charged once per company successfully processed. Companies that are skipped or fail are never charged.

ScenarioCharge
Company scanned, results returned1 event
ATS board not found (skipped)0
changesOnly mode, no changes (skipped)0
Suspicious data drop (skipped for confirmation)0
Error during processing0

Cost Examples ($0.02 per company-scanned)

CompaniesFrequencyEvents/MonthEst. Cost
50Daily~1,500~$30/mo
100Daily~3,000~$60/mo
200Daily~6,000~$120/mo
200Weekly~800~$16/mo

Changelog

v1.0.0

  • Initial release
  • Greenhouse, Lever (US + EU), Ashby support
  • 10 intent triggers across GTM, Engineering, Expansion packs
  • Snapshot diffing with signal scoring
  • First-scan baseline capture (false positive prevention)
  • Retry/timeout handling with exponential backoff
  • Namespaced snapshot storage for multi-context monitoring