Multi-ATS Tech Hiring Signals (Greenhouse, Lever, Ashby) avatar

Multi-ATS Tech Hiring Signals (Greenhouse, Lever, Ashby)

Pricing

$2.50 / 1,000 results

Go to Apify Store
Multi-ATS Tech Hiring Signals (Greenhouse, Lever, Ashby)

Multi-ATS Tech Hiring Signals (Greenhouse, Lever, Ashby)

Turn Greenhouse, Lever and Ashby job boards into B2B buying signals and salary benchmarks. Detect tech-stack keywords (Snowflake, Salesforce, Rust, AI…), extract pay bands, normalize locations, delta mode for daily monitoring. 100% HTTP, no proxy.

Pricing

$2.50 / 1,000 results

Rating

0.0

(0)

Developer

Xavier Richard

Xavier Richard

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Multi-ATS Tech Hiring Signals & Compensation Intel (Greenhouse, Lever, Ashby)

Turn public job boards from Greenhouse, Lever (US & EU), and Ashby into actionable B2B buying signals, 120+ tech-stack intelligence, seniority/department classification, and salary benchmarks.

Built for B2B Sales / RevOps / GTM Engineers (Clay, HubSpot, Apollo), technical recruiters, and VC / market analysts, this Actor queries the official public posting APIs directly over 100% pure HTTP — no headless browser, zero proxy required, and a minimal 128–256 MB RAM footprint.


Key Capabilities & GTM Intelligence (V2)

  • Automatic 120+ Tech Stack Detection (fullTechStack & techCategories): Out of the box — even when techKeywords is left empty — every posting is scanned against a curated dictionary of 120+ B2B technologies across 7 categories:
    • ai_ml (OpenAI, Anthropic, LangChain, LlamaIndex, RAG, PyTorch, vLLM, Hugging Face, Pinecone, Qdrant...)
    • data_analytics (Snowflake, Databricks, BigQuery, Redshift, dbt, Airflow, Dagster, Fivetran, Kafka, Looker, Tableau...)
    • cloud_devops (AWS, GCP, Azure, Kubernetes, Docker, Terraform, Datadog, Grafana, OpenTelemetry, GitHub Actions, ArgoCD...)
    • databases_storage (PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch, ClickHouse, DynamoDB, Supabase...)
    • languages_frameworks (TypeScript, Python, Rust, Go, Java, C++, C#, .NET, React, Next.js, Node.js, FastAPI, GraphQL...)
    • crm_gtm_revops (Salesforce, HubSpot, Clay, Gong, Outreach, Salesloft, Apollo, ZoomInfo, 6sense, Segment, Braze, Stripe, NetSuite, Workday...)
    • security_compliance (Okta, Auth0, CrowdStrike, Snyk, Wiz, Vanta, Drata, SOC 2, ISO 27001, HIPAA, GDPR...)
  • Synonym & Context-Aware Keyword Matching (detectedTechKeywords):
    • Automatically expands common aliases (Kubernetes ↔ K8s, PostgreSQL ↔ Postgres, Salesforce ↔ SFDC, AWS ↔ Amazon Web Services, GCP ↔ Google Cloud, SOC 2 ↔ SOC2).
    • Context-sensitive disambiguation for ambiguous names (Go matches Golang or Go alongside technical terms, never English "go to"; Clay, Gong, Outreach, Segment, Linear, Spark require proper capitalization or GTM/data context).
  • High-Intent B2B Buying Signals (buyingSignals): Automatically tags postings with actionable GTM triggers:
    • leadership_hire (new CTO, VP, Head of, Director)
    • founding_or_first_hire ("founding engineer", "first data hire", "0 to 1", "greenfield")
    • migration_or_modernization ("migrate from/to", "legacy system", "cloud migration", "re-architecting")
    • ai_transformation (LLM, RAG, agentic workflows, fine-tuning)
    • revops_gtm_scaling (RevOps / GTM Systems expansion)
    • security_compliance_push (SOC 2, ISO 27001, HIPAA, Vanta/Drata rollouts)
    • team_expansion ("rapidly growing team", "scaling our team")
  • Normalized Seniority (seniority) & Department (departmentCategory):
    • Classifies every job title into 12 seniority levels (c-level, vp, director, head, principal, staff, lead, manager, senior, mid, junior, intern).
    • Maps raw ATS department strings into 12 canonical B2B categories (Engineering, Data & AI, Sales & GTM, Revenue Operations, Security & IT, Product & Design, Customer Success, Marketing, People & Talent, Finance & Legal, Operations, Other).
  • Company Domain Extraction (companyDomain): Extracts clean company root domains (stripe.com, dust.tt) from custom career URLs and Ashby's organization metadata for immediate table joins in Clay, HubSpot, Apollo, or Salesforce.
  • Compensation Benchmarking (compensation):
    • Extracts structured pay bands from Greenhouse (pay_input_ranges & .pay-range), Lever (salaryRange), and Ashby (compensation), plus a conservative free-text salary parser.
    • Preserves multi-zone/multi-tier salary bands in compensation.allRanges, computes annualizedMin & annualizedMax, and flags offersEquity (true/false) and offersBonus (true/false).
  • Smart Delta Mode & Job Lifecycle Tracking (onlyNew):
    • Persists job IDs and content fingerprints (title + location + salary) in the named Key-Value Store multi-ats-hiring-signals-state.
    • Re-emits jobs whose salary band or title changed (changeStatus: "updated").
    • Diffs each board against its previous snapshot to count closed/filled positions since the last run (closedJobsSinceLastRun in SUMMARY).

Supported ATS & Public Endpoints

ATSPublic Endpoints IntegratedSpecial Capabilities
GreenhouseGET https://boards-api.greenhouse.io/v1/boards/{board_token}/jobs?content=true&pay_transparency=true
GET https://boards-api.greenhouse.io/v1/boards/{board_token}/jobs/{job_id}?questions=true
Extracts hidden locations/workplace types from metadata, parses multi-zone pay_input_ranges (cents) and .pay-range HTML blocks, and fetches application questions on demand.
Lever (US & EU)GET https://api.lever.co/v0/postings/{site}?mode=json
GET https://api.eu.lever.co/v0/postings/{site}?mode=json
Automatic US → EU instance fallback, full pagination (limit=100 & skip) for large boards (>20 jobs), salaryRange + salaryDescriptionPlain extraction, and HTML apply-form card parsing.
AshbyGET https://api.ashbyhq.com/posting-api/job-board/{job_board_name}?includeCompensation=trueStructured compensation parsing (Salary + Equity + Bonus components & tiers), unlisted job filtering, plus company display name, publicWebsite (companyDomain), and application form resolution via Ashby's public GraphQL endpoint.

Flexible Target Formats & Parallel Auto-Detection

Pass any mix of the following in targets:

  1. Raw company slug / board token (ATS is automatically detected by probing Greenhouse, Ashby, Lever US, and Lever EU in parallel):
    • "stripe", "openai", "dust", "palantir"
  2. Prefixed slug (skips probing when you already know the ATS):
    • "greenhouse:stripe", "gh:airbnb", "lever:palantir", "lever-eu:acme", "ashby:dust"
  3. Full ATS career board URL (ATS, region, and token are parsed automatically):
    • https://boards.greenhouse.io/stripe
    • https://job-boards.eu.greenhouse.io/acme
    • https://jobs.lever.co/palantir
    • https://jobs.eu.lever.co/acme
    • https://jobs.ashbyhq.com/dust
  4. Company careers page URL (fetched once and inspected for an embedded Greenhouse, Lever, or Ashby board):
    • https://www.company.com/careers
  5. Structured target object (via API):
    • { "url": "https://boards.greenhouse.io/stripe", "company": "Stripe" }
    • { "ats": "lever", "token": "palantir", "region": "us", "company": "Palantir Technologies" }

Unified Output Schema (Dataset Item)

{
"jobId": "gh-1234567",
"ats": "greenhouse",
"company": "Stripe",
"companyToken": "stripe",
"companyDomain": "stripe.com",
"title": "Senior Solutions Architect - Data",
"seniority": "senior",
"department": "Engineering",
"departmentCategory": "Engineering",
"location": "Paris, France (Hybrid)",
"isRemote": false,
"publishedAt": "2026-10-15T10:30:00.000Z",
"url": "https://boards.greenhouse.io/stripe/jobs/1234567",
"compensation": {
"min": 85000,
"max": 110000,
"currency": "EUR",
"period": "yearly",
"annualizedMin": 85000,
"annualizedMax": 110000,
"offersEquity": true,
"offersBonus": true,
"summary": "Zone A - Paris",
"source": "ats_structured"
},
"detectedTechKeywords": ["Snowflake", "Python"],
"fullTechStack": ["Snowflake", "dbt", "Python", "AWS", "Terraform"],
"techCategories": {
"data_analytics": ["Snowflake", "dbt"],
"cloud_devops": ["AWS", "Terraform"],
"languages_frameworks": ["Python"]
},
"buyingSignals": ["migration_or_modernization"],
"questions": [],
"atsJobId": "1234567",
"workplaceType": "hybrid",
"city": "Paris",
"region": null,
"country": "France",
"countryCode": "FR",
"allLocations": ["Paris, France"],
"employmentType": "Full-time",
"updatedAt": "2026-10-16T08:15:00.000Z",
"applyUrl": "https://boards.greenhouse.io/stripe/jobs/1234567",
"requisitionId": "JR-9941",
"changeStatus": "new",
"scrapedAt": "2026-10-19T20:00:00.000Z"
}

Local Development & Testing

# Install dependencies
npm install
# Validate all Apify schemas (.actor/*.json)
apify validate-schema
# Run linter and unit/integration test suite
npm run lint
npm test
# Run the Actor locally
apify run