Website Tech Stack & Hosting Detector
Pricing
$10.00 / 1,000 domain analyzeds
Website Tech Stack & Hosting Detector
Detect CMS, frameworks, analytics, ecommerce tools, CDN/hosting signals and email providers from public website and DNS evidence. Batch up to 1,000 domains and export structured findings with confidence and evidence. Uses 211 rules; no JavaScript execution.
Pricing
$10.00 / 1,000 domain analyzeds
Rating
0.0
(0)
Developer
Paul Vasquez
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
25 days ago
Last modified
Categories
Share
Tech Stack Detector: CMS, Analytics, Hosting & Email
Find out what a website is built with. Paste domains and get the CMS, frameworks, analytics and tag managers, ecommerce and payment tools, chat widgets, CDN, hosting network and email provider for each site, with the evidence for every detection. About $10 per 1,000 domains, and failed lookups are free.
What data you get
One row per domain you submit. Detections come from 211 detection rules written for this actor, checked against the site's public HTTP response (headers, cookie names, generator tags, script and stylesheet URLs, HTML markers) and, if you leave network lookup on, its DNS records.
| Category | Output field | Examples the rules recognise |
|---|---|---|
| CMS | cms | WordPress, Drupal, Shopify, Webflow, Wix, Squarespace, Contentful |
| Frameworks and libraries | frameworks | Next.js, Nuxt, React, Vue.js, Angular, Laravel, jQuery |
| Analytics | analytics | Google Analytics, Matomo, Plausible, Hotjar, Meta Pixel, Microsoft Clarity |
| Tag managers | tagManagers | Google Tag Manager, Adobe Launch, Tealium |
| Ecommerce | ecommerce | Shopify, WooCommerce, Magento, BigCommerce, PrestaShop |
| Payments | paymentProviders | Stripe, PayPal, Klarna, Adyen, Square |
| Chat and support widgets | chatWidgets | Intercom, Zendesk, Crisp, Tawk.to, Drift |
| CDN | cdn | Cloudflare, CloudFront, Fastly, Akamai |
| Hosting and edge network | hosting, network.asn, network.asnName | Vercel, Netlify, WP Engine, Automattic, AWS (edge network) |
| Email provider | emailProviders, network.mx | Google Workspace, Microsoft 365, Zoho Mail, Mimecast, Proofpoint |
| Marketing tools | marketing | HubSpot, Mailchimp, Klaviyo, Marketo |
| Evidence | technologies | For each detection: name, category, confidence (0 to 100) and the evidence source, for example meta.generator, scripts, headers.x-served-by, asn |
| Page facts | finalUrl, statusCode, server, xPoweredBy, metaGenerators, cookieNames, pagesFetched | Cookie names only; cookie values are never saved |
| Status | success, error, warnings, analyzedAt | success: false plus an error such as HTTP_503 when a lookup fails |
Export the results as JSON, CSV, Excel or HTML from the run's Storage tab, or through the Apify API.
How much does it cost?
You pay $0.01 for each domain that was looked up successfully (event: "Domain"). There is no separate start fee in this actor's pricing.
| Domains looked up successfully | Price |
|---|---|
| 100 | $1.00 |
| 1,000 | $10.00 |
| 10,000 | $100.00 |
Worked example: the default input below (wikipedia.org, python.org, wordpress.org) ran on Apify on 2026-09-27. All 3 sites loaded, so it costs 3 x $0.01 = $0.03.
What is free: failed lookups. If a domain is invalid, cannot be reached, or answers with an HTTP error (status 400 or higher), you still get a row for it with success: false and the error, but you are not charged for it.
Tip: set a maximum charge per run in the run options before a large run. Apify will not charge you more than that amount for the run.
How to use it
- Paste your domains or URLs into Domains or URLs, one per line (up to 1,000 per run). Bare domains are fetched over HTTPS; paths you supply are kept.
- Optional: turn off Homepage only to also read robots.txt and up to one internal page the site allows, which can find tools that are not on the homepage.
- Optional: turn off Look up network and email providers if you only want what the web page shows.
- Click Start, then export the dataset or read it through the API.
Input example
{"domains": ["https://www.wikipedia.org","https://www.python.org","https://www.wordpress.org"],"homepageOnly": true,"timeoutSeconds": 15,"lookupNetwork": true}
Output example
Real rows from a run of the input above on Apify (2026-09-27):
| domain | cms | frameworks | tagManagers | cdn | hosting | ASN | MX |
|---|---|---|---|---|---|---|---|
| www.wikipedia.org | - | - | - | - | - | 14907 (Wikimedia) | none |
| www.python.org | - | jQuery | - | Fastly | - | 54113 (Fastly) | none |
| www.wordpress.org | WordPress | - | Google Tag Manager | - | Automattic (edge network) | 2635 (Automattic) | smtp1-dca.wordpress.org, smtp2-dca.wordpress.org |
The wordpress.org row as JSON (empty category arrays left out):
{"input": "https://www.wordpress.org","domain": "www.wordpress.org","finalUrl": "https://wordpress.org/","statusCode": 200,"success": true,"server": "nginx","xPoweredBy": null,"metaGenerators": ["WordPress 7.2-alpha-63914"],"cookieNames": [],"technologies": [{"name": "WordPress", "category": "cms", "confidence": 100, "evidence": ["html", "meta.generator"]},{"name": "Automattic (edge network)", "category": "hosting", "confidence": 85, "evidence": ["asn"]},{"name": "Google Tag Manager", "category": "tagManagers", "confidence": 95, "evidence": ["html"]}],"confidence": 100,"cms": ["WordPress"],"tagManagers": ["Google Tag Manager"],"hosting": ["Automattic (edge network)"],"network": {"ipAddresses": ["2620:109:b00a::4206:2afc", "66.6.42.252"],"mx": ["smtp1-dca.wordpress.org", "smtp2-dca.wordpress.org"],"asn": 2635,"asnName": "AUTOMATTIC - Automattic, Inc, US","networkName": null,"warnings": []},"pagesFetched": [{"url": "https://wordpress.org/", "status": 200}],"warnings": [],"error": null,"analyzedAt": "2026-09-27T12:37:35.480599+00:00"}
The wikipedia.org row shows an honest empty result: none of the 211 rules matched its homepage, so every category is empty. That means "nothing recognised", not "uses nothing".
FAQ
Does it run JavaScript? No. It reads the HTML and headers the server sends, without a browser. Tags that are added later by scripts, or only after a cookie banner is accepted, can be missed.
What does confidence mean? How strong the matching rule is (a generator tag scores higher than a loose HTML marker). It is not a measured probability. The row's top-level confidence is the highest score among its detections.
I got an empty result. Is that an error? No. Empty arrays mean none of the rules matched. Check success and statusCode first: an error page can hide the real site.
Is the hosting value where the site really runs? It is the network that answered the request (from the IP address's ASN). Behind a CDN, that is the CDN's edge, not the hidden origin server.
Where does the email provider come from? From the MX records of the final website hostname. Some sites have mail records only on the parent domain, so a www. host can show none.
Can I use this instead of a Wappalyzer or BuiltWith lookup? For a first look at the visible stack of many sites, yes. It uses our own 211 detection rules, not theirs, and it has no historical data.
Which sources does it use? The website's own public responses; standard DNS for IP addresses; Google Public DNS (DNS-over-HTTPS) for MX records; Team Cymru's IP-to-ASN DNS service for the network. No API key or account is needed.
Does one bad domain stop the run? No. Each domain gets its own row; failures are recorded in error and are not charged.
Limitations
- No browser, login, proxy rotation or CAPTCHA solving. Sites that block simple HTTP clients return an error row.
- Consent-gated and script-injected tags can be missed; cookie matching sees only cookie names the server sets.
- Sites can hide or fake headers and generator tags.
- Up to 2 MiB of each page is read; larger pages are cut off and a warning is added.
- 211 rules cover common products, not every technology on the web.
- The free DNS services used for MX and ASN can be slow or unavailable; that shows as a warning and does not fail the row.
- At most 1,000 domains per run, processed 10 at a time.
timeoutSecondslimits each request, not the whole domain. - With Homepage only turned off, it follows robots.txt for the user agent
TechStackDetectorand fetches at most one extra same-site page.
Independent tool, not affiliated with Wappalyzer, BuiltWith, Google, Team Cymru or any of the products it detects. Product names are used only to describe what was found.