Pricing
from $20.00 / 1,000 company scanneds
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
Actor stats
0
Bookmarked
5
Total users
1
Monthly active users
3 months ago
Last modified
Categories
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 Scraper | This 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 dump | Actionable intent event with confidence score |
| Runs once, gives a snapshot | Tracks changes over time, alerts on what's new |
| You filter 500 rows manually | You 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
| Platform | Method | Auth Required | Proxy Needed | Region |
|---|---|---|---|---|
| Greenhouse | Official Job Board API | No | No | Global |
| Lever | Official Postings API | No | No | US + EU |
| Ashby | Official Public API | No | No | Global |
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
| Trigger | Fires When | Recommended Angle |
|---|---|---|
first_revops_buildout | First Sales Ops / CRM / Salesforce role appears | CRM, pipeline visibility, forecasting |
sales_team_expansion | 3+ new sales roles posted | Sales enablement, lead gen, outreach tools |
marketing_ramp | 2+ new marketing roles posted | Marketing automation, ABM, analytics |
Engineering Pack β Dev, Security, Data, AI signals
| Trigger | Fires When | Recommended Angle |
|---|---|---|
ai_platform_buildout | First ML/AI/LLM role appears | MLOps, GPU infra, vector DBs, LLM tooling |
first_security_hire | First security role with no prior security team | SIEM, compliance, identity management |
engineering_surge | 5+ new engineering roles posted | Dev tools, CI/CD, cloud infra, observability |
data_team_buildout | 2+ new data roles posted | Data warehousing, ETL, BI platforms |
Expansion Pack β Geo, Leadership, New Functions
| Trigger | Fires When | Recommended Angle |
|---|---|---|
geo_expansion | Jobs posted in previously unseen locations | Localization, compliance, local partnerships |
leadership_hiring | 2+ director/VP/C-level roles posted | Org restructuring, strategic planning |
new_function_launch | Entirely new function (e.g. legal, finance) appears | Function-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
| Field | Type | Default | Description |
|---|---|---|---|
companies | array | required | List of companies to monitor. Each needs name and ideally boardUrl. |
changesOnly | boolean | false | Only output companies with changes since last run. Ideal for scheduled alerts. |
triggerPack | string | "all" | Which triggers to run: all, gtm, engineering, or expansion. |
minConfidence | number | 0.3 | Only report signals above this confidence (0.0 - 1.0). |
maxCompaniesPerRun | integer | 100 | Cap companies per run to control cost. Max 1000. |
emitSignalsOnFirstScan | boolean | false | Emit signals even on the first scan (normally suppressed for baseline). |
snapshotNamespace | string | auto | Custom namespace for snapshot storage. Useful for separate monitoring contexts. |
Company Object
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Company name |
domain | string | No | Company domain (e.g. stripe.com). Used for auto-detection. |
boardUrl | string | No | Direct ATS board URL. Recommended for reliable detection. |
tags | string[] | No | Custom 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
| Field | Type | Description |
|---|---|---|
company | string | Company name |
domain | string | Company domain |
tags | string[] | User-provided tags |
provider | string | ATS provider (greenhouse, lever, ashby) |
slug | string | ATS board slug |
boardUrl | string | Full ATS board URL |
intentEvent | string | Primary trigger ID (e.g. first_revops_buildout) or no_signal |
intentLabel | string | Human-readable trigger label |
signalScore | number | 0-100 composite signal score |
signalStrength | string | high, medium, low, or none |
confidence | number | Confidence of the primary signal (0.0 - 1.0) |
whyNow | string[] | Evidence array explaining why this signal fired |
recommendedAngle | string | Suggested outreach angle or use case |
allSignals | object[] | All detected signals (not just primary) |
newRoles | number | New roles since last scan |
removedRoles | number | Removed roles since last scan |
netChange | number | Net headcount change |
totalOpenRoles | number | Current total open roles |
previousOpenRoles | number | Total open roles at last scan |
isFirstScan | boolean | Whether this is the first scan for this company |
functionDistribution | object | Role count by function (engineering, sales, data...) |
newJobDetails | object[] | Detailed new job info (only in changesOnly mode) |
scannedAt | string | ISO timestamp of this scan |
snapshotAge | string | ISO 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:
- Set up a schedule β daily or weekly in Apify Console
- Enable
changesOnly: trueβ only companies with new activity appear in output - Connect webhooks β pipe results to Slack, email, HubSpot, or Salesforce via Make/Zapier
- 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.
| Scenario | Charge |
|---|---|
| Company scanned, results returned | 1 event |
| ATS board not found (skipped) | 0 |
changesOnly mode, no changes (skipped) | 0 |
| Suspicious data drop (skipped for confirmation) | 0 |
| Error during processing | 0 |
Cost Examples ($0.02 per company-scanned)
| Companies | Frequency | Events/Month | Est. Cost |
|---|---|---|---|
| 50 | Daily | ~1,500 | ~$30/mo |
| 100 | Daily | ~3,000 | ~$60/mo |
| 200 | Daily | ~6,000 | ~$120/mo |
| 200 | Weekly | ~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
