Job Board Keyword Signal Scanner GTM Eng Finance Clay-Ready
Pricing
from $100.00 / 1,000 results
Job Board Keyword Signal Scanner GTM Eng Finance Clay-Ready
Scrapes Greenhouse, Lever, and Ashby for configurable role categories: GTM, Engineering, Finance, Ops, Executive, or Custom. Flat Clay-ready row per domain.
Pricing
from $100.00 / 1,000 results
Rating
0.0
(0)
Developer
Mamba Labs
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Job Board Keyword Signal Scanner
Version: 0.2.0
Actor 1 (GTM Hiring Signal Scraper) is scoped to GTM roles only. This actor does the same thing but lets you pick the category.
Choose GTM, Engineering, Finance, Operations, Executive, or pass your own keyword list. Same Greenhouse, Lever, and Ashby cascade. Same flat Clay-ready output. One row per domain.
What's new in v0.2.0
- Workday and Rippling support. Both added to the ATS cascade. Enterprise targets that use Workday or Rippling are now detected. ats_platform now returns "workday" or "rippling" for these domains.
- Change detection. Pass previous_roles_detected from a prior run and get new_roles_detected, removed_roles_detected, and change_detected in the output. Turns a one-shot scrape into an outbound timing signal -- run on the same domain weekly and trigger outreach when new roles appear.
- Pre-indexed fallback. When the live cascade finds no ATS match, the actor falls back to a pre-indexed database covering 175k+ companies and 54 ATS platforms. enable_fallback defaults to true. Set to false for faster runs on large lists where you are confident about ATS coverage.
- Ashby date fix. most_recent_posting_date now populates correctly for Ashby domains. Previous limitation notice removed.
When to use this vs Actor 1
Use Actor 1 if you only need GTM hiring signals. It is purpose-built for that use case and runs at $0.07/result.
Use this actor if your Clay table targets a different ICP (engineering scale-up, finance hire, ops buildout) or if you want to combine multiple hiring categories in one call.
Supported categories
Pass one or more in the role_categories input field:
GTM- VP Sales, AE, SDR, RevOps, Head of Growth, CMO, CROEngineering- VP Engineering, CTO, Software Engineer, Staff Engineer, Engineering ManagerFinance- CFO, VP Finance, Controller, FP&A, Financial AnalystOperations- COO, VP Operations, Chief of Staff, Business Operations, Strategy and OperationsExecutive- CEO, President, Co-Founder, MD, General Manager, VP+Custom- pass your own keywords viacustom_keywordsfield
Input
| Field | Type | Required | Notes |
|---|---|---|---|
company_domain | String | Yes | Bare domain, e.g. stripe.com |
role_categories | Array | Yes | One or more categories from the list above. Defaults to GTM if empty. |
custom_keywords | Array | No | Required if Custom is in role_categories. Array of keyword strings. |
previous_roles_detected | String | No | Comma-separated matched roles from a prior run. Enables change detection output fields. |
previous_run_date | String | No | ISO date of prior run. Echoed to output for traceability. |
enable_fallback | Boolean | No | Default true. Set to false to skip the pre-indexed fallback layer. |
Example input:
{"company_domain": "stripe.com","role_categories": ["GTM", "Finance"]}
Custom keyword example:
{"company_domain": "stripe.com","role_categories": ["Custom"],"custom_keywords": ["Partnerships", "Alliances", "Channel"]}
Output
One flat row per domain. Every field is always present. Null over missing keys.
| Field | Type | Description |
|---|---|---|
company_domain | String | Echoed from input |
company_name | String | Derived from ATS data |
linkedin_company_url | String | If available from ATS |
hiring_signal | Boolean | True if any role matched in selected categories |
ats_platform | String | greenhouse / lever / ashby / workday / rippling / none |
matched_role_count | Integer | Roles matched across all selected categories |
matched_roles_detected | String | Comma-separated matched role titles |
top_matched_role | String | Highest-tier role found |
most_recent_posting_date | String | ISO date of most recent matched posting |
department_with_most_openings | String | Department with highest open role count |
total_open_roles | Integer | All open roles across all departments |
signal_strength | String | high / medium / low |
categories_searched | String | Comma-separated categories used, e.g. "GTM,Finance" |
roles_by_category | String | Comma-separated category:role pairs, e.g. "GTM:VP Sales,Finance:CFO" |
career_page_url | String | Direct URL to the career page found |
new_roles_detected | String | Roles appearing in current run but not in previous_roles_detected. Null if no prior run provided. |
removed_roles_detected | String | Roles in previous_roles_detected not found in current run. Null if no prior run provided. |
roles_added_count | Integer | Count of new roles detected. Null if no prior run provided. |
change_detected | Boolean | True if any new or removed roles found. Null if no prior run provided. |
previous_run_date | String | Echoed from input. Null if not provided. |
fallback_used | Boolean | True if pre-indexed fallback was called and returned data. |
fallback_source | String | "fantastic-jobs" if fallback used, null otherwise. |
run_date | String | ISO timestamp of run |
signal_strength logic:
- High: 2 or more Tier 1 roles, or 5 or more total matched roles, posted within 30 days
- Medium: 1 Tier 1 role, or 2 to 4 matched roles, posted within 90 days
- Low: Tier 3 roles only, or postings older than 90 days
Sample output:
{"company_domain": "stripe.com","company_name": "Stripe","linkedin_company_url": "https://www.linkedin.com/company/stripe","hiring_signal": true,"ats_platform": "greenhouse","matched_role_count": 4,"matched_roles_detected": "VP Sales, Account Executive, CFO, Financial Analyst","top_matched_role": "VP Sales","most_recent_posting_date": "2026-04-10","department_with_most_openings": "Sales","total_open_roles": 47,"signal_strength": "high","categories_searched": "GTM,Finance","roles_by_category": "GTM:VP Sales,GTM:Account Executive,Finance:CFO,Finance:Financial Analyst","career_page_url": "https://boards.greenhouse.io/stripe","run_date": "2026-04-14T20:00:00.000Z"}
Clay integration
Add this actor as an enrichment column in any Clay table that has a domain column.
- Add column, select Apify, search for
job-board-keyword-signal-scanner - Map
company_domainto your domain column - Set
role_categoriesto whichever categories match your ICP, e.g.["Engineering"] - Set a run condition:
domainis not empty - Map output fields to new columns:
hiring_signal,signal_strength,matched_role_count,top_matched_role - Use
signal_strengthas a filter column or ICP qualification gate
The output is a flat row with no nested objects. Every field maps directly to a Clay column with no transformation required.
Pricing
$0.10 per result. Pay per event, no subscription.
If you only need GTM hiring signals, use GTM Hiring Signal Scraper at $0.07/result instead.
Related actors
GTM Hiring Signal Scraper - $0.07/result GTM-only hiring signals from Greenhouse, Lever, and Ashby. Use this if your ICP is purely GTM-focused.
GTM Tech Stack Signal Scraper - $0.07/result Detects CRM, sequencer, and GTM tooling from a domain. Returns flat booleans: uses_hubspot, uses_salesforce, crm_detected, seq_tool_detected.
GTM Signals Aggregator - $0.12/result Runs GTM Hiring Signal Scraper and GTM Tech Stack Signal Scraper in parallel and merges both into one Clay-ready row. Cheaper than running both separately ($0.14 combined vs $0.12 bundled).
Known limitations
- Workday and Rippling detection relies on career page scraping. Slug mismatches may cause false negatives on some Workday domains. Coverage is approximately 60-70% for Workday (same as Actor 1 v0.2.0).
- Tools loaded behind authenticated career portals will not be detected.
- The pre-indexed fallback may return slightly stale data (up to a few days old) compared to live scraping.
- No proxy layer by default. Heavy batch runs on the same ATS domain may get rate-limited. Contact support via the Issues tab if this becomes a pattern.
- Custom keywords are all treated as Tier 2 signals by default. Signal strength scoring reflects this.
Built by Mamba Labs.