Greenhouse Job Monitor & Hiring Intent Signals avatar

Greenhouse Job Monitor & Hiring Intent Signals

Pricing

from $2.00 / 1,000 ranked accounts

Go to Apify Store
Greenhouse Job Monitor & Hiring Intent Signals

Greenhouse Job Monitor & Hiring Intent Signals

Greenhouse job board monitor for sales teams. Rank B2B outbound accounts by hiring intent with explainable scores, outreach angles, and new job signals. Starter pack included — click Start to try free.

Pricing

from $2.00 / 1,000 ranked accounts

Rating

0.0

(0)

Developer

Alex, The Creator

Alex, The Creator

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

10 days ago

Last modified

Share

Monitor public Greenhouse job boards and turn job postings into ranked B2B outbound accounts with explainable hiring intent signals — scores, matched keywords, outreach angles, and new-vs-seen job deltas.

Built for SDR/AE outbound, RevOps account prioritization, and lead generation teams that want hiring activity as a practical sales signal (not just a raw job list).

Quick Start (2 Minutes)

  1. Click Start with defaults — a curated Greenhouse starter pack (Stripe, Figma, Datadog, Discord, MongoDB, and more) is already loaded.
  2. Open dataset view Ranked Accounts (overview) for a multi-company table with scores, categories, and outreach angles.
  3. Check key-value store record SUMMARY for run counters and ROI metrics.
  4. Replace greenhouseBoardTokens with your target companies for production runs.

Sample Output

Example ranked accounts from a default Greenhouse run:

CompanyScoreCategoriesOutreach AnglesMatched JobsTotal Jobs
Checkr157241659
Discord145241170
Launchpad Technologies13134412
Webflow8824421
Airtable8244429

Each row includes matched category names, keyword evidence, and ready-to-use outreach angles in the full dataset export.

Why Teams Use This

  • Prioritizes accounts with active hiring momentum.
  • Works with Greenhouse boards and existing Apify job datasets.
  • Produces explainable scoring with matched categories and keywords.
  • Tracks new-vs-seen changes so repeated runs surface fresh opportunities.
  • Ships run-level ROI counters in SUMMARY for stakeholder reporting.

Greenhouse Job Board Monitor

Use this Actor as a Greenhouse job board monitor that goes beyond scraping:

  • Ingests jobs from the public Greenhouse Job Board API (no login required for public boards).
  • Aggregates and deduplicates postings by company.
  • Ranks accounts using configurable hiring-intent rules (RevOps, security, data, growth, and more).
  • Surfaces outreach angles you can paste into sequences or CRM notes.

Already have jobs from another Actor? Switch to dataset mode and pass an Apify dataset ID.

Hiring Intent Signals for Outbound Sales

Each ranked account row is a lead-generation signal, not just a job listing:

SignalWhy it matters for outbound
scorePrioritize accounts with the strongest hiring-intent match
matchedCategoriesSee which themes fired (RevOps, security, growth, etc.)
outreachAnglesReady-made talk tracks tied to matched roles
newMatchedJobCountFocus on fresh opportunities vs stale boards
signals[]Evidence: titles, URLs, matched keywords per rule

Export results as JSON/CSV, schedule recurring runs, or route output into CRM and outreach automation.

FAQ

Does this monitor Greenhouse job boards?

Yes. Greenhouse mode reads public boards via the official Job Board API. Add board tokens (for example stripe, figma) or full board URLs.

Is this a Greenhouse scraper?

It extracts and ranks Greenhouse job board data, but the output is ranked B2B accounts with hiring intent scoring — designed for outbound prioritization, not raw job dumps.

Can I use LinkedIn or Indeed jobs?

Not directly. Use dataset mode with job data from another Apify Actor (or your own dataset), then map fields with fieldMapping.

What makes this different from a job posting scraper?

Job scrapers return listings. This Actor scores and ranks companies by hiring intent, tracks new-vs-seen changes across runs, and returns outreach-ready angles.

Is there a free trial?

Apify free credits apply. Defaults use a starter pack and capped output (maxAccounts: 50) for a fast first run.

What It Does

  • Ingests jobs from one of two sources:
    • Apify dataset (sourceDatasetId)
    • Greenhouse Job Board API (greenhouseBoardTokens)
  • Normalizes and deduplicates jobs.
  • Aggregates signals by company domain.
  • Scores accounts using configurable role rules.
  • Tracks new-vs-seen signals across runs using persisted state.
  • Outputs ranked accounts to the default dataset.
  • Writes run metrics and ROI metrics to SUMMARY in default key-value store.
  • Optionally posts digest and failure alerts to webhooks.

Best-Fit Use Cases

  • Outbound prospecting queues for SDR/AE teams.
  • Weekly account prioritization for RevOps.
  • Agency lead-list enrichment workflows.
  • Signal-driven routing into CRM or outreach automation.

Input Contract

Use the Actor input schema in the Apify run UI.

Source Selection

Provide exactly one source mode.

FieldTypeRequiredNotes
sourceModestringYesgreenhouse_api or dataset. Runtime validation enforces consistency with source fields.
sourceDatasetIdstringYes (if greenhouseBoardTokens is empty)Apify dataset ID with source job rows.
greenhouseBoardTokensstring[]Yes (if sourceDatasetId is empty)Greenhouse board tokens or board URLs. Example: webflow or https://boards.greenhouse.io/webflow.
greenhouseIncludeContentbooleanNoGreenhouse mode only. Default true. Includes full job description content when enabled.

Source selection is strictly XOR-validated at runtime (schema requires explicit sourceMode and mode guidance):

  • dataset mode: non-empty sourceDatasetId and empty greenhouseBoardTokens
  • greenhouse mode: non-empty greenhouseBoardTokens and empty sourceDatasetId

Default public run behavior:

  • The input UI is prefilled with a 10-company Greenhouse starter pack so first-time runs produce a compelling ranked overview without setup.
  • Defaults are tuned for a fast demo: maxSourceItems: 3000, maxAccounts: 50.
  • To use dataset mode, clear greenhouseBoardTokens and set sourceDatasetId.

Processing Controls

FieldTypeDefaultNotes
maxSourceItemsinteger3000Max source jobs to read in a run (hard-capped at 20000).
maxAccountsinteger50Max ranked accounts to output (hard-capped at 1000).
minAccountScoreinteger25Accounts below this score are dropped.

Dataset Mapping (dataset mode)

fieldMapping supports custom source key lookup for:

  • companyNameFields
  • companyDomainFields
  • companyUrlFields
  • jobTitleFields
  • jobUrlFields
  • locationFields
  • postedAtFields
  • descriptionFields

Scoring Rules

roleRules[] entries:

  • name
  • weight
  • keywords[]
  • negativeKeywords[] (optional)
  • outreachAngles[]

Delivery and Billing

FieldTypeDefaultNotes
slackWebhookUrlstring""Optional digest webhook.
digestTopNinteger10Number of rows in digest.
alertWebhookUrlstring""Optional failure alert webhook.

Billing note: pay-per-event charging uses a fixed internal event name (ranked-account) and is not configurable via Actor input.

Input Examples

Dataset Mode

{
"sourceMode": "dataset",
"sourceDatasetId": "abc123XYZ",
"maxSourceItems": 3000,
"maxAccounts": 150,
"minAccountScore": 25,
"fieldMapping": {
"companyNameFields": ["company", "companyName"],
"jobTitleFields": ["title", "jobTitle"],
"jobUrlFields": ["url", "jobUrl"]
},
"slackWebhookUrl": "",
"digestTopN": 10,
"alertWebhookUrl": ""
}

Greenhouse Mode

{
"sourceMode": "greenhouse_api",
"greenhouseBoardTokens": [
"stripe",
"figma",
"datadog",
"https://boards.greenhouse.io/discord"
],
"greenhouseIncludeContent": true,
"maxSourceItems": 3000,
"maxAccounts": 150,
"minAccountScore": 25
}

Source Row Shape (dataset mode)

A typical source row:

{
"companyName": "Acme Inc",
"companyUrl": "https://acme.com",
"jobTitle": "Senior RevOps Manager",
"jobUrl": "https://jobs.acme.com/revops-123",
"location": "San Francisco, CA",
"postedAt": "2026-02-01T12:00:00Z",
"description": "Own Salesforce administration and RevOps process improvements."
}

Output Contract

Default Dataset

One row per account.

FieldTypeDescription
accountKeystringStable account identifier used for state/dedupe/ranking.
companyNamestringAccount display name.
companyDomainstring | nullCanonical website domain when available; null if unresolved.
scoreintegerFinal account score (0-999).
jobCountintegerTotal jobs after normalization/dedupe.
matchedJobCountintegerJobs that matched at least one rule.
matchedJobRationumbermatchedJobCount / jobCount.
newJobCountintegerNew jobs vs persisted seen-state.
newMatchedJobCountintegerNew matched jobs vs seen-state.
isNewCompanybooleanWhether account was unseen in prior state.
matchedCategoriesstring[]Rule categories with hits, ordered by hit strength.
outreachAnglesstring[]Up to 4 angle suggestions from matched categories.
latestPostedAtstringLatest posting timestamp observed for the account (ISO 8601 UTC).
avgSignalConfidencenumberMean confidence across matched rule events.
recencyScoreintegerRecency factor (1-100).
scoreBreakdownobjectComponents used to build final score.
signalsobject[]Up to 8 matched signals.
generatedAtUtcstringRun timestamp in UTC (Z).

signals[] fields:

  • title
  • location
  • postedAt
  • jobUrl
  • matchedRules
  • signalConfidence
  • matchedKeywordsByRule

scoreBreakdown fields:

  • categoryScore
  • volumeComponent
  • qualityComponent
  • confidenceComponent
  • recencyComponent

SUMMARY (default key-value store)

SUMMARY includes run counters plus ROI summary.

FieldTypeDescription
sourceTypestringdataset or greenhouse_api.
sourceDatasetIdstringDataset ID (empty in Greenhouse mode).
sourceItemsReadintegerJobs read from source ingestion.
accountsMatchedintegerAccounts with non-zero matched score before cap.
accountsOutputintegerAccounts actually delivered to dataset (after score/output caps and PPE cost cap, if hit).
generatedAtUtcstringRun timestamp UTC.
filteredMissingDomainintegerJobs dropped for missing domain.
filteredMissingTitleintegerJobs dropped for missing title.
filteredDuplicateJobsintegerDuplicate job fingerprints dropped.
filteredBelowMinScoreintegerAccounts dropped below minAccountScore.
roiSummaryobjectAggregate output quality metrics.
stoppedByMaxTotalChargebooleanTrue when PPE max total charge limit stopped output early.
deliveryobjectDelivery accounting for attempted vs delivered vs charged rows.
ingestionobjectPresent in Greenhouse mode; board-level ingestion stats.

roiSummary fields:

  • outputMatchedJobs
  • outputNewMatchedJobs
  • outputHighConfidenceAccounts
  • highConfidenceThreshold
  • outputAvgAccountScore
  • outputAvgMatchedJobRatio
  • outputAvgSignalConfidence

delivery fields:

  • attemptedRows
  • deliveredRows
  • chargedRows
  • chargedEventName
  • pricingModel
  • isPayPerEvent
  • knownPayPerEvents
  • eventChargeLimitReached
  • stoppedByMaxTotalCharge

ingestion includes board-level success/failure detail:

  • succeededBoards[]: { token, jobsFetched }
  • failedBoards[]: { token, reason, httpStatus?, message }

Processing Behavior

Normalization and Dedupe

  • Domains are normalized from explicit domain, company URL, or job URL.
  • Known aggregator hosts are re-keyed to account-level keys (for example webflow.greenhouse).
  • Description text is cleaned (HTML/boilerplate removal) before scoring.
  • Dedupe uses a deterministic fingerprint over domain/title/location/url (or description snippet fallback).

Scoring

  • Rule hits come from keyword matches in title + cleaned description.
  • A rule match requires either a title hit or at least two distinct keyword hits.
  • Optional negativeKeywords suppress matches for known noisy contexts.
  • Rule-level confidence is computed from title/body hit mix and keyword coverage.
  • Final score blends:
    • weighted category hits
    • match ratio quality
    • confidence quality
    • recency
  • Accounts with no matched rules are not emitted.

State and Newness

  • State stores seen fingerprints per accountKey.
  • newJobCount and newMatchedJobCount are calculated against persisted state.
  • Seen-state is updated for all matched domains, not only capped output rows.

Failure Handling

  • Failures are logged with pipeline stage context.
  • If alertWebhookUrl is set, a failure alert message is posted.
  • In Greenhouse mode, per-board failures are counted in ingestion.greenhouseBoardsFailed; successful boards still process.

Changelog

See CHANGELOG.md.