Website Tech Stack Detector
Pricing
$20.00 / 1,000 analysed domains
Website Tech Stack Detector
Technology lookup for any list of domains. Detect CMS, ecommerce platform, analytics, frameworks and CDN in bulk. A Wappalyzer and BuiltWith alternative.
Pricing
$20.00 / 1,000 analysed domains
Rating
0.0
(0)
Developer
Gerald Dobin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Give this Actor a list of domains and it tells you what each website is built with. It fetches every site once, reads the response headers, cookies, meta tags, script tags and HTML, and matches all of it against 7,624 technology fingerprints. You get back one row per domain with the CMS, the ecommerce platform, the JavaScript frameworks and libraries, analytics and tag managers, ad tech, CDN, hosting and platform providers, the web server, the security headers, and optionally the TLS certificate issuer and the email provider from the MX records. Ten domains or ten thousand, the input is the same list.
Who it is for
Sales teams qualifying leads. Upload the domains from your CRM and filter the result by
ecommercePlatform. If you sell a Shopify app, you now know which of your 4,000 prospects run
Shopify, which run BigCommerce, and which run something you cannot integrate with at all. The same
row tells you whether they already use a competitor's analytics or tag manager.
Agencies auditing prospects. Before a pitch, run the prospect and their five closest competitors. The output shows the CMS and its version, the ad and analytics stack, whether the site sends HSTS and a content security policy, and who issues the certificate. That is a technical audit slide you can build in ten minutes instead of an afternoon.
Competitive research and migration targeting. Run a market list once a quarter and count the platforms to get technology market share over time. Or go the other way and target a migration: pull every WordPress site in a list of 50,000 domains, or every site still on an old jQuery, and hand marketing a segment worth emailing.
What you get
One dataset row per input domain, with stable field names so you can build on them. This is a real
row from a test run, with the technologies array cut down to three entries for readability:
{"domain": "allbirds.com","inputUrl": "https://allbirds.com/","finalUrl": "https://www.allbirds.com/","httpStatus": 200,"redirected": true,"technologies": [{"name": "Shopify","categories": ["Ecommerce", "CMS"],"version": null,"confidence": 100,"website": "https://shopify.com","evidence": ["header:powered-by: Shopify","cookie:_shopify_s","cookie:_shopify_y"]},{"name": "Cloudflare","categories": ["CDN"],"version": null,"confidence": 100,"website": "https://www.cloudflare.com","evidence": ["header:cf-cache-status: DYNAMIC", "header:cf-ray: a37949514d4ab35f-SEA", "header:server: cloudflare"]},{"name": "Google Tag Manager","categories": ["Tag managers"],"version": null,"confidence": 100,"website": "https://www.google.com/tagmanager","evidence": ["html: <!-- Google Tag Manager -->"]}],"cms": "Shopify","ecommercePlatform": "Shopify","frameworks": [],"javascriptLibraries": ["Swiper"],"analytics": [],"tagManagers": ["Google Tag Manager"],"adTech": [],"cdn": ["Cloudflare"],"hosting": [],"paas": [],"emailProvider": ["Microsoft 365"],"serverHeader": "cloudflare","poweredBy": null,"securityHeaders": { "hsts": true, "csp": true, "xFrameOptions": true },"sslIssuer": "Let's Encrypt","sslExpiry": "2026-11-09T00:48:32.000Z","tlsError": null,"ipAddress": "23.227.38.32","dnsProvider": "MarkMonitor DNS","technologyCount": 10,"blocked": false,"error": null,"detectedAt": "2026-09-07T22:53:03.919Z"}
Every technology carries the evidence that produced it, so you can check any result yourself
instead of trusting a score. Evidence names cookies and credential style headers without their
values, so nothing sensitive from a target site ends up in your dataset. Confidence runs from 0 to
100 and is summed across the signals that matched. Version numbers appear when the site exposes
them, for example WordPress 6.9.7 from the generator meta tag or jQuery 3.5.1 from the script
URL.
Failed domains still produce a row. If a site does not resolve, times out, refuses the request or
answers with a bot challenge page instead of its content, you get the same fields with error set,
blocked telling you whether the site turned the request away, and technologies empty. Your input
list and your output list line up row for row.
How to use it
Input fields:
- Domains or URLs (required). One entry per line. Bare domains such as
allbirds.comor full URLs such ashttps://allbirds.com/collections/mens. Duplicates are removed. - Parallel requests (default 10). How many sites to fetch at once. Raise it for large lists, lower it if you are hitting rate limited hosts.
- Timeout per site (default 30 seconds). Slow sites may need 45 or 60.
- Follow redirects (default on). Follows the bare domain to www, and HTTP to HTTPS.
- Read the TLS certificate (default off). Adds
sslIssuer,sslExpiryandtlsError. The certificate is read without verification, so a site with an expired or self signed certificate is still analysed andtlsErrorsays what is wrong with the chain. - Look up DNS records (default off). Adds
emailProviderfrom MX records anddnsProviderfrom the name servers. - Minimum confidence (default 50). Drops weak matches. Set it to 0 to see everything the fingerprints touched.
Run it from the API with curl:
curl -X POST "https://api.apify.com/v2/acts/titian_fluorite~tech-stack-detector/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"domains": ["allbirds.com", "techcrunch.com", "vercel.com"],"minConfidence": 50,"resolveDns": true}'
That returns the dataset rows as JSON in the same request. For long lists, start the run with
POST /v2/acts/titian_fluorite~tech-stack-detector/runs and read the dataset when it finishes. The
dataset is also available as CSV, Excel, XML and RSS from the same API, so you can load it straight
into a spreadsheet or a CRM import. Apify client libraries exist for JavaScript and Python, and the
Actor works through the Apify MCP server, so an AI agent can call it as a tool and get the
technology stack of a domain back as structured JSON.
Pricing
You pay per domain analysed. Every row that comes back with a technology list is one charged event, and nothing else is billed: no monthly subscription, no per-run fee, no charge for compute time. Domains that fail (DNS failure, timeout, connection refused, or a site that blocks automated requests) are not charged, so a bad list costs you only for the parts that worked.
Accuracy and limits
The detector matches against 7,624 technology fingerprints across more than 100 categories, using the MIT licensed fingerprint dataset published by ProjectDiscovery. On a 25 domain accuracy suite of well known sites, it found 41 out of 41 expected technologies, including the CMS on every publisher tested, the shop platform on every store tested, and the framework and CDN on every SaaS site tested.
What it does not do:
- No browser. Each site is fetched as a single HTTP request, which is why it is fast and cheap. Fingerprints that need a running page, such as JavaScript variables set at runtime or React internals attached to DOM nodes, are skipped. Anything visible in the HTML, headers, cookies, meta tags or script URLs is detected. In practice that covers CMS, ecommerce, CDN, hosting, analytics, tag managers and most libraries, and misses some single page apps that render everything client side.
- Sites that block bots. A minority of large sites answer automated requests with 403 or a challenge page. Those come back as an error row and are not charged. Retrying rarely helps.
- One page per domain. Only the home page is fetched. A technology used solely on a checkout or a blog subpath will not appear.
- Very large pages cost time. The whole home page is downloaded, and pattern matching reads the first 300 KB of it, so a site that serves a multi-megabyte page uses more of your run than a normal one does.
- Convenience fields follow the dataset categories. A platform that lists itself as both CMS and
ecommerce, such as Shopify, appears in both
cmsandecommercePlatform. - Email and DNS fields are empty unless you turn on the DNS lookup option, and
sslIssueris empty unless you turn on the certificate option.
Support
Open an issue on the Actor page with the domain and what you expected. Fingerprint gaps and wrong detections are usually fixed within a few days, and the fingerprint dataset is refreshed regularly. Feature requests for extra output fields are welcome.