Greenhouse Lever Ashby Job Scraper: GTM Hiring Signals
Pricing
from $42.50 / 1,000 results
Greenhouse Lever Ashby Job Scraper: GTM Hiring Signals
Detect companies actively hiring GTM teams. Scrapes Greenhouse, Lever, and Ashby for Sales, RevOps, and Growth roles. Flat JSON with role counts and velocity signals. Built for Clay enrichment columns. MCP-ready for Claude Desktop, Cursor, and AI agents.
Pricing
from $42.50 / 1,000 results
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
1
Bookmarked
19
Total users
0
Monthly active users
8 hours ago
Last modified
Categories
Share
๐งโ๐ผ What can GTM Hiring Signal Scraper do?
Give it a company domain and it tells you whether that company is actively building its go-to-market team: how many GTM roles are open, which functions they are in, and whether that number is rising or falling since your last run.
It reads Greenhouse, Lever and Ashby public job board APIs and filters to roles that signal pipeline investment. One flat row per domain.
| ๐ฆ What you get | โ๏ธ Features and integrations |
|---|---|
๐ฏ gtm_hiring_signal, one boolean to gate on๐ท๏ธ 20 signal tags, AE through CRO ๐ Velocity and change detection across runs ๐งพ 22 flat fields, snake_case, one row per domain | ๐ Three ATS platforms probed in parallel โก Public APIs only, no auth and no proxy ๐ Error-safe, one failure never stops the run โฌ๏ธ Export to JSON, CSV, Excel, HTML or XML |
Bought by outbound teams and Clay users who want hiring signals turned into pipeline: a company opening three AE roles is a company with budget and a number to hit.
๐ซ ATS coverage is deliberately scoped to three platforms. Companies on Workday, Rippling, Teamtailor, SmartRecruiters, BambooHR or a custom careers page return
ats_platform: nullwithgtm_role_count: 0and no error. A zero here means "not found on these three boards", never "this company is not hiring".
๐ก Why use GTM Hiring Signal Scraper?
| If you want | Read these fields |
|---|---|
| One field to filter on | gtm_hiring_signal |
| How hard they are hiring | gtm_role_count, signal_strength |
| Which function is growing | gtm_signals, gtm_roles_detected, top_gtm_role |
| Whether momentum is building | velocity_signal, role_count_delta, days_between_runs |
| What changed since last time | change_detected, change_type, new_gtm_roles, removed_gtm_roles |
| Where the roles are | career_page_url, ats_platform |
๐ Velocity is the signal, not the count
A company with four GTM roles open is unremarkable. A company that went from one to four since your last run is building a team right now.
Pass the previous run's output back as inputs and you unlock velocity_signal (growing, stable,
shrinking or first_run) and change detection naming the specific roles that appeared or
disappeared.
The first run works with no prior data. Velocity and change fields return a first_run state that
you can use as a filter gate rather than an error to handle.
๐ How ATS detection works
Layer 1, override map. Before any network request, the actor checks an internal map of pre-validated ATS slug assignments. A match returns immediately with no external calls.
Layer 2, live probe. Otherwise all three platforms are probed in parallel on the base slug. The
first to return GTM roles wins, with Greenhouse taking priority on ties, then Lever, then Ashby. If
none return, slug variants ({base}labs, {base}-labs) are tried only on the platforms that
returned 404 on the base.
| Platform | Endpoint | Notes |
|---|---|---|
| Greenhouse | api.greenhouse.io/v1/boards/{slug}/jobs | Public API, no auth |
| Lever | api.lever.co/v0/postings/{slug} | Public API, no auth |
| Ashby | api.ashbyhq.com/posting-api/job-board/{slug} | Public API, draft jobs excluded |
Workday and Rippling were evaluated and removed in v0.0.17. Workday careers pages hid the board URL
behind JS-rendered scripts or bot checks on two of three tested companies, and the
myworkdayjobs.com API endpoint shape had shifted enough that the third returned empty postings.
Rippling uses undocumented internal endpoints that are not reliable for production.
โถ๏ธ Ready-to-run examples
| Example | What it does |
|---|---|
| Find Companies Hiring SDRs and BDRs | Pipeline-building roles |
| Detect Companies Hiring AEs | Quota-carrying roles |
| Spot Companies Hiring RevOps | Operations investment |
| Track Weekly GTM Hiring Velocity | Momentum over time |
| Bulk Scan a Company List | Batch a whole list |
๐ What data can GTM Hiring Signal Scraper extract?
22 fields per domain.
| Field | What it holds |
|---|---|
gtm_hiring_signal | The boolean gate |
gtm_role_count | How many GTM roles are open |
gtm_signals | Standardized tags, for example ["AE", "SDR", "RevOps"] |
gtm_roles, gtm_roles_detected | The roles themselves |
top_gtm_role | The most senior or most indicative role |
signal_strength | high, medium or low, for triage language |
ats_platform, slug_source, career_page_url | Which board answered, and how the slug was found |
role_count_delta, velocity_signal, days_between_runs | Momentum, when prior-run inputs are supplied |
change_detected, change_type, new_gtm_roles, removed_gtm_roles | What moved since last time |
domain, company_name, run_date, scraped_at, error | Identity and run bookkeeping |
The 20 signal tags: AE, SDR, BDR, BizDev, RevOps, SE, CS, AM, DemandGen, Growth,
Partnerships, ChannelSales, FieldSales, InsideSales, VPSales, HeadOfSales, CRO,
SalesManager, SalesDirector, SalesOps.
โ ๏ธ
gtm_role_count: 0withats_platform: nullis not the same as a company that is not hiring. It means the company was not found on Greenhouse, Lever or Ashby. Checkats_platformbefore you read a zero as a negative signal, and passats_slugif you know the company uses an unusual slug.
๐ ๏ธ How to find companies hiring for GTM roles
- Open the Input tab and put a bare domain in
domain. - Narrow with
role_filterif you only care about some functions. - For a list, set
modeto batch and usedomains. - Click Start.
- Filter on
gtm_hiring_signaland sort bysignal_strength.
๐งช Using it in Clay
Add an Apify enrichment column and map your domain column to domain. Every field is a top-level
key, so there is nothing to unwrap.
There is a reusable Clay Function, fn_gtm_hiring_signal, that takes nine inputs and returns a
single structured output column:
open the function. Use the function
when you want the signal logic to update automatically across tables.
โฑ๏ธ Setting up velocity tracking
Run the actor on a schedule, weekly or monthly. Add a second enrichment column that maps
previous_gtm_role_count and previous_run_date from your stored prior-run columns into the new
run's inputs.
Then use velocity_signal = "growing" as an outreach timing trigger, change_detected = true to
find companies that shifted posture, and change_type = "new_roles" to surface companies that just
opened GTM positions.
๐ต How much does it cost to check GTM hiring signals?
Billed per domain processed.
| Plan | Per domain | Per 1,000 domains |
|---|---|---|
| Free | $0.05 | $50.00 |
| Bronze | $0.0475 | $47.50 |
| Silver | $0.045 | $45.00 |
| Gold | $0.0425 | $42.50 |
There is also an Actor start event at $0.00005, charged once per run per GB of memory.
๐ณ A domain that resolves to no ATS is still billed. The actor probed all three platforms and reported honestly that it found nothing, which is a real answer and the reason
ats_platformis on the row. No subscription, no seat license, no contract.
โจ๏ธ Input
Everything is on the Input tab. The options worth explaining:
| Field | Type | Default | What it does |
|---|---|---|---|
domain | string | none | Bare company domain. |
domains | array | none | Batch mode input. |
mode | string | single | single for Clay row-by-row, batch for bulk lists. |
role_filter | array | none | Narrow to specific GTM functions. |
ats_slug | string | none | Override slug derivation for unusual boards. |
include_role_details | boolean | false | Return the full role list, not just counts and tags. |
previous_gtm_role_count | integer | none | Prior run's count, unlocks velocity. |
previous_run_date | string | none | Prior run's date, unlocks days_between_runs. |
๐ค Output
One flat row per domain, exportable as JSON, CSV, Excel, HTML or XML.
{"domain": "stripe.com","company_name": "Stripe","ats_platform": "greenhouse","slug_source": "override_map","gtm_hiring_signal": true,"gtm_role_count": 7,"gtm_signals": ["AE", "SDR", "RevOps"],"top_gtm_role": "VP of Sales","signal_strength": "high","career_page_url": "https://boards.greenhouse.io/stripe","role_count_delta": 3,"velocity_signal": "growing","days_between_runs": 7,"change_detected": true,"change_type": "new_roles","new_gtm_roles": ["Enterprise AE, EMEA", "RevOps Manager"],"run_date": "2026-06-18T16:12:51.759Z","error": null}
๐ก Tips
- Gate on
gtm_hiring_signalfirst, then sort bysignal_strength. That is the whole triage. - Store each run's
gtm_role_countandrun_date. Velocity is worth more than the count and costs nothing extra to unlock. - Pass
ats_slugfor companies you know use an unusual board name. It skips the probe entirely. - Treat
ats_platform: nullas "unknown", not "no". It is the most common misreading of this actor.
โ ๏ธ Known limits
Slug derivation is based on the first segment of the domain, for example stripe.com to
stripe, with automatic probing of {base}labs and {base}-labs when the base returns 404. Clay,
which uses claylabs on Ashby, is caught by the variant probe. For patterns the variants do not
cover, pass ats_slug.
Role detection is keyword based. Unusual job title formats may not be classified.
Coverage is Greenhouse, Lever and Ashby only. These three cover the majority of venture-backed,
SaaS and GTM-heavy companies and all expose stable public APIs that return complete job lists without
bot blocking. Everything else returns ats_platform: null and no error.
Ashby draft jobs are excluded, which is correct but means a company staging roles will read lower than its internal count.
No proxy is required or used. All sources are public APIs.
โ FAQ
Why does a company I know is hiring return zero?
Almost always because it is not on Greenhouse, Lever or Ashby. Check ats_platform. If it is null,
the actor did not find a board rather than finding an empty one.
How do I get velocity on the first run?
You do not, and that is by design. The first run returns velocity_signal: "first_run", which is a
filterable state rather than an error. Store the output and the second run has momentum.
Which platform wins when more than one has the company?
The first to return GTM roles, with Greenhouse taking priority on ties, then Lever, then Ashby.
Does one bad domain break a batch?
No. Each domain is wrapped individually, and a failure lands in that row's error field.
Do I need a proxy or an API key?
Neither. All three sources are public APIs with no auth.
๐งฉ Want other GTM data?
Mamba Labs builds custom actors for B2B go-to-market teams. The public versions of that work live here on the Store, so our users get the same tooling we build under contract.
Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything.
๐ ๏ธ Need something custom built for you or your team? Tell us what you are trying to find and we will build it. Talk to Mamba Labs.
๐ Support
Found a bug or want a field added? Open an issue on the Issues tab. Response time is typically within 48 hours.
โน๏ธ Sourcing and legal. Every field comes from the public job board APIs of Greenhouse, Lever and Ashby, which require no authentication. No proxy is used. The actor returns companies, role counts and role titles, not people: no recruiter names, no applicant data, no personal data of any kind. You are responsible for how you use the output.
Built by Mamba Labs.