Detect website technology stack
detect_tech_stackIdentify technologies behind one or many websites from public signals, returning CMS, ecommerce, analytics, hosting, CDN, email and DNS providers with confidence scores and filters by technology.
Instructions
Detects the technology stack of one or many websites from public signals: homepage HTML, script/stylesheet URLs, HTTP headers, cookie names, public DNS (MX, SPF, DMARC, NS, CNAME), TLS issuer and robots.txt. Returns per site the technologies found (category, confidence 0-100, version, evidence) plus convenience fields cms, ecommerce, analytics, advertising, hosting, cdn, emailProviders and dnsProvider. Covers 1,000+ technologies (CMS, ecommerce and Shopify apps, analytics, tag managers, ad pixels, consent tools, CRM, chat, payments, CDN, hosting, email providers). Filters build lists such as "Shopify stores not using Klaviyo" (onlySitesUsing / excludeSitesUsing). mode "http" (default) is fast and cheap; "browser" also catches tags injected by tag managers. Respects robots.txt and never bypasses bot protection: blocked sites return status "blocked" and are not charged. It analyses only the sites you pass; it cannot list every site using a technology. Runs an Apify Actor on the caller's own Apify account (billed by Apify pay-per-event, capped per run).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "browser" renders in headless Chrome (more tags, costs more). Prefer http. | http |
| urls | Yes | Domains or URLs, e.g. ["example.com", "https://shop.example.co.uk"] | |
| checkDns | No | Look up MX/NS/SPF/DMARC records to detect the email and DNS providers. | |
| checkTls | No | Read the TLS certificate issuer and expiry date. | |
| matchAll | No | onlySitesUsing must ALL match (default: any). | |
| extraPaths | No | Extra paths per site, e.g. ["/pricing", "/cart"] | |
| minConfidence | No | Drop detections below this confidence (0-100). | |
| onlyCategories | No | Keep only these categories, e.g. ["Booking & scheduling"] | |
| onlySitesUsing | No | Keep only sites using these technologies, e.g. ["Shopify"] | |
| includeEvidence | No | Include evidence strings (more tokens). | |
| excludeSitesUsing | No | Drop sites using these, e.g. ["Klaviyo"] |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| run | Yes | ||
| tool | Yes | ||
| items | Yes | Result records (trimmed for context). Records often carry a recordType discriminator. | |
| notes | Yes | ||
| dryRun | Yes | true = built-in SAMPLE data from this server, NOT a real lookup | |
| status | Yes | "running" = still working; call get_run_results with run.runId later | |
| summary | Yes | ||
| truncated | Yes | true = more records exist than are included here (see datasetUrl) | |
| datasetUrl | No | ||
| disclaimer | No | ||
| itemsTotal | Yes | ||
| sampleData | Yes | true = the Actor returned fictional sample rows (e.g. no credentials configured); never present as real |