B2B Buying Signals: Hiring + Tech Stack Intent for Clay
Pricing
from $76.50 / 1,000 results
B2B Buying Signals: Hiring + Tech Stack Intent for Clay
Combines GTM hiring signals and tech stack detection into one flat Clay-ready row with composite score, recommended action, and plain-English summary. Runs two sub-actors in a single call. Built for Clay enrichment and outbound qualification. MCP-ready for Claude Desktop and AI agents.
Pricing
from $76.50 / 1,000 results
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
7
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
One call, both GTM signals. Hiring intent plus tech stack in a single flat row, ready to drop into Clay.
Give this actor a company domain. It runs GTM Hiring Signal Scraper and GTM Tech Stack Signal Enrichment in parallel over the Apify API, merges both results into one flat row, and adds a composite signal score plus a plain-English summary on top. No nested JSON, no second lookup, no glue code.
What's Inside
- Ready-to-Run Examples
- What's New
- One call, both signals
- Why use this instead of running both actors separately
- Input
- Output
- How the composite score works
- Sample output
- Use with MCP (AI Agents)
- Clay Table Template
- Pricing
- Error Handling
- Known Limitations
- Issues and Feature Requests
- Mamba Labs GTM Actor Fleet
Ready-to-Run Examples
Each example is a pre-configured version of this actor for a specific use case. Click any link to open it in the Apify Console and run it immediately.
| Example | What it does |
|---|---|
| Score a Company GTM Buying Signals 0 to 100 | Blend hiring and tech stack signals into one composite score from 0 to 100. |
| Generate AI Lead Briefing for a Company | Produce a 3 to 5 sentence, agent-ready GTM briefing for a company. |
| Get a One-Line GTM Outreach Recommendation | Fast triage returning a recommended action: prioritize, nurture, or deprioritize. |
| Combined Hiring and Tech Stack Enrichment | Merge GTM hiring signals and tech stack detection into one flat row per company. |
| Fast GTM Score Without the Summary | Lightweight scoring-only run that drops the summary field for high-volume list passes. |
Looking for a different configuration? Open the Input tab to build your own.
What's New
- Free tier monthly cap. Free Apify-plan users get 10 results per calendar month (resets on the 1st); any paid plan is unlimited. See "Free tier vs paid usage" under Pricing. Upgrade for unlimited: https://apify.com/pricing
- Pricing reduced. $0.09 per result, down from $0.12. No subscription, no contract.
- Clay table template available. Pre-built table with the enrichment column and formula columns for composite score, recommended action, and signal summary. Open the template โ
One call, both signals
This actor is for teams who want hiring and tech stack signals merged into one row with a composite score. If you only need one signal type, call that actor directly:
- Only want hiring signals? Use GTM Hiring Signal Scraper directly at $0.05 per result.
- Only want tech stack detection? Use GTM Tech Stack Signal Enrichment directly at $0.015 per result.
This actor runs both in parallel, merges the output into one flat row, and adds three fields the standalone actors do not produce: composite_score (0-100), recommended_action (priority outreach / nurture / deprioritize), and gtm_signal_summary (plain-English briefing). One API call, one row, no glue code.
Why use this instead of running both actors separately
Convenience and the composite layer. Running Actor 1 and Actor 2 separately gives you two rows per company that you merge yourself in Clay. This actor gives you one row with everything merged, plus a composite score, a recommended next action, and a plain-English summary that the standalone actors do not produce. No column merging, no formula columns to maintain, no integration code.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
company_domain | String | Yes | Bare domain, for example stripe.com. The actor strips https://, www., and any trailing path for you. |
include_summary | Boolean | No | Include the plain-English gtm_signal_summary field. Default: true. |
explain_mode | Boolean | No | Switch gtm_signal_summary from a short summary to a 3 to 5 sentence agent briefing. Default: false. |
Example input:
{"company_domain":"stripe.com","include_summary":true,"explain_mode":false}
Output
One flat row per domain. All 32 fields are present in every row, including error rows. Missing values are null, never absent. No nested objects, so every field maps straight to a Clay column.
Composite fields (added by this actor)
| Field | Type | Description |
|---|---|---|
company_domain | String | The normalized domain, echoed from input. |
composite_signal | String | high, medium, or low. Derived from composite_score. |
composite_score | Integer | Numeric signal score from 0 to 100. See the scoring section below. |
recommended_action | String | priority outreach, nurture, or deprioritize. Derived from composite_score. |
gtm_signal_summary | String | Plain-English read on the combined signals. A 1 to 2 sentence summary by default, or a 3 to 5 sentence briefing when explain_mode is true. Null when include_summary is false. |
Hiring signal fields (from GTM Hiring Signal Scraper)
| Field | Type | Description |
|---|---|---|
gtm_hiring_signal | Boolean | True if any GTM role is detected. |
signal_strength | String | Hiring signal strength: high, medium, or low. |
gtm_role_count | Integer | Number of open GTM roles detected. |
top_gtm_role | String | Highest-tier role found. |
gtm_roles_detected | String | Comma-separated list of the role categories matched. |
most_recent_posting_date | String | ISO date of the most recent GTM posting, or null if not available. |
ats_platform | String | greenhouse, lever, ashby, workday, rippling, or none. |
career_page_url | String | Direct link to the detected career page. |
Tech stack fields (from GTM Tech Stack Signal Enrichment)
| Field | Type | Description |
|---|---|---|
crm_detected | String | hubspot, salesforce, pipedrive, zoho, or none. |
seq_tool_detected | String | outreach, salesloft, apollo, instantly, lemlist, reply, or none. |
uses_hubspot | Boolean | HubSpot detected. |
uses_salesforce | Boolean | Salesforce detected. |
uses_clay | Boolean | Clay detected. |
uses_apollo | Boolean | Apollo detected. |
uses_outreach | Boolean | Outreach detected. |
uses_gong | Boolean | Gong detected. |
uses_zoominfo | Boolean | ZoomInfo detected. |
uses_drift | Boolean | Drift detected. |
uses_intercom | Boolean | Intercom detected. |
uses_marketo | Boolean | Marketo detected. |
marketing_automation_detected | String | marketo, pardot, hubspot, eloqua, or none. |
gtm_tool_count | Integer | Count of distinct GTM tools detected. |
tech_stack_signal | String | Tech stack signal strength: high, medium, or low. |
Run metadata
| Field | Type | Description |
|---|---|---|
actor1_error | Boolean | True if the hiring signal scraper failed. Tech stack fields still populate. |
actor2_error | Boolean | True if the tech stack actor failed. Hiring fields still populate. |
run_time_ms | Integer | Wall-clock milliseconds from the start of processing to the dataset push. |
run_date | String | ISO timestamp of the run. |
How the composite score works
composite_score is an integer from 0 to 100, built by adding points from both signal sides:
- GTM hiring signal present: 20 points.
- Hiring signal strength: 20 points for
high, 10 formedium, 5 forlow. - Open GTM roles: 5 points per role, capped at 20.
- CRM detected (anything other than
none): 15 points. - Sequencer detected (anything other than
none): 10 points. - GTM tool count: 3 points per tool, capped at 15.
The total is capped at 100. composite_signal and recommended_action then fall out of the score:
| Score | composite_signal | recommended_action |
|---|---|---|
| 60 to 100 | high | priority outreach |
| 30 to 59 | medium | nurture |
| 0 to 29 | low | deprioritize |
Filter on composite_score in Clay when you want to set your own cutoff, or on composite_signal when the three bands are enough.
Sample output
A real run against stripe.com:
{"company_domain":"stripe.com","composite_signal":"high","composite_score":60,"recommended_action":"priority outreach","gtm_signal_summary":"Actively hiring GTM roles (159 open, top: UAE Chief Risk Officer and Compliance and Money Laundering Reporting Officer (CRO/COMLRO)). Strong buying signal.","gtm_hiring_signal":true,"signal_strength":"high","gtm_role_count":159,"top_gtm_role":"UAE Chief Risk Officer and Compliance and Money Laundering Reporting Officer (CRO/COMLRO)","gtm_roles_detected":"AE, GTMEngineering, Partnerships, BizDev, CS, Growth, SalesManager, HeadOfRevenue, HeadOfSales, SDR, AM, CRO","most_recent_posting_date":null,"ats_platform":"greenhouse","career_page_url":"https://boards.greenhouse.io/stripe","crm_detected":"none","seq_tool_detected":"none","uses_hubspot":false,"uses_salesforce":false,"uses_clay":false,"uses_apollo":false,"uses_outreach":false,"uses_gong":false,"uses_zoominfo":false,"uses_drift":false,"uses_intercom":false,"uses_marketo":false,"marketing_automation_detected":"none","gtm_tool_count":0,"tech_stack_signal":"low","actor1_error":false,"actor2_error":false,"run_time_ms":12610,"run_date":"2026-05-27T10:23:38.601Z"}
Use with MCP (AI Agents)
This actor is callable as a tool over MCP (Model Context Protocol) by AI clients like Claude Desktop, Cursor, VS Code (GitHub Copilot), Windsurf, and any other MCP-compatible client. Apify hosts the MCP server at mcp.apify.com, so no custom server code is needed.
What this actor does in an MCP context
This is the one-call GTM signal aggregator. A single tool call returns hiring intent and tech stack data merged into one flat row, along with a composite score and a plain-English summary your agent can drop straight into a prompt. Use it when you want a complete GTM profile in one shot instead of calling the per-signal scrapers and stitching the output together.
Example prompts:
- "Give me a full GTM signal profile for stripe.com."
- "Score this company's GTM activity across hiring and tech stack and recommend a next action."
- "Run a complete GTM audit on hubspot.com and summarize the buying signals in two sentences."
Supported MCP clients
Claude Desktop, Cursor, VS Code (GitHub Copilot), Windsurf, and any MCP-compatible client.
Setup: Hosted server (recommended)
Add this entry to your MCP client config. The OAuth variant prompts you to authorize on first connect, so no token sits in your config file.
OAuth (recommended):
{"mcpServers":{"mamba-labs-gtm-aggregator":{"url":"https://mcp.apify.com?tools=mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay"}}}
Bearer token:
{"mcpServers":{"mamba-labs-gtm-aggregator":{"url":"https://mcp.apify.com?tools=mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay","headers":{"Authorization":"Bearer YOUR_APIFY_TOKEN"}}}}
Setup: Full Mamba Labs GTM Suite
Load all 6 Mamba Labs GTM actors as tools in a single MCP server entry.
OAuth:
{"mcpServers":{"mamba-labs-gtm-suite":{"url":"https://mcp.apify.com?tools=mambalabs/gtm-hiring-signal-scraper,mambalabs/gtm-tech-stack-signal-scraper,mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay,mambalabs/job-board-keyword-signal-scanner,mambalabs/domain-to-linkedin-url-resolver,mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay"}}}
Bearer token:
{"mcpServers":{"mamba-labs-gtm-suite":{"url":"https://mcp.apify.com?tools=mambalabs/gtm-hiring-signal-scraper,mambalabs/gtm-tech-stack-signal-scraper,mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay,mambalabs/job-board-keyword-signal-scanner,mambalabs/domain-to-linkedin-url-resolver,mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay","headers":{"Authorization":"Bearer YOUR_APIFY_TOKEN"}}}}
Setup: Local server (for development and testing)
npx @apify/actors-mcp-server --tools mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay
Full suite:
npx @apify/actors-mcp-server --tools mambalabs/gtm-hiring-signal-scraper,mambalabs/gtm-tech-stack-signal-scraper,mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay,mambalabs/job-board-keyword-signal-scanner,mambalabs/domain-to-linkedin-url-resolver,mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay
Setup: Mamba Labs MCP wrapper (npm)
A standalone MCP server for this actor is published on npm. Install it globally:
npminstall-g @mambalabsdev/mcp-gtm-signals-aggregator
Then add it to your MCP client config:
{"mcpServers":{"mamba-gtm-signals":{"command":"npx","args":["-y","@mambalabsdev/mcp-gtm-signals-aggregator"],"env":{"APIFY_TOKEN":"YOUR_APIFY_TOKEN"}}}}
Prefer one install for the whole fleet? The Mamba Labs GTM Suite (https://www.npmjs.com/package/@mambalabsdev/mcp-gtm-suite) exposes eleven of these actors as tools in a single MCP server.
What the output looks like
Flat JSON, one row per domain, no nested objects, typically under 2KB. The 32 fields combine hiring signals from Actor 1 with tech stack detection from Actor 2 plus a composite layer on top. Most important fields for an agent:
composite_signal(high, medium, or low)composite_score(0 to 100)recommended_action(priority outreach, nurture, or deprioritize)gtm_signal_summary(plain-English read on the combined signals)gtm_hiring_signalandgtm_role_count(hiring side)crm_detectedandseq_tool_detected(tech stack side)tech_stack_signal(high, medium, or low)
Set explain_mode to true and gtm_signal_summary switches from a 1 to 2 sentence summary to a 3 to 5 sentence briefing you can pass straight to your model as lead context.
Billing
MCP runs use the same pay-per-event pricing as direct API or Console runs. Each successful result costs $0.09.
Notes
This actor orchestrates Actor 1 (hiring signals) and Actor 2 (tech stack detection) internally. A single call returns the combined GTM signal profile. Typical run time 10 to 30 seconds; if your MCP client shows a loading indicator, that is normal. You do not need to call Actors 1 and 2 separately when using this aggregator.
Clay Table Template
A pre-built Clay table template is available with the enrichment column, formula columns, and views ready to use.
The template includes:
- A Run Apify Actor enrichment column wired to mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay
- Formula columns for composite_signal, composite_score, recommended_action, and gtm_signal_summary
- Both hiring and tech stack output fields mapped to named columns
Manual setup
Add this actor as an HTTP API enrichment column in any Clay table.
- In your Clay table, click Add Enrichment, then choose HTTP API.
- Set the method to POST.
- Set the URL to
https://api.apify.com/v2/acts/mambalabs~gtm-signals-aggregator/run-sync-get-dataset-items?token=YOUR_TOKEN, with your own Apify token. - Set the body to:
{"company_domain":"{{domain}}"}
- The endpoint returns an array with one result row. Map the fields you want to columns, for example
composite_signal,composite_score,recommended_action, andgtm_signal_summary.
Each row costs $0.09 and returns all 32 fields. No prompt to write, no AI credits to burn, and the output shape is the same on every row, so your column mappings never break.
Pricing
$0.09 per result. Pay per event, billed per domain processed. No subscription, no seat license, no contract.
| Volume | Cost |
|---|---|
| 100 domains | $9.00 |
| 1,000 domains | $90.00 |
| 10,000 domains | $900.00 |
Apify subscription plans apply an automatic volume discount on top of the base rate:
| Tier | Discount | Per result | Per 1K results |
|---|---|---|---|
| Free (no plan) | 0% | $0.09 | $90.00 |
| Starter (Bronze) | ~5% | $0.0855 | $85.50 |
| Scale (Silver) | ~10% | $0.081 | $81.00 |
| Business (Gold) | ~15% | $0.0765 | $76.50 |
We recently reduced pricing across the Mamba Labs actor suite to bring more value to GTM teams running enrichment at scale.
This actor calls GTM Hiring Signal Scraper and GTM Tech Stack Signal Enrichment internally. You pay one price ($0.09) and get both signal sets plus a composite score and plain-English summary that the standalone actors do not produce.
How that compares:
- A Claygent column that researches tech stack typically burns 3 to 5 credits per row, roughly $0.015 to $0.025 on Clay's standard plan, and needs a custom prompt that you maintain. This actor returns structured, consistent fields with no prompt to write and no column merging.
- BuiltWith and ZoomInfo sell tech stack and company data on subscription plans billed per seat or per tier. This actor is pay-per-result, so you can enrich a 50-row list or a 50,000-row list and pay only for the rows you run. Output is structured, consistent, and ready to drop into Clay with no column merging.
All figures are list prices at the time of writing. Third-party pricing changes; check each vendor for current numbers.
Free tier vs paid usage
| Plan | Limit |
|---|---|
| Free Apify plan | 10 results per calendar month (resets on the 1st) |
| Any paid Apify plan | Unlimited results, no cap |
Free-plan usage is counted cumulatively across all of your runs in a month, not per run, so single-domain Clay runs and larger batches both draw from the same monthly allowance. How it behaves when you hit the limit:
- Within the monthly allowance: every submitted domain is processed normally.
- A run that crosses the limit: the remaining allowance is delivered, then one final notice row explains the cap and how to upgrade. The run still finishes successfully.
- Already at the limit: the run exits immediately with no results and no sub-actor calls, and an upgrade message in the run status. Upgrade for unlimited: https://apify.com/pricing
Sub-actor cap interaction (specific to this aggregator): Because this aggregator runs the Hiring Signal and Tech Stack actors as child actor runs under your account, those child runs also count against those actors' own free-tier monthly caps. A free-plan user's aggregator runs therefore also draw down their standalone Hiring Signal and Tech Stack allowances. This is expected.
Error Handling
The actor never crashes on a bad row. Every input domain produces exactly one flat output row, and the actor1_error / actor2_error flags tell you which signal side, if any, fell through.
| Condition | Behavior | Output |
|---|---|---|
Missing or empty company_domain | Skipped before any sub-actor call. No quota burned. | One full record with both error flags true and gtm_signal_summary = "Skipped: missing or empty company_domain in input." |
| One sub-actor fails or times out | The other side still runs and populates. The failed side is logged at error level. | One record; the matching actor1_error or actor2_error set to true, that side's fields null. Counts as a delivered result. |
| A sub-actor finishes with zero dataset items | Treated as a soft failure for that side, logged at warning level. | That side's error flag true and its fields null; the other side still populates. |
| Both sub-actors fail | Both sides null, both error flags true. Logged. | One record with both error flags true. Does not burn free-tier quota. |
| Unexpected error while processing a domain | Caught per-domain; the run continues to the next input. | One record for that domain with both error flags true and gtm_signal_summary = "Processing failed, see actor log for details." |
| Free-tier monthly cap reached | Run exits immediately before any sub-actor call, with an upgrade status message. | No result rows; an upgrade notice in the run status. |
Known Limitations
- No proxy configuration. This actor is orchestration only. It calls the two sub-actors over the Apify API and does no fetching of its own, so there is no proxy setting to configure here. The sub-actors handle their own network access.
- Hiring detection covers Greenhouse, Lever, Ashby, Workday, and Rippling. Companies on iCIMS or other platforms return no hiring data.
- Tech stack detection reads public-facing scripts and network calls. Tools loaded server-side or behind an auth wall may not appear.
- Partial results are expected behavior. If one sub-actor fails, the other side still populates and the matching
actor1_errororactor2_errorflag is set to true. Check those flags first if a block of fields is null. - Sub-actor cold starts affect total run time. Most runs finish in well under a minute, but a cold container can add a few seconds.
Issues and Feature Requests
Found a bug or want to request a feature? Open an issue in the Issues tab above. Response time: typically within 48 hours.
Mamba Labs GTM Actor Fleet
| Actor | What it does | Price/result |
|---|---|---|
| GTM Hiring Signal Scraper | Detects GTM hiring from career pages (Greenhouse, Lever, Ashby) | $0.05 |
| GTM Tech Stack Signal Enrichment | Detects CRM, sequencer, and marketing automation from a public site | $0.015 |
| GTM Signals Aggregator | Combines hiring and tech signals into one composite GTM score | $0.09 |
| Job Board Keyword Signal Scanner | Scans 5 ATS platforms for roles in any category | $0.05 |
| Domain to LinkedIn URL Resolver | Resolves a domain or name to its LinkedIn URL with firmographics | $0.006 |
| ICP Fit Scorer | Scores a company against your ideal customer profile | $0.05 |
| Domain Deliverability Checker | Audits email deliverability: SPF, DKIM, DMARC, MX, health score | $0.005 |
| Company Firmographic Enricher | Enriches a domain into employee band, industry, HQ, revenue | $0.004 |
| Company Social Presence Mapper | Maps a domain to social URLs and follower counts | $0.015 |
| Company Identity Resolver | Resolves name, domain, or LinkedIn into one canonical identity | $0.007 |
| Company Change-Event Feed | Monitors a domain and returns only what changed since last run | $0.06 |
| Funding & Press Signal Scanner | Scans news and press for funding, exec moves, launches, M&A | $0.03 |
One-install option: the Mamba Labs GTM Suite MCP server exposes eleven of these actors as tools in a single package. Each actor also has its own MCP wrapper.
All actors: apify.com/mambalabs | Website: mambabuilt.com
Built by Mamba Labs.
