AI Tooling Detector Company AI Adoption Signals for Clay avatar

AI Tooling Detector Company AI Adoption Signals for Clay

Pricing

from $2.55 / 1,000 domain analyzeds

Go to Apify Store
AI Tooling Detector Company AI Adoption Signals for Clay

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

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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 findFilter on
Companies that already pay for AIai_maturity = "commercialized"
Companies talking about AI but not shipping itai_maturity = "declared"
Companies running a specific vendordetected_tool_names, detected_categories
A quote to paste into an emailevidence
Rows you can trustblocked = false, confidence
What was checked and what was notsignals_fired, signals_missing

๐Ÿชœ The ai_maturity ladder, and why it is strict

TierWhat it meansWhat proves it
commercializedThe company charges for AIAI credits, token allowances, an AI add-on, an AI-named plan, or a per-outcome AI price on the pricing page
deployedAI tooling is running on the siteAn AI-native vendor, a direct inference endpoint, or an AI-capable platform backed by AI copy
declaredThe company says AI, nothing observableA validated llms.txt, AI crawler rules in robots.txt, or weighted marketing copy
noneNo signal firedNothing

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:

FieldWhat it holds
ai_maturitynone, declared, deployed or commercialized
uses_aiThe boolean, if you really want it
confidenceHow much the verdict rests on
detected_toolsVendor, category, whether it is AI-native, and the matching evidence
detected_tool_names, detected_categoriesFlattened for filtering
ai_pricing_detected, ai_pricing_score, pricing_urlThe commercialization evidence
has_llms_txt, llms_txt_url, llms_txt_reject_reasonValidated, with the reason when rejected
has_ai_txtWhether an ai.txt is published
robots_ai_directivesPer crawler: agent, policy, and the rule that produced it
ai_copy_matches, ai_copy_weightWhich marketing patterns fired, and how heavily
evidenceQuotable strings behind the verdict
signals_fired, signals_missingWhat ran and what did not
blocked, blocked_reasonBot challenge, reported rather than hidden
is_js_renderedThe page was a client-rendered shell
http_status, resolved_url, fetch_errorTransport detail
is_summary_row, notice, checked_atRun bookkeeping

โš ๏ธ Read confidence and signals_missing before you trust a none. A verdict built on one reachable page should not be read like a verdict built on five. A domain behind a bot challenge comes back blocked: true at 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

  1. Open the Input tab and put a domain in domain, or a list in domains for batch mode.
  2. Leave check_pricing on true. Turning it off makes runs faster but caps every result at deployed, since commercialized can only be proven on a pricing page.
  3. Click Start.
  4. Read ai_maturity for the answer and evidence for the quote.
  5. Suppress rows where blocked is true before 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.

PlanPer domainPer 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:

FieldTypeDefaultWhat it does
domainstringintercom.comA single company domain. Ignored when domains is filled.
domainsarray[]Batch mode. Takes precedence over domain.
vendorsarrayallReport only these AI vendors. See below.
check_pricingbooleantrueFetch and score the pricing page. Off caps results at deployed.
batchSizeinteger5Domains analyzed concurrently, 1 to 10.
request_timeout_msinteger9000Per-request timeout, 3000 to 20000.
skipCachebooleanfalseIgnore the 7 day result cache.
qa_test_modebooleanfalseEmit 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:

CategoryVendors
SupportSierra, 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
SalesQualified Piper, HubSpot Breeze
SearchAlgolia, Glean, Inkeep, Kapa.ai, Mendable
PersonalizationMutiny, Dynamic Yield
InferenceOpenAI 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 DBPinecone, Weaviate, Qdrant
FrameworkVercel 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 is commercialized; 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_pricing on. It is the only route to the commercialized tier.
  • Use vendors when you are building a displacement list for one tool. The row stays narrow and so does the export.
  • Paste evidence straight 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.

๐Ÿง‘โ€๐Ÿ’ผ GTM Hiring Signal Scraper๐Ÿงฑ Tech Stack Detector
๐Ÿ“ก B2B Buying Signals Aggregator๐Ÿ”‘ Job Board Keyword Scanner
๐Ÿ”— Domain to LinkedIn URL Resolver๐ŸŽฏ ICP Fit Scorer
๐Ÿ“‹ Job Posting Monitor๐Ÿ“ฌ Domain Deliverability Checker
๐Ÿข Company Firmographic Enricher๐ŸŒ Company Social Presence Mapper
๐Ÿชช Company Identity Resolver๐Ÿ’ฐ Funding and Press Signal Scanner
๐Ÿ”„ Company Change-Event Feed๐Ÿ‘ค People Finder and Email Verifier
๐Ÿš€ Prospect Engine๐Ÿ“ฎ Outbound Stack Detector
๐Ÿ“ Publishing Frequency Trackerโœ‰๏ธ Work Email Waterfall Finder
โฉ Sequencer Lead Push๐Ÿ… Workplace Program Detector
๐Ÿ‘ฅ Team Page People Extractor๐Ÿงญ Company Discovery List Builder

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.txt and ai.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.