GTM Signals Aggregator
Pricing
from $90.00 / 1,000 results
GTM Signals Aggregator
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 $90.00 / 1,000 results
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
2
Monthly active users
3 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 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/gtm-signals-aggregator"}}}
Bearer token:
{"mcpServers": {"mamba-labs-gtm-aggregator": {"url": "https://mcp.apify.com?tools=mambalabs/gtm-signals-aggregator","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/gtm-signals-aggregator,mambalabs/job-board-keyword-signal-scanner,mambalabs/domain-to-linkedin-url-resolver,mambalabs/icp-fit-scorer"}}}
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/gtm-signals-aggregator,mambalabs/job-board-keyword-signal-scanner,mambalabs/domain-to-linkedin-url-resolver,mambalabs/icp-fit-scorer","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Setup: Local server (for development and testing)
npx @apify/actors-mcp-server --tools mambalabs/gtm-signals-aggregator
Full suite:
npx @apify/actors-mcp-server --tools mambalabs/gtm-hiring-signal-scraper,mambalabs/gtm-tech-stack-signal-scraper,mambalabs/gtm-signals-aggregator,mambalabs/job-board-keyword-signal-scanner,mambalabs/domain-to-linkedin-url-resolver,mambalabs/icp-fit-scorer
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.
Part of the Mamba Labs GTM Suite
This actor is part of the Mamba Labs GTM Suite. See all 6 actors at https://apify.com/mambalabs
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/gtm-signals-aggregator
- 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 |
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.
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.
Related Actors
All Mamba Labs actors output flat, Clay-ready JSON. Use them together or individually.
- GTM Hiring Signal Scraper, $0.05/result. Detects GTM hiring activity on Greenhouse, Lever, and Ashby. Returns role counts, signal tags, and velocity tracking.
- GTM Tech Stack Signal Enrichment, $0.015/result. Detects CRM, sequencer, and marketing automation from a company's public-facing scripts. Flat boolean output.
- Job Board Keyword Signal Scanner, $0.05/result. Scans Greenhouse, Lever, Ashby, Workday, and Rippling for any role category you define. GTM, Engineering, Finance, or custom keywords.
- Domain to LinkedIn URL Resolver, $0.006/result. Resolves company domains to LinkedIn URLs with confidence scoring, firmographics, and social links in one flat row.
- ICP Fit Scorer, $0.05/result. Scores companies against your ICP using weighted signals. Returns icp_score 0-100, icp_tier A-D, and per-signal breakdown.
Built by Mamba Labs