AI Tooling Detector Company AI Adoption Signals for Clay
Pricing
from $2.55 / 1,000 domain analyzeds
AI Tooling Detector Company AI Adoption Signals for Clay
Detects whether a company declares, deploys, or charges for AI. Returns a flat Clay-ready row with an AI maturity tier, detected AI vendors, llms.txt status, and pricing-page evidence.
Pricing
from $2.55 / 1,000 domain analyzeds
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
๐ค What can AI Tooling Detector do?
Give it a company domain and it tells you whether that company just talks about AI, actually runs AI tooling on its site, or charges money for AI. One flat row per domain.
Most AI detectors return a boolean, which is close to useless for targeting. "Published an
llms.txt" and "bills $0.99 per AI resolution" are the same answer to a yes-or-no question and
completely different sales situations. This actor returns a four-level ai_maturity tier with
the evidence behind it.
| ๐ฆ What you get | โ๏ธ Features and integrations |
|---|---|
| ๐ช Four-level maturity tier, not a boolean ๐ณ Pricing-page commercialization detection ๐ 52 AI vendor fingerprints across 5 categories ๐งพ 29 flat fields, snake_case, one row per domain | ๐ค 26 AI crawler policies read from robots.txtโ Validated llms.txt, not just a 200๐ง Explicit blocked flag, never a silent noโฌ๏ธ Export to JSON, CSV, Excel, HTML or XML |
Bought by teams selling AI infrastructure, AI-adjacent tooling, or anything where "already pays for AI" and "still only talking about AI" are two different pitches.
๐ซ This is not a full tech stack detector. It looks only at AI signals. If you want the general marketing and sales stack, use Tech Stack Detector.
๐ก Why use AI Tooling Detector?
| If you want to find | Filter on |
|---|---|
| Companies that already pay for AI | ai_maturity = "commercialized" |
| Companies talking about AI but not shipping it | ai_maturity = "declared" |
| Companies running a specific vendor | detected_tool_names, detected_categories |
| A quote to paste into an email | evidence |
| Rows you can trust | blocked = false, confidence |
| What was checked and what was not | signals_fired, signals_missing |
๐ช The ai_maturity ladder, and why it is strict
| Tier | What it means | What proves it |
|---|---|---|
commercialized | The company charges for AI | AI credits, token allowances, an AI add-on, an AI-named plan, or a per-outcome AI price on the pricing page |
deployed | AI tooling is running on the site | An AI-native vendor, a direct inference endpoint, or an AI-capable platform backed by AI copy |
declared | The company says AI, nothing observable | A validated llms.txt, AI crawler rules in robots.txt, or weighted marketing copy |
none | No signal fired | Nothing |
Each rung needs its own class of evidence. An llms.txt can never on its own reach deployed,
and a chat widget can never on its own reach commercialized. That is what stops the tier from
collapsing back into a boolean.
The vendor list covers support agents (Sierra, Decagon, Ada, Intercom Fin, Forethought), AI search (Glean, Algolia, Inkeep, Kapa), personalization (Mutiny, Dynamic Yield), direct inference endpoints (OpenAI, Anthropic, Azure OpenAI, Bedrock, Gemini, Groq, Together, Fireworks), vector stores and app frameworks.
๐ What data can AI Tooling Detector extract?
29 fields per domain. The ones buyers use:
| Field | What it holds |
|---|---|
ai_maturity | none, declared, deployed or commercialized |
uses_ai | The boolean, if you really want it |
confidence | How much the verdict rests on |
detected_tools | Vendor, category, whether it is AI-native, and the matching evidence |
detected_tool_names, detected_categories | Flattened for filtering |
ai_pricing_detected, ai_pricing_score, pricing_url | The commercialization evidence |
has_llms_txt, llms_txt_url, llms_txt_reject_reason | Validated, with the reason when rejected |
has_ai_txt | Whether an ai.txt is published |
robots_ai_directives | Per crawler: agent, policy, and the rule that produced it |
ai_copy_matches, ai_copy_weight | Which marketing patterns fired, and how heavily |
evidence | Quotable strings behind the verdict |
signals_fired, signals_missing | What ran and what did not |
blocked, blocked_reason | Bot challenge, reported rather than hidden |
is_js_rendered | The page was a client-rendered shell |
http_status, resolved_url, fetch_error | Transport detail |
is_summary_row, notice, checked_at | Run bookkeeping |
โ ๏ธ Read
confidenceandsignals_missingbefore you trust anone. A verdict built on one reachable page should not be read like a verdict built on five. A domain behind a bot challenge comes backblocked: trueat low confidence, never as a confident no, because without that flag a challenged domain looks identical to a company with no AI at all.
๐ ๏ธ How to detect a company's AI adoption
- Open the Input tab and put a domain in
domain, or a list indomainsfor batch mode. - Leave
check_pricingontrue. Turning it off makes runs faster but caps every result atdeployed, sincecommercializedcan only be proven on a pricing page. - Click Start.
- Read
ai_maturityfor the answer andevidencefor the quote. - Suppress rows where
blockedistruebefore you act on a negative.
๐งช Using it in Clay
Add an Apify enrichment column, point it at this actor, and map your domain column to domain.
Every output field lands as its own Clay column.
Useful follow-on filters:
- Companies that already buy AI:
ai_maturity = "commercialized" - Companies that talk about AI but have not shipped it:
ai_maturity = "declared" - Suppress unreliable rows:
blocked = false AND confidence >= 0.6
๐ฆ Batch mode
Put an array in domains and it takes precedence over domain. batchSize controls how many run
concurrently, 1 to 10. The actor is HTTP only, no browser and no proxy, at 256MB, so batches finish
in seconds.
๐ต How much does it cost to detect AI tooling?
You are charged once per domain analyzed.
| Plan | Per domain | Per 1,000 domains |
|---|---|---|
| Free | $0.003 | $3.00 |
| Bronze | $0.00285 | $2.85 |
| Silver | $0.0027 | $2.70 |
| Gold | $0.00255 | $2.55 |
There is also an Actor start event at $0.00005, charged once per run per GB of memory.
๐ณ Free Apify plans get 15 results per calendar month; paid plans are unlimited. When the free cap is reached the run exits cleanly with a notice row rather than an error. Repeat lookups inside 7 days are served from cache and cost nothing extra.
โจ๏ธ Input
Everything is on the Input tab. The options worth explaining:
| Field | Type | Default | What it does |
|---|---|---|---|
domain | string | intercom.com | A single company domain. Ignored when domains is filled. |
domains | array | [] | Batch mode. Takes precedence over domain. |
vendors | array | all | Report only these AI vendors. See below. |
check_pricing | boolean | true | Fetch and score the pricing page. Off caps results at deployed. |
batchSize | integer | 5 | Domains analyzed concurrently, 1 to 10. |
request_timeout_ms | integer | 9000 | Per-request timeout, 3000 to 20000. |
skipCache | boolean | false | Ignore the 7 day result cache. |
qa_test_mode | boolean | false | Emit a single summary row and skip all network work. |
๐ฏ Reporting on one vendor
vendors narrows the answer to the AI tools you care about, which turns this actor into
competitive intelligence for any one of the 52 fingerprinted vendors.
{ "domains": ["stripe.com", "notion.so"], "vendors": ["sierra"] }
Selectable vendors, by category:
| Category | Vendors |
|---|---|
| Support | Sierra, Decagon, Ada, Forethought, Intercom Fin, Ultimate.ai, Netomi, Yellow.ai, Cognigy, Kore.ai, Chatbase, Voiceflow, Sendbird AI, Intercom, Zendesk, Drift, Gorgias, Freshworks Freddy, Tidio Lyro, Crisp, Kustomer |
| Sales | Qualified Piper, HubSpot Breeze |
| Search | Algolia, Glean, Inkeep, Kapa.ai, Mendable |
| Personalization | Mutiny, Dynamic Yield |
| Inference | OpenAI API, Anthropic API, Azure OpenAI, AWS Bedrock, Google Gemini API, Cohere, Mistral, Groq, Together AI, Fireworks AI, Replicate, Perplexity API, Hugging Face, OpenRouter, Cloudflare AI Gateway |
| Vector DB | Pinecone, Weaviate, Qdrant |
| Framework | Vercel AI SDK, LangChain, LlamaIndex, assistant-ui |
Three things worth knowing:
- Detection is unchanged. Every fingerprint is still evaluated on every run. The filter shapes the answer, not the work, so a filtered run costs exactly what an unfiltered one costs and reuses the same cache.
- The AI maturity read is never narrowed.
ai_maturity,confidence,uses_ai, the llms.txt and robots.txt checks and the pricing score all measure the company's own AI posture, not a vendor list. A row filtered to Sierra still reports honestly that the company iscommercialized; it simply does not list the other tools it also found. - Evidence is filtered in step. Vendor evidence lines for tools you did not ask about are dropped. Every llms.txt, robots.txt, pricing and copy line stays, because those are what the maturity read is built from.
vendors_requested on every row records what you asked for, so a row listing one tool is never
confused with a row where only one tool was looked for.
๐ค Output
One flat row per domain, exportable as JSON, CSV, Excel, HTML or XML.
{"domain": "intercom.com","resolved_url": "https://www.intercom.com/","http_status": 200,"ai_maturity": "commercialized","uses_ai": true,"confidence": 1,"has_llms_txt": true,"llms_txt_url": "https://intercom.com/llms.txt","detected_tools": [{"vendor": "Intercom Fin", "category": "support", "ai_native": true, "confidence": "high", "evidence": "markup match: fin.ai"}],"detected_tool_names": "Intercom Fin","detected_categories": ["support"],"ai_copy_weight": 8,"ai_pricing_detected": true,"ai_pricing_score": 10,"pricing_url": "https://www.intercom.com/pricing","evidence": ["AI priced per resolved outcome: \"$0.99 per Fin outcome\""],"signals_fired": ["llms_txt", "vendor_fingerprint", "pricing_commercialization"],"signals_missing": ["ai_txt", "robots_ai_directives"],"blocked": false,"is_js_rendered": false,"fetch_error": null,"checked_at": "2026-08-05T17:20:00.000Z"}
๐ก Tips
ai_maturity = "declared"is the most interesting segment for most sellers. Those companies have publicly committed to AI and have not yet bought the thing that delivers it.- Always pair a negative with
blocked = false. It is the single cheapest quality gate here. - Keep
check_pricingon. It is the only route to thecommercializedtier. - Use
vendorswhen you are building a displacement list for one tool. The row stays narrow and so does the export. - Paste
evidencestraight into the email. It is stored precisely so a rep can quote it.
โ ๏ธ Known limits
Vendor recall is capped by what the server sends. Modern chat widgets are injected by
client-side JavaScript, so a company running an AI widget that never appears in the served markup
will read as declared rather than deployed. Adding a browser would raise recall, and would also
raise the memory floor to 1024MB and the price with it. The tradeoff was made deliberately in favor
of price.
Anti-bot challenges block a minority of domains, concentrated in large consumer brands and
retail. Those rows come back blocked: true rather than silently negative. No proxy is configured
by default.
commercialized requires a reachable pricing page. Companies that gate pricing behind "contact
sales" cannot be proven to commercialize AI from the outside.
declared is a claim, not a deployment. That is exactly why it is a separate rung, but do not
read it as adoption.
llms.txt is a high-precision positive whose absence proves nothing. Most companies have not
published one, including companies deep into AI.
Fingerprints need maintenance. Vendors change script URLs, and a fingerprint that has not been
refreshed goes quietly stale rather than failing loudly. Read signals_fired to see what actually
matched.
โ FAQ
Why is a company I know uses AI coming back as declared?
Almost always because its AI widget is injected by client-side JavaScript and never appears in the
served markup. Check is_js_rendered.
What happens when a site blocks the actor?
The row is still emitted, flagged blocked: true with a blocked_reason, and confidence is pinned
low. You never get a silent false negative.
Why did /llms.txt not count?
A lot of single-page apps answer /llms.txt with their HTML shell. Those return
has_llms_txt: false with an llms_txt_reject_reason, so the strongest signal in the pack stays
clean.
Does the run ever return nothing?
No. The run always produces at least one dataset item. If no domain was supplied, or the free-tier
cap was reached, you get one notice row with is_summary_row: true.
Is there an MCP server?
Yes. This actor is a tool on the Mamba Labs GTM Suite server, which exposes the whole fleet through one install.
๐งฉ 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
Something wrong, or a vendor the actor misses? Open an issue on the Issues tab with the domain and the row, and we will look at it.
โน๏ธ Sourcing and legal. Every signal comes from pages the company publishes itself, read directly over HTTP with no proxy: the homepage, the pricing page,
robots.txt,llms.txtandai.txt. The row describes what a company published, not what it runs internally. You are responsible for how you use the output.
Built by Mamba Labs.