GTM Signals Aggregator avatar

GTM Signals Aggregator

Pricing

from $38.50 / 1,000 results

Go to Apify Store
GTM Signals Aggregator

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 up to five signal sources in one call. Built for Clay enrichment and outbound qualification. MCP-ready for Claude Desktop and AI agents.

Pricing

from $38.50 / 1,000 results

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

1

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

📡 What can GTM Signals Aggregator do?

Give it a company domain and it returns both GTM buying signals in one flat row: hiring intent and tech stack, merged, plus a composite score from 0 to 100, a recommended action and a plain-English summary.

It runs GTM Hiring Signal Scraper and Tech Stack Signal Detector in parallel, merges both results, and adds the composite layer on top. No nested JSON, no second lookup, no glue code.

📦 What you get⚙️ Features and integrations
💯 composite_score, 0 to 100 from both signal sides
🚦 recommended_action, prioritize, nurture or deprioritize
📝 Plain-English gtm_signal_summary
🧾 51 flat fields, both signals in one row
⚡ Both sources run in parallel
🛟 Partial results by design, one side failing keeps the other
🔍 Published score model, rebuild it yourself
⬇️ Export to JSON, CSV, Excel, HTML or XML

Bought by teams who want one qualification number per account rather than two rows to merge and a formula column to maintain.

🚫 This actor does no fetching of its own. It is orchestration only: it calls the two sub-actors over the Apify API and merges what they return. That is also why there is no proxy setting here; the sub-actors handle their own network access.

💡 Why use GTM Signals Aggregator?

Running the two actors separately gives you two rows per company that you merge yourself. This gives you one row with everything merged, plus a composite score, a recommended next action and a summary the standalone actors do not produce.

If you wantRead these fields
One number to sort your list bycomposite_score
Three bands instead of a numbercomposite_signal, recommended_action
A sentence for a rep or an agentgtm_signal_summary
The hiring sidegtm_hiring_signal, gtm_role_count, signal_strength, top_gtm_role
The tech stack sidecrm_detected, seq_tool_detected, gtm_tool_count, the uses_* flags
Whether the row is completeactor1_error, actor2_error

💯 How the composite score works, in full

composite_score is an integer from 0 to 100, built by adding points from both sides:

ContributionPoints
GTM hiring signal present20
Hiring signal strength20 for high, 10 for medium, 5 for low
Open GTM roles5 per role, capped at 20
CRM detected15
Sequencer detected10
GTM tool count3 per tool, capped at 15

The total is capped at 100. composite_signal and recommended_action then fall out of it:

Scorecomposite_signalrecommended_action
60 to 100highpriority outreach
30 to 59mediumnurture
0 to 29lowdeprioritize

Filter on composite_score when you want your own cutoff, or on composite_signal when the three bands are enough.

▶️ Ready-to-run examples

ExampleWhat it does
Score GTM Buying Signals 0 to 100Blend both signals into one composite score
One-Line Outreach RecommendationFast triage: prioritize, nurture or deprioritize
Generate an AI Lead BriefingA 3 to 5 sentence agent-ready briefing
Combined Hiring and Tech Stack EnrichmentBoth signals merged into one row
Fast Score Without the SummaryScoring only, for high-volume passes

📋 What data can GTM Signals Aggregator extract?

51 fields per company, from three layers plus the run and status fields.

LayerFields
Compositecomposite_score, composite_signal, recommended_action, gtm_signal_summary
Hiringgtm_hiring_signal, signal_strength, gtm_role_count, top_gtm_role, gtm_roles_detected, most_recent_posting_date, ats_platform, career_page_url
Tech stackcrm_detected, seq_tool_detected, marketing_automation_detected, gtm_tool_count, tech_stack_signal, and the uses_* flags for HubSpot, Salesforce, Clay, Apollo, Outreach, Gong, ZoomInfo, Drift, Intercom and Marketo
Runcompany_domain, actor1_error, actor2_error, run_time_ms, run_date

⚠️ Partial results are expected behavior, not a fault. If one sub-actor fails, the other side still populates and the matching actor1_error or actor2_error flag is set. Check those flags first if a block of fields is null, because a failed side drags the composite score down exactly as if the signal were absent.

⚠️ false and null mean different things on every row. false is a measurement: the actor looked and the answer was no. null is the absence of one: the actor could not look. When something it needed fails, the row comes back with degraded: true, a plain-language degradation_reason, and every field it could not measure set to null rather than to a confident false or 0. Filter on degraded before you trust a negative.

🛠️ How to score a company's buying signals

  1. Open the Input tab and put a bare domain in company_domain.
  2. Leave include_summary on unless you are running high volume and do not need the sentence.
  3. Click Start.
  4. Sort by composite_score, or filter on recommended_action.
  5. Check actor1_error and actor2_error before trusting a low score.

🧪 Using it in Clay

Add an Apify enrichment column and map your domain column to company_domain. Every field is a top-level key.

There is a prebuilt Clay table with the enrichment column and formula columns for composite score, recommended action and signal summary: open the template.

⚡ Running at volume

Set include_summary to false for a lighter, faster pass when you only need the score. Turn on explain_mode when you want to see why a score came out where it did.

💵 How much does it cost to score buying signals?

You are charged once per company scored.

PlanPer companyPer 1,000 companies
Free$0.0550$55.00
Bronze$0.0495$49.50
Silver$0.0440$44.00
Gold$0.0385$38.50

There is also an Actor start event at $0.00005, charged once per run per GB of memory.

Free Apify plans get 50 results per calendar month, resetting on the 1st. Paid plans have no monthly cap.

🛑 Your spending limit is respected. Set a maximum cost per run in Apify, or max_charge_usd on the Input tab, and the run stops before it would go over, keeping every result already charged. Each row's billable_events_json lists the events that row was charged for.

💳 This is an orchestrator, so the sub-actors bill you as well. The price above is for this actor's merge and scoring layer. Each source you select in sources runs one sub-actor, and each sub-actor charges its own per-domain event against the token that started the run, which is yours. Budget for every source you select, not just this one.

🧾 What a run really costs, measured end to end

A real run rather than an estimate. Measured 2026-08-12 on a single company.

Charged to your Apify accountCost
This actor, 1 company plus the start event$0.0550
gtm-hiring-signal-scraper, $0.05 per company$0.0501
gtm-tech-stack-signal-scraper, $0.015 per company$0.0150
Total for that run$0.1202

The two sub-actors were 54% of that bill. The effective price was $0.120 per company, not the $0.0550 in the table above.

Price cut on 2026-08-23, from $0.0900 to $0.0550. This actor had been priced above the combined cost of the two sub-actors it runs, which meant assembling the two by hand was cheaper than buying the bundle. It is not any more.

That measurement used the default sources, hiring and tech_stack. Every extra source adds one sub-actor run per company at that sub-actor's own Free plan list price:

Source in sourcesSub-actorList price per company, Free plan
hiring (default)gtm-hiring-signal-scraper$0.05
tech_stack (default)gtm-tech-stack-signal-scraper$0.015
fundingfunding-press-signal-scanner$0.03
eventsevent-presence-index$0.005
workplaceworkplace-program-detector$0.008

Turn a source off by leaving it out of sources, and its sub-actor does not run.

⌨️ Input

Everything is on the Input tab.

FieldTypeDefaultWhat it does
company_domainstringrequiredBare company domain.
sourcesarrayhiring, tech_stackWhich signals to aggregate. See below.
include_summarybooleantrueProduce the plain-English summary. Off is faster at volume.
explain_modebooleanfalseShow how the composite score was arrived at.
max_charge_usdnumbernoneOptional. The run stops before the next result that would take this run's charges over this amount, and keeps every result already charged. Leave empty to rely only on the maximum cost per run you set in Apify.

🎛️ Choosing your signal sources

sources decides which signals the composite is built from. Five are available:

SourceWhat it measuresMax weight
hiringOpen GTM roles, signal strength, role count60
tech_stackCRM, sequencer, total GTM tool count40
fundingA raise in the last 365 days, plus press event volume30
eventsConference appearances, and whether the company runs its own20
workplaceFormal workplace programs, an HR maturity and headcount proxy20

The default is ["hiring", "tech_stack"], which is what this actor has always run. An existing task, saved input or schedule therefore costs exactly what it cost before and scores exactly what it scored before.

The score is normalized over the sources you selected, not over all five. That is what makes the setting safe to use. Without it, adding a third source would drag every two source score toward the floor, and a funding only run would be scored out of 100 on a 30 point scale and always read "deprioritize". With it, a maxed out funding only run is a 100, and the historical pair still sums to 100 out of 100.

Each extra source is one more sub actor run on your own Apify account, so sources is the cost dial as well as the depth dial. Start with the pair, add funding for timing, add the rest when you are working a short list rather than a long one.

Two honesty rules the row follows:

  • A source you did not select reports null on every one of its fields, never false. false would claim the actor looked.
  • A source you selected that could not be reached is named in sources_failed and scored out of the set, not scored as a zero. If every selected source fails, the composite is null rather than a confident zero.

📤 Output

One flat row per company, exportable as JSON, CSV, Excel, HTML or XML.

{
"company_domain": "example.com",
"composite_score": 72,
"composite_signal": "high",
"recommended_action": "priority outreach",
"gtm_signal_summary": "Example is hiring three AEs and an SDR, and runs HubSpot with Outreach. Strong pipeline investment underway.",
"gtm_hiring_signal": true,
"signal_strength": "high",
"gtm_role_count": 4,
"top_gtm_role": "Enterprise Account Executive",
"ats_platform": "greenhouse",
"career_page_url": "https://boards.greenhouse.io/example",
"crm_detected": true,
"seq_tool_detected": true,
"uses_hubspot": true,
"uses_outreach": true,
"gtm_tool_count": 3,
"tech_stack_signal": "high",
"actor1_error": false,
"actor2_error": false,
"run_time_ms": 18420,
"run_date": "2026-06-18T16:21:40.382Z"
}

🧾 More fields on every row

FieldTypeWhat it holds
uses_hubspotbooleanTrue if HubSpot was detected, or null.
uses_salesforcebooleanTrue if Salesforce was detected, or null.
uses_claybooleanTrue if Clay was detected, or null.
uses_apollobooleanTrue if Apollo was detected, or null.
uses_outreachbooleanTrue if Outreach was detected, or null.
uses_gongbooleanTrue if Gong was detected, or null.
uses_zoominfobooleanTrue if ZoomInfo was detected, or null.
uses_driftbooleanTrue if Drift was detected, or null.
uses_intercombooleanTrue if Intercom was detected, or null.
uses_marketobooleanTrue if Marketo was detected, defaults to false, or null.
has_recent_fundingbooleanTrue when a funding round was found in the last 365 days. Null when the funding source was not selected.
funding_event_countintegerNumber of press events found for the company. Null when the funding source was not selected.
latest_funding_event_datestringPublication date of the most recent press event. Null when the funding source was not selected.
most_recent_press_headlinestringHeadline of the most recent press event. Null when the funding source was not selected.
event_countintegerNumber of conferences and industry events the company appeared at. Null when the events source was not selected.
most_recent_event_namestringName of the most recent event. Null when the events source was not selected.
most_recent_event_yearintegerYear of the most recent event. Null when the events source was not selected.
runs_own_eventbooleanTrue when the company runs a conference of its own. Null when the events source was not selected.
workplace_program_countintegerNumber of formal workplace programs detected. Null when the workplace source was not selected.
has_dei_programbooleanNull when the workplace source was not selected.
has_ergbooleanNull when the workplace source was not selected.
has_learning_programbooleanNull when the workplace source was not selected.
sources_requestedstringComma separated list of the signal sources this row was built from.
row_statusstringok, degraded, error, or notice (a notice row carries a message, not a result). Present on every row.
error_reasonstringWhy the row is degraded or an error, in plain words. Null on an ok row. Present on every row.
billable_events_jsonstringJSON list of the pricing events this row was charged for, for example [{"event":"apify-default-dataset-item","count":1}]. Lets you reconcile a run from the dataset alone. The once per run start event is not repeated on rows.

💡 Tips

  • Sort by composite_score rather than filtering on composite_signal when your list is large. The bands are coarse by design.
  • Always check actor1_error and actor2_error before writing off a low scorer. A failed side looks identical to an absent signal in the score.
  • Drop include_summary for bulk passes and turn it back on for the shortlist.
  • Use sources: ["hiring", "tech_stack"] for the wide pass and add funding and events only on the shortlist. Sub actor runs are the cost.
  • The score model is published above. If your ICP weights hiring more heavily than tooling, rebuild it from the raw fields, which are all on the row.

⚠️ Known limits

Hiring detection covers Greenhouse, Lever, Ashby, Workable, SmartRecruiters, and Personio. Companies on other platforms return no hiring data, which reads as an absent signal rather than an error.

Tech stack detection reads public-facing scripts and network calls. Tools loaded server-side or behind an auth wall may not appear, and backend-only tools such as Clay leave no detectable signal at all.

A failed sub-actor lowers the composite score. The error flags exist so you can tell that apart from a genuinely quiet company. They are not decorative.

Sub-actor cold starts affect run time. Most runs finish in well under a minute, but a cold container can add a few seconds.

No proxy configuration here. This actor does no fetching of its own.

❓ FAQ

Why should I use this instead of running both actors myself?

One row instead of two, plus a composite score, a recommended action and a summary the standalone actors do not produce. No column merging and no formula columns to maintain.

Why is a block of fields null?

One of the two sub-actors failed. actor1_error and actor2_error tell you which.

Can I change the scoring weights?

Not inside the actor, but the full model is published above and every raw field is on the row, so you can compute your own score downstream.

Does it cost more than running the two actors separately?

It costs this actor's fee plus both sub-actors' fees. What you buy for the extra is the merge, the score and the summary.

Is there a proxy setting?

No, and there is nothing this actor could use one for. The sub-actors handle their own network access.

🧩 Want other GTM data?

Mamba Labs builds a fleet of enrichment actors that share one flat output convention:

ActorActor ID
Account Hiring WatchgRAZA5WBi1r6L0gy7
Agent Accessibility AuditoranxbRv0lKrpQ1pnua
Agent to Brokerage ResolverePRRGLxOGyaVHO4dI
AI Answer Visibility TrackerRJZvzKniYK4nswcMg
AI List Extractor for Any WebsiteD5hOdIez45M0NX5jD
AI Tooling DetectorEwkHhmqiuJgRoVEbE
Amazon Product, Price, and Stock TrackerMtJPZoyjJ3IeqTFyo
API Deprecation and Breaking Change MonitorpHsbS3xXUK8Jqutz5
App Store and Google Play Review MonitorMaCMEhGrbchxQZ92G
B2B Reddit Conversation MonitorSoDryzzsjmY3SsiyG
Bluesky Brand Presence MappereLpxzP4IuXznlFVND
Bluesky Posts ScraperKldSjS7wjoeZ7vQGm
Brand Sponsor FinderPPgK6xrgOmvL7Nrys
Bulk WHOIS and RDAP Domain Age LookupMTrkG5FLU6SjqLdJY
Career Change Signal EnginevX2Yga1a6wGaXaP14
Company Careers Page Jobs, 17 ATS BoardsizP0rfIgf5YaRZfIh
Company Change Event FeedoX44rS0fkEJ3rXLWe
Company Discovery List Builderjch0HdaZnpbMqlcGS
Company Firmographic EnricherYlUtLWjfPpqykmB8g
Company Funding RecordOFS4Mt1gyYNtGfUbE
Company Headcount EstimatoraHC4GROnNt6kfZe5r
Company Identity Resolverlr8fTRAmZCBZmuwwh
Company Role Email, Phone and Address Finder4mMncKaJykiq94grz
Company Social Presence Mapper4k6CCemkgBDz18m2h
Competitor Price, Stock, and Changelog MonitoryxdgCbUQ4PYQWwRNU
Contact Classifier0lGSeYJmniXhGANnO
Contractor License Search, CA, TX, WA, OR, LAWBYK3CPI2kdeq4bP1
CRM Contact Job Change CheckerL8UbEmMJC1XYPSZOb
Domain Deliverability Checker0tVgxI7A6o9jMlxmc
Domain to LinkedIn URL Resolver3HtnSaqPHOg1Qg5gx
Ecommerce Platform Profiler5G2NeYjBbQTjaTn9L
Ecommerce Store DiscoveryPeHu4sLyFvQHXUUrX
Email List Verifier, Bring Your Own KeyCzVJ4NlaCKk80xpgE
Event Presence IndexWLhMy8fMDgsxdYxv5
Expert Witness Finder, US and AustraliaLIpwlgfE3LaQBaXd4
Facebook Posts ScraperT6jxIeq4ua0SLXnqG
Funding and Press Signal ScannerFS13X6dhQVgX3XOM6
GDPR Cookie Banner and Consent CheckerTrKyOS0KBoGC35nbr
GitHub Followers and Following ExportSGNxDmFb9v3tRDaFI
GitHub Organization Signal ScannerahF8RRpv5mzPao5CN
Google Ads Transparency Center Scraper by Domain1eOwxhBVxzvOXAm4s
Google Maps Places ScraperSuvHCNJ7pIuw6gn54
Google Trends ScraperOeDzaACKmBYJXzHZk
GTM Hiring Signal ScraperD7O1SA2EqwHGsGr1P
GTM Signals AggregatorxKdRfnfFNkdMpFuNs
Healthcare Provider NPI EnricherMrgbHzcpDq3mOv9Df
ICP Fit ScorerW161DT8W4kW55dMFh
Influencer Change Monitord2VVgahNL6UmcLkhg
Influencer Lead List BuilderKnmByszcv135yM30G
Influencer Profile ScraperEqEnklDVMIcB1V499
Influencer Search Across TikTok, Instagram and YouTubetpkedmloIIWtXx6sg
Influencer Talent Agency LookupzCuX4Mgyg6JvXgGzd
Instagram Facebook Brand Presence MapperHXh65I0JBjPsunbY8
Integration and Marketplace Presence MapperV0guNuvM85Q61f2gj
Job Board Keyword Signal Scanner4DvqpvhMR74NLcDDY
Job Posting MonitorQCfICD9kOPiOdj5iI
Journalist and Media List BuildermAfizsZC8qRoR0ecS
Launch Directory List BuildercRq3bmvEZxZtioQ7U
Lead File Import CheckerRwlGVXTf46LqZdUgt
Legal Entity ResolverKHFyPCDIx7CyqULYm
Link in Bio Scraper and Newsletter DetectorOorucdheTIgu7RFzK
LinkedIn Company Page MapperzOPm6A9JEhUGcIdFW
LinkedIn Jobs FeedSH6N0d8cz46BhCC8B
LinkedIn Post TrackeroiGLNPuaf5BRaz9K5
Local Business Lead BuilderqMN97aoHhsAS5bznV
Local Rank and Map Pack Trackergv0kyHGDIg8XscclB
Lookalike Companies from Seed Domainse2O426WBAbLLQL4Z2
Manufacturer and Supplier FinderQcsdmd0lUfPzVkonh
MCP Server Change and Health MonitorIeqjWF9U0BdDQFY08
Media URL TranscriberSyfr7Ya3EsHgWfrB6
Meta Ad Library Ads by Company, Graph APIJ1GWlSXfSGU3u8Wng
Mobile Phone Waterfall6OOgPktf7RIa5XCOP
New Hire FindercKuc38p4nYHNF3IW8
Newly Registered Companies, UK, Norway, Finland, Franceg2WfZhWvCtc57g2Jo
News and Media Mention Monitorgol1PPUKrsIk4QLBd
Newsletter Sponsor TrackerqSwpqxD1TiPZpLQHv
Open Tender and RFP FinderkPTGz6t6TFoUUyfaO
Outbound Stack Detectorv43UJC8r7qW7cBSTG
Page Finder and ExtractorTpurgcOZbVnknlaiC
Partner and Member Directory ExtractorZX0XJPPUvnFJxeC1a
People Finder & Email VerifierLEgloG7tWgQl4o6TD
Person LinkedIn URL ResolverssuyPV8LnEsL8qbnb
Person Social Footprint MapperjfQXa2zW9FHCJot9K
Personal Email to Company ResolverAefT5Ye6YNPFQwJBf
Pinterest Brand Presence Mapperd1HvjZfKhgvWsoEwn
Podcast Guest and Host Findero2MGSvgbSLeeXOsIo
Product Hunt Daily Launches with Maker DomainsO4VX63drWK9Y9x641
Prospect Engineq9rT6v64nUJdPexOQ
Public Feature Board and Roadmap MonitorrcHF5gj5r2Vqnry35
Publishing Frequency TrackerTbLwaUUATdYb6wp4N
Recent Funding Rounds FeedKueVp9MOz7iOoAgDp
Reddit Brand Presence MapperpKQZmDaT70SEb54bZ
Reddit Search and Thread Scraper4Gsth5cP2Xt9V2xDN
Reporting Window FinderuINxR7a1IW8qUTRUX
Research Topic Institutions and AuthorsOH8ANqt7bCKbo72Gk
Sequencer Event PollerS6s8Rjd61tGdrMRk4
Sequencer Lead Push0Jv27VeWM5tSZQs9x
Shopify App Store and Chrome Web Store ListingsgaY0BzkLyN77mD3wI
Site Crawler for Links and TableslLLJ6JxZ4XqN8ULz0
Substack Newsletter and Posts ScraperUEFsdwiPLmPNVy9xd
Team Page People Extractorj8a9zX0k4mNbvDbWK
Tech Stack Signal Detectorqyd7nNyqFPelQViBx
Tennis Match Datav3OX6zxXHZOf2yurO
Threads Posts by Keyword, Exact Match2OT8K8RiEEWtaj2MW
TikTok Brand Presence Mapperfco8FvoJcSafbeyd1
Trustpilot Reputation Enricher3lIqfCt61j4hqE1xz
US and UK Contract Award Winners by CompanyzhEtllASykOcx9hJ8
US Import Records Buyer FinderVIMafpKF5ggOw0COU
VC and Accelerator Portfolio List BuilderchH8hrfuoqqolW06m
Website Accessibility Checker, WCAG 2.2 AAP3jBj3FRghKEhX52z
Website Phrase and Business Model ClassifierCBuZ9k7sRwBeiKiCS
Website Traffic Rank EstimatorGnOFUzlNVIoXgeJjH
Work Email WaterfallOT6xqTFThC0Rjf7Zj
Workplace Program DetectorLi6pPDhqbdzFz3h7G
X Brand Presence MapperoLOgadhHUkNAyDA3w
YouTube Channel from Company Domain6hSpD3kd2s2IQ4VSs
Zillow Listing DetailsyG4zM0Enfsw2NefJ1

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.

🆘 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. This actor fetches nothing itself. Hiring data comes from the public job board APIs of Greenhouse, Lever, Ashby, Workable, SmartRecruiters, and Personio; tech stack data comes from rendering the company's own public web pages. No personal data is collected: the output describes a company's hiring posture and its website's software, not people. You are responsible for how you use the output.

Built by Mamba Labs.