Tech Stack Detector: Bulk Website Technology & CMS Lookup
Pricing
$0.50 / 1,000 analyzed sites
Tech Stack Detector: Bulk Website Technology & CMS Lookup
Detect the tech stack of many websites at once: CMS, ecommerce, analytics, CDN, web server, frameworks and 3,600+ technologies with versions. Wappalyzer-style fingerprints over plain HTTP, no browser. $0.50 per 1,000 sites, failures free.
Pricing
$0.50 / 1,000 analyzed sites
Rating
0.0
(0)
Developer
Hill Country Bots
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Features
Share
Find out what any website is built with, for thousands of sites in one run. This bulk tech stack detector and website technology checker returns the CMS, ecommerce platform, analytics, CDN, web server, frameworks and 3,600+ other technologies, with versions and confidence. It's a Wappalyzer-style (and BuiltWith-style) checker that works over plain HTTP, with no browser, no login and no personal data. $0.50 per 1,000 analyzed sites. Invalid, blocked and unreachable sites are free.
What does this tech stack detector do?
For each website or domain you give it, the Actor:
- Fetches the public homepage once (it follows redirects, reads up to about 1 MB of HTML, and sends no cookies or credentials)
- Matches 3,600+ technology fingerprints against the response headers, cookie names,
<meta>tags,<script src>URLs, inline scripts, HTML, DOM selectors, robots.txt and, optionally, public DNS records (MX, TXT, NS, CNAME, SOA) - Returns one row per site with
technologies(name,categories,version,confidence,website), acategoriesmap, and ready-to-filter summary columns:cms,ecommerce,analytics,cdn,server,frameworks - Respects robots.txt by default, and refuses private, local and internal addresses as well as login, account, admin and checkout pages
- Flags bot-protection challenge pages (Cloudflare, Vercel and similar) as
BOT_CHALLENGEand doesn't charge for them
Examples of what it finds: WordPress (with version), WooCommerce, Shopify, Magento, BigCommerce, Squarespace, Wix, Webflow, Drupal, Joomla, Ghost, Next.js, Nuxt.js, React, Vue.js, Angular, Svelte, Astro, Gatsby, Hugo, Jekyll, Docusaurus, Google Analytics, Google Tag Manager, Hotjar, Microsoft Clarity, Facebook Pixel, HubSpot, Klaviyo, Cloudflare, Amazon CloudFront, Fastly, Akamai, Vercel, Netlify, Nginx, Apache, LiteSpeed, PHP, jQuery, Bootstrap, and payment, chat, consent, CRM and email tools.
Who is it for?
- Agencies and lead-gen teams: find every Shopify, WooCommerce or WordPress site on a prospect list, or every site that's missing analytics, then segment with the
cmsandecommercecolumns. Company websites only; the Actor collects no personal data. - SEO, CRO and competitive research: see what competitors run (frameworks, CDNs, A/B testing and analytics tools) across hundreds of domains at once
- AI agents and automations: a stable JSON schema through the Apify API or MCP, a clear
statusfield, and a flat price per site
Quick start
- Paste websites or bare domains, one per line (for example
wordpress.org). The form comes prefilled, so Start works right away. - Optionally lower
maxSitesto cap spend, or raisemaxConcurrencyfor a long list. - Click Start, then download the results as JSON, CSV or Excel, or read them through the API. The Overview view shows one line per site; All technologies shows the full list.
Feeding it a domain list from another tool? Run the Bulk Domain Availability Checker first to drop unregistered domains, so you don't pay for nothing. (Failed sites are free here anyway.)
Sample output
This table is from a real run on November 10, 2026, at 9:34 PM CT (America/Chicago). You pay about $0.50 per 1,000 sites that are successfully analyzed. Unreachable and blocked sites are free.

| Site | CMS | Ecommerce | Analytics | CDN | Server | Frameworks | Techs |
|---|---|---|---|---|---|---|---|
| wordpress.org | WordPress | n/a | n/a | n/a | Nginx | n/a | 12 |
| allbirds.com | n/a | Shopify | Microsoft Clarity | Cloudflare | n/a | n/a | 13 |
| nextjs.org | n/a | n/a | n/a | n/a | n/a | Next.js, React | 10 |
"Techs" is the number of technologies detected on the homepage. If a site cannot be analyzed, the run writes a row with status: "error", errorCode and errorMessage instead of finishing as a silent success with empty data. Those rows are not charged.
Example inputs
Detect the tech stack of a few websites:
{"urls": ["wordpress.org", "https://www.allbirds.com/", "https://nextjs.org/"]}
A bulk lookup of a lead list, capped at 5,000 sites ($2.50 maximum):
{"urls": ["example-store-1.com", "example-store-2.com", "example-agency.com"],"maxSites": 5000,"maxConcurrency": 25}
HTTP only, without DNS lookups (slightly faster):
{"urls": ["https://www.squarespace.com/", "https://webflow.com/"],"checkDns": false}
Scan your own staging site even if robots.txt blocks crawlers:
{"urls": ["https://staging.your-own-site.com/"],"respectRobotsTxt": false}
Ready-to-run example tasks (pre-filled inputs on this Actor's Store page):
- Detect CMS, ecommerce and frameworks on a short site list
- Bulk tech stack lookup of a short lead list
Input
| Field | Type | Default | What it does |
|---|---|---|---|
urls | array of strings | (required, prefilled) | Websites or bare domains. The homepage (or the exact public page given) is analyzed. |
maxSites | integer | 1000 | Max sites analyzed and charged in this run. Caps spend at maxSites × $0.0005. Failed sites don't count. |
maxConcurrency | integer 1-50 | 10 | Sites fetched in parallel. |
requestTimeoutSecs | integer 5-60 | 20 | Seconds per homepage, including redirects. One retry on timeouts, network errors, 429 and 5xx. |
respectRobotsTxt | boolean | true | Skip (free) any page robots.txt disallows for our crawler or for all crawlers. |
checkDns | boolean | true | Read public MX/TXT/NS/CNAME/SOA records to detect email, DNS and hosting providers. |
Output example
{"input": "wordpress.org","url": "https://wordpress.org/","finalUrl": "https://wordpress.org/","statusCode": 200,"pageTitle": "Blog Tool, Publishing Platform, and CMS | WordPress.org","technologyCount": 12,"technologies": [{ "name": "WordPress", "categories": ["CMS", "Blogs"], "version": "7.2", "confidence": 100, "website": "https://wordpress.org" },{ "name": "Gutenberg", "categories": ["WordPress plugins", "Editors"], "version": "24.3.1", "confidence": 100, "website": "https://github.com/WordPress/gutenberg" },{ "name": "Nginx", "categories": ["Web servers", "Reverse proxies"], "version": null, "confidence": 100, "website": "http://nginx.org/en" },{ "name": "Google Tag Manager", "categories": ["Tag managers"], "version": null, "confidence": 100, "website": "http://www.google.com/tagmanager" }],"categories": { "CMS": ["WordPress"], "Blogs": ["WordPress"], "Web servers": ["Nginx"], "Tag managers": ["Google Tag Manager"] },"cms": "WordPress","ecommerce": null,"analytics": [],"cdn": [],"server": "Nginx","frameworks": [],"status": "ok","errorCode": null,"errorMessage": null,"analyzedAt": "2026-11-10T23:30:00.000Z"}
(The technologies list is shortened above. A real row lists everything that was detected.)
A site that could not be analyzed is not charged and looks like this:
{"input": "this-domain-does-not-exist-12345.com", "status": "error", "errorCode": "DNS_NOT_FOUND", "errorMessage": "Domain does not resolve (ENOTFOUND)", "technologies": []}
The key-value store also gets a RUN_SUMMARY record with totals (analyzed, failed, skippedOverCap, technologiesFound).
Output fields (for AI agents and integrations)
status:okmeans the homepage was fetched and analyzed (onesite-analyzedcharge).errormeans it wasn't analyzed and isn't charged.technologies[]:name,categories(category names),version(string ornull),confidence(0-100; 100 = definite),website.cms,ecommerce,server: the main one ornull.analytics,cdn,frameworks: arrays.errorCodeis one of:INVALID_URL,PRIVATE_URL,BLOCKED_PATH,ROBOTS_DISALLOWED,DNS_NOT_FOUND,TIMEOUT,TLS_ERROR,NETWORK_ERROR,TOO_MANY_REDIRECTS,UNSAFE_REDIRECT,HTTP_<code>,NOT_HTML,REDIRECTED_TO_LOGIN,BOT_CHALLENGE.
Use it from the API, MCP or an AI agent
- Actor ID:
hillcountrybots/tech-stack-detector - One API call returns the rows:
curl -X POST "https://api.apify.com/v2/acts/hillcountrybots~tech-stack-detector/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls":["wordpress.org","https://www.allbirds.com/"]}'
- MCP (Claude, Cursor, ChatGPT and other MCP clients): add
https://mcp.apify.com?tools=hillcountrybots/tech-stack-detector. - For agents: branch on
status, and filter oncms/ecommerce. Eachokrow is one charged site. Error rows are free.
How much does it cost?
$0.50 per 1,000 analyzed sites, which is $0.0005 per site-analyzed event. You pay nothing for:
- invalid, private or blocked inputs
- sites that are unreachable, time out, return an error status, are not HTML, redirect to a login page, or show a bot-protection challenge
- pages skipped because of robots.txt or because the
maxSitescap was reached
The Actor's compute is included, so there's no separate platform usage charge. For example, a 2,000-site lead list costs at most $1.00. To cap spend, use maxSites or the run's maximum charge setting. For comparison, other Store tech-stack Actors charge about $1.20 to $2.30 per 1,000 sites, some plus a start fee (Apify Store, Nov 2026).
Limits
- HTTP only, no browser. Technologies that only show up after JavaScript runs (for example tools injected later by Google Tag Manager) can be missed. Fingerprints that need a JavaScript runtime are skipped. We add our own static-HTML patterns for popular frameworks and trackers (Next.js, Nuxt.js, Remix, Angular, Vue.js, Svelte, Squarespace, GA4, Facebook Pixel, Hotjar, HubSpot and others) to close most of that gap.
- Only one page per site is analyzed (the homepage, or the exact public URL you give). Tech that appears only on inner pages, such as checkout, won't show.
- Sites behind strong bot protection can return
BOT_CHALLENGEorHTTP_403/HTTP_429. Those are free. We don't use proxies or try to get around protection. - The fingerprint database is the last MIT-licensed Wappalyzer release (6.10.54, Jan 2023) plus Hill Country Bots additions. Technologies launched after that may be missing until we add them. Open an issue if one is.
- Versions appear only when the site exposes them (meta generator, file names, headers).
FAQ
Is this a Wappalyzer or BuiltWith alternative? It uses Wappalyzer-format fingerprints, runs in bulk, and costs $0.50 per 1,000 sites. It reads each site live and doesn't use a historical database like BuiltWith.
How do I check what CMS a website uses? Paste the domain and read the cms column (WordPress, Drupal, Wix, Squarespace, Webflow...). For stores, read ecommerce (Shopify, WooCommerce, Magento, BigCommerce...).
Can I find all Shopify stores in my list? Yes. Run the list, then filter ecommerce = Shopify in the dataset or in your spreadsheet.
Does it collect personal data? No. It reads public homepage markup and public DNS only, and it never logs in or stores cookie values. Use it on company websites.
Does it respect robots.txt? Yes, by default. Disallowed pages are skipped for free.
What's the accuracy? In our Nov 2026 test of 50 known sites, the expected platform (WordPress, Shopify, Next.js, Squarespace, Wix, Webflow, Hugo, Nuxt and others) was detected on all 32 reachable sites where we knew it. Sites that block bots were returned as free errors. See Limits for what HTTP-only detection can miss.
More tools from Hill Country Bots
- Bulk PageSpeed Insights Test: Lighthouse scores and Core Web Vitals for many URLs. $3 per 1,000 audits, failures free.
- Bulk Domain Availability Checker: Bulk available/taken checks from official registry RDAP, with registrar and expiry dates. $1 per 1,000 domains, invalid inputs and errors free.
- Sitemap URL Extractor: Every URL from a site's XML sitemaps (robots.txt, indexes, gzip). $0.50 per 1,000 URLs, failures free.
- SEO Audit Tool: 0-100 SEO score per page, top 5 fixes and a client-ready HTML report. $2 per 1,000 pages, failures free.
Credits and license
Fingerprint data and the matching engine come from the npm package wappalyzer 6.10.54, which is MIT-licensed, © Elbert Alias / Wappalyzer. Later Wappalyzer releases and the GPL-3.0 community forks are not used. Hill Country Bots isn't affiliated with Wappalyzer or BuiltWith.
Support
Found a missed or wrong technology? Open an issue on this Actor's Issues tab with the run ID and the website. We reply within 2 business days (US Central time). Built and maintained by Hill Country Bots.