Website Technology Stack Detector avatar

Website Technology Stack Detector

Pricing

from $5.00 / 1,000 basic scans

Go to Apify Store
Website Technology Stack Detector

Website Technology Stack Detector

Detect the CMS (WordPress, Shopify), CDN, hosting, DNS provider, analytics, payment and chat tools of each website in a list. One JSON row per domain, with evidence and a confidence score per detection. For lead-list enrichment, audits and AI agents (API, MCP). Pay only for successful scans.

Pricing

from $5.00 / 1,000 basic scans

Rating

0.0

(0)

Developer

Seisuke Nagahara

Seisuke Nagahara

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

12 days ago

Last modified

Security

Limited permissions

Share

Paste a list of domains and get one row per website: CMS, Shopify or WooCommerce, hosting, CDN, DNS and e-mail provider, analytics, payment and live-chat tools. Every detection shows the evidence behind it (a response header, script URL, cookie name or DNS record) and a confidence score, so you can check it before you act on it.

$5 per 1,000 websites scanned successfully (HTTP scan). Blocked, robots-skipped and failed websites are free.

Who it is for

  • Shopify agencies and migration partners: from a list of store or company domains, find the sites that run WooCommerce, Wix, Squarespace or WordPress (ecommercePlatform, cms) and see where they are hosted (hosting) and which DNS provider they use (dnsProvider). Or keep the Shopify sites where marketingTools does not include Klaviyo.
  • Hosting, CDN and IT-service sellers: split a list of company domains by CMS, hosting, CDN and e-mail provider (emailInfrastructure: Google Workspace, Microsoft 365, Zoho Mail, Fastmail) to target a migration or integration offer.
  • Agencies and consultants running audits: which analytics, tag-manager, consent, CDN and hosting tools a client or competitor list uses, in one run.
  • AI agents and pipelines: a structured answer to "what is this site built with?" with verifiable evidence, through the API or MCP.

When to choose this Actor

Choose it when you need to know why a technology was reported before you put it in a lead list or an audit, and when you do not want to pay for sites that could not be scanned.

Choose a tool with thousands of signatures when coverage matters more than verifiability. This Actor recognizes 148 technologies in 24 categories (the full list is below). A technology that is not on that list is not reported. For e-commerce it recognizes Shopify and WooCommerce only.

Real example output

These are real results of the three example domains, scanned with the default HTTP scan on 7 October 2026 (Actor build 0.1.18). Websites change their technology, so a scan you run today can differ from this sample. Empty fields mean nothing was detected, not that nothing exists.

kubernetes.io: 7 technologies

DetectedConfidenceEvidence
Netlify (hosting)99 strongresponse headers server, x-nf-request-id
jQuery99 strongscript code.jquery.com/jquery-3.7.1.min.js
Google Cloud DNS95 strongname server ns-cloud-a2.googledomains.com
Google Workspace (e-mail)95 strongMX record aspmx.l.google.com
Google tag (gtag.js)95 strongscript googletagmanager.com/gtag/js
Google Analytics85 strongsame script
YouTube embed60 weakembedded player URL

nodejs.org: 5 technologies

DetectedConfidenceEvidence
Cloudflare (CDN)99 strongresponse headers cf-ray, server: cloudflare
Next.js99 strongresponse header x-powered-by, plus a /_next/static/ file
Vercel (hosting)95 strongresponse header x-vercel-id
Cloudflare DNS95 strongname server meera.ns.cloudflare.com
Google Workspace (e-mail)95 strongMX record aspmx.l.google.com

python.org (redirects to www.python.org): 4 technologies

DetectedConfidenceEvidence
nginx (web server)95 strongresponse header server: nginx
jQuery85 strongscript ajax.googleapis.com/.../jquery/1.8.2/jquery.min.js
Fastly (CDN)60 weakcache headers such as x-served-by
Mailgun (e-mail service)60 weakSPF record include:mailgun.org; it shows a sender is authorized, not that the service is in use

The raw row behind one of these detections, shortened (nodejs.org, same scan):

{
"url": "https://nodejs.org/",
"scanStatus": "ok",
"scanMode": "http",
"hosting": ["Vercel"],
"cdn": ["Cloudflare"],
"dnsProvider": "Cloudflare DNS",
"frameworks": ["Next.js"],
"technologyCount": 5,
"scannedAt": "2026-10-07T01:38:59.137Z",
"technologies": [
{
"name": "Vercel", "category": "Hosting", "confidence": 95, "evidenceStrength": "strong",
"evidence": [{ "method": "header", "rule": "vercel#2", "key": "x-vercel-id", "value": "iad1::pdx1::s4p9d-1791337139017-5bb95a242b1f", "confidence": 95, "strength": "strong" }]
}
]
}

Your first run (3 websites)

  1. Keep the three example domains in the input and click Start. With the default HTTP scan, three successful scans cost about $0.015, plus a start fee of $0.00005 per GB of run memory.
  2. Open the results. Each row is one website. technologies[] lists every detection with its confidence and evidence.
  3. Paste your own list, one domain per line (up to 10,000). Set minConfidence to 65 to keep only detections backed by direct evidence.
  4. Download the dataset as CSV, JSON or Excel, or call the Actor from the API (examples below). Set Maximum cost per run to cap what a run can spend.

What you get in one run

One flat row per website. Every detection carries a confidence score and the evidence that triggered it, so a sales or audit team can see why a technology was reported and filter out weak guesses with minConfidence.

You want to knowRead this field
Which CMS the site runs (WordPress, Wix, Webflow, …)cms
Whether it is a Shopify or WooCommerce storeecommercePlatform
Which CDN, hosting platform and DNS provider it usescdn, hosting, dnsProvider
Which e-mail provider handles the domain's mailemailInfrastructure
Which payment providers and live-chat tools it usespaymentProviders, chatSupport
Analytics, tag managers and advertising tagsanalytics, tagManagers, advertising
JavaScript frameworks and librariesframeworks, javascriptLibraries
Every detection with its confidence (1–99) and evidencetechnologies[]: name, category, confidence, evidenceStrength, evidence[]

Pricing

Pay per event, per successfully scanned website: a Basic scan for an HTTP scan and a Full scan for a page rendered in a browser. Blocked, robots-skipped and failed rows are not billed. Platform usage is included in the event price; there is no separate compute bill. A small start event ($0.00005 per GB of run memory) applies to each run. The Pricing tab is authoritative.

Basic scan (HTTP, default)Full scan (browser, optional)
Per website$0.005$0.015
100 websites$0.50$1.50
1,000 websites$5$15
10,000 websites$50$150

The table shows the most you pay when every website is scanned successfully; blocked and failed rows reduce it. Tools in this category charge in different ways (per result, per request, by compute time or by subscription), so which one costs less depends on your list size, how many sites fail and which options you use. Compare what your list would cost, not the list price.

HTTP scan and Full scan

HTTP scan (default)Full scan (optional)
HowOne page request, plus DNS and TLS lookups. No browser.The page is rendered in headless Chromium.
Input settingdefaultbrowserFallback: true (only pages that return a thin JavaScript shell) or alwaysUseBrowser: true (every page)
Speedabout 2–4 seconds per site on averageabout 10–30 seconds per page, at most 2 pages at a time
SeesHTML, response headers, cookies set by the server, script/link URLs, DNS, TLSEverything above plus technologies loaded by JavaScript at runtime (for example analytics loaded through a tag manager)
BillingBasic scan eventFull scan event, only for pages that were actually rendered

Use the HTTP scan for large lists. Switch on the browser only where you need runtime-loaded technologies: it is slower and costs more per page. If the browser step fails on a site, you get the plain-HTTP result, billed as a Basic scan, and browserError says why.

Input

FieldDefaultDescription
urls–Bulk input: one domain or URL per line, up to 10,000. https:// is assumed when missing. Duplicates are removed.
browserFallbackfalseRender pages that return only a thin JavaScript shell. Slower, Full scan price for those pages.
alwaysUseBrowserfalseRender every reachable page. Slowest, Full scan price for every rendered page.
respectRobotsTxttrueSkip pages the site's robots.txt disallows for this Actor (user agent TechStackDetector) or for all bots. See below.
minConfidence0Drop detections below this confidence (1–99). Values of 65–70 keep only detections backed by direct evidence.
includeEvidencetrueReturn the signal behind each detection.
includeDns / includeTlstrueDNS records (name servers, MX, SPF) and the TLS certificate issuer/expiry.
maxConcurrency10Sites scanned in parallel (never two requests to the same host at once).
timeoutSecs20Time limit per site.

Output

One dataset row per input URL:

Field groupExamples
StatusscanStatus (ok / blocked / error / skipped_robots), statusCode, errorType, blockReason, scanMode, browserUsed, browserError
PagefinalUrl, title, description, language, redirects
Detectionstechnologies[] with name, category, confidence (1–99), evidenceStrength (strong / weak), optional version, and evidence[]
Flat summarycms, ecommercePlatform, frameworks, javascriptLibraries, analytics, advertising, tagManagers, cdn, hosting, paymentProviders, marketingTools, chatSupport, emailInfrastructure, emailServices, dnsProvider, securityTools, consentManagement, fonts, maps, video, abTesting
Infrastructureserver, poweredBy, tlsIssuer, tlsValidTo, dns, headers, cookies (names only), scripts

The dataset's Overview view shows the flat summary columns in a table. Download it as CSV or Excel for lead lists; use JSON when you want the full technologies[] array with every piece of evidence.

Confidence and evidence strength

  • strong evidence is a direct signal: a vendor-specific response header, a generator meta tag, a script or stylesheet actually loaded from a vendor host, an MX record of a mailbox provider.
  • weak evidence is an inference: an SPF include: (a sender is authorized, not necessarily used), a preconnect hint, a URL that appears only inside inline script text, or a cookie name on its own. A detection that rests only on weak evidence is never reported above confidence 60 (75 with two independent weak signals).
  • Confidence is a signal-strength score, not a probability.

Blocked pages, robots.txt and what cannot be detected

  • Some sites cannot be scanned. Pages behind bot protection (Cloudflare challenge, Akamai, DataDome, Imperva, HTTP 403/429) are reported as blocked with the reason. The Actor does not try to get past them: no CAPTCHA solving, no stealth or evasion techniques, no proxy rotation. On a list of large, well-known brand sites, about 28 of every 100 rows came back blocked, timed out, failed to resolve or were skipped, so expect gaps on such lists.
  • robots.txt is respected by default. The Actor reads a host's /robots.txt once and skips a page if the rules disallow it for the user agent TechStackDetector or for all bots. Skipped pages are returned as skipped_robots. A missing robots.txt (4xx) allows scanning; a server error (5xx) is treated as disallow (RFC 9309). You can switch respectRobotsTxt off, but only do so for sites you own or have permission to scan; that choice and its consequences are yours.
  • Not billed: blocked, skipped_robots and error rows. Only successfully scanned pages are billed.
  • Absence is not proof of absence. The HTTP scan cannot see technologies that are only loaded by JavaScript after the page renders, that run purely on the server without any public trace, or that a site loads only after you accept cookies. Sites can also remove generator tags and hide asset paths.
  • Coverage is limited to the 148 technologies listed below. A technology that is not in the list will not be reported.
  • Bare domains: if a bare domain fails at the network level (no DNS record, connection refused or TLS failure), the Actor tries the www. host once.

Accuracy check

We compared results with facts that site owners and service providers publish themselves (privacy/cookie policies, developer documentation, public source repositories, customer case studies) for 31 sites and 44 documented facts. Every detection that could be checked this way was correct (27 of 27 with the HTTP scan, 32 of 32 with the Full scan), and the scans found 65% (HTTP) and 78% (Full scan) of the documented technologies; the misses were mostly technologies that load at runtime, load only after cookie consent, or leave no public trace. Only about one detection in five could be checked against an official statement, so read this as a sanity check on a small, non-random sample, not as a benchmark or a guarantee.

Use it from the API

Run a scan and get the results in one call (synchronous calls time out after 300 seconds, so send batches of about 100–200 domains for the HTTP scan and fewer than 40 for browser modes, or start an asynchronous run for larger lists):

curl -X POST "https://api.apify.com/v2/acts/asunoki~tech-stack-detector/run-sync-get-dataset-items" \
-H "Authorization: Bearer <YOUR_APIFY_TOKEN>" -H "Content-Type: application/json" \
-d '{"urls": ["python.org", "kubernetes.io"], "minConfidence": 65}'
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("asunoki/tech-stack-detector").call(run_input={"urls": ["python.org", "nodejs.org"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["url"], row["scanStatus"], row["frameworks"], row["hosting"])

Use it from AI agents (MCP)

The Actor can be exposed as a tool through the Apify MCP server. Connect your client to https://mcp.apify.com?tools=asunoki/tech-stack-detector (OAuth sign-in, or an Authorization: Bearer <token> header) and ask, for example, "Which CMS, CDN, hosting provider and payment tools does example.com use? Include the evidence and confidence." The structured output and the evidence per detection make the answer easy to verify.

Supported technologies (148)

CategoryTechnologiesExamples
A/B testing3Optimizely, VWO, LaunchDarkly
Advertising12Google Ads, Criteo, Taboola, Outbrain, …
Analytics15Google Analytics, Mixpanel, Amplitude, Hotjar, PostHog, Matomo, …
CDN9Cloudflare, Fastly, jsDelivr, Bunny CDN, …
CMS11WordPress, Wix, Squarespace, Webflow, Joomla, TYPO3, …
Consent management3OneTrust, Cookiebot, Usercentrics
Customer support / chat8Intercom, Zendesk, Crisp, Tawk.to, Gorgias, …
DNS provider4Cloudflare DNS, Google Cloud DNS, Vercel DNS, DigitalOcean DNS
Ecommerce2Shopify, WooCommerce
Email infrastructure4Google Workspace (Gmail), Microsoft 365 (Exchange Online), Zoho Mail, Fastmail
Email service4SendGrid, Mailgun, Postmark, …
Fonts4Google Fonts, Adobe Fonts, …
Hosting9Vercel, Netlify, WP Engine, Kinsta, Heroku, …
JavaScript framework10Next.js, Nuxt, Gatsby, Angular, Astro, …
JavaScript library4jQuery, Bootstrap, Alpine.js, htmx
Maps3map SDKs and embeds
Marketing automation7HubSpot, Marketo, Klaviyo, Braze, …
Payment8Stripe, PayPal, Klarna, Afterpay, Affirm, …
Programming language1PHP
Security8reCAPTCHA, hCaptcha, Cloudflare Turnstile, …
Tag manager4Google Tag Manager, Tealium iQ, …
Video4Vimeo, Wistia, JW Player, …
Web framework4Express, Django, Ruby on Rails, ASP.NET
Web server7nginx, Apache HTTP Server, LiteSpeed, Caddy, …

The complete list of all 148 technology names is published on the Tech Stack Detector page.

How the rules are made

Every rule comes from vendor documentation or from public observation of vendors' own sites (HTTP headers, HTML, script and link URLs, cookie names, DNS, TLS), and stores its technology, category, detection method, pattern, source URL, source type, confidence and last-verified date. Rules whose source could not be re-verified are excluded. The engine does not use, copy or derive from any third-party or commercial technology-fingerprint database. An LLM helped write the rules; the source-first process and mechanical re-verification are the safeguards, and they cannot prove that no influence from training data exists.

Support

Questions or a wrong detection? Open an issue on the Actor's Issues tab or write to support@asunoki.jp with the URL and the run link.

Responsible use

The Actor requests publicly served pages the way a browser would, at low rate, does not log in or submit forms, and never stores cookie values. You are responsible for using the results in line with applicable laws, the terms of the sites you analyze and your own data-protection obligations. Technology and company names are trademarks of their respective owners; this Actor is not affiliated with or endorsed by any of them.