Tech Stack Detector - BuiltWith & Wappalyzer Alternative avatar

Tech Stack Detector - BuiltWith & Wappalyzer Alternative

Pricing

Pay per event

Go to Apify Store
Tech Stack Detector - BuiltWith & Wappalyzer Alternative

Tech Stack Detector - BuiltWith & Wappalyzer Alternative

Detect CMS, frameworks, analytics, CDN and e-commerce on any website. 7,600+ fingerprints, versions, optional JS rendering. JSON output.

Pricing

Pay per event

Rating

0.0

(0)

Developer

psx

psx

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Website Tech Stack Detector - 7,500+ technologies (BuiltWith / Wappalyzer alternative)

Find out what any website is built with: CMS, e-commerce platform, JavaScript frameworks, analytics, tag managers, CDN, hosting, web servers, payment providers, email and marketing tools, and more. Matching is done against 7,600+ community-maintained technology fingerprints (HTML, script URLs, meta tags, HTTP headers, cookies, URL patterns, DNS records and JavaScript globals), with version detection, confidence scores and "implies" resolution (e.g. Next.js implies React).

Fast HTTP-only mode by default (one GET per URL), plus an optional headless-browser mode (renderJs) that executes JavaScript so client-rendered sites and JS globals (e.g. __NEXT_DATA__, React.version) are detected too.

Use cases

  • Lead qualification and sales prospecting - find all companies using Shopify, HubSpot, WooCommerce or a specific CMS, and filter by category.
  • Competitor research - see which frameworks, analytics, A/B testing and marketing tools competitors use.
  • Agencies and web consultants - audit client or prospect sites, spot outdated versions.
  • Market research and tech-adoption trends - run thousands of domains and aggregate.
  • AI agents and MCP - structured JSON output, one clear record per URL; call it from an AI agent through the Apify MCP server or API to answer "what is this site built with?".

Input

FieldTypeDefaultDescription
urlsstring[]requiredUp to 5,000 URLs or bare domains.
renderJsbooleanfalseUse headless Chromium; enables JS-global detection. Slower.
concurrencyinteger10Parallel requests overall (max 2 per host; browser mode capped at 5).
includeCategoriesstring[]allOnly return technologies in these categories, e.g. ["CMS", "Ecommerce", "CDN"].
respectRobotsbooleantrueSkip pages disallowed by robots.txt.
{ "urls": ["wordpress.org", "https://nextjs.org"], "renderJs": false, "includeCategories": [] }

Output

One dataset item per URL:

{
"url": "https://wordpress.org/",
"finalUrl": "https://wordpress.org/",
"status": 200,
"technologies": [
{ "name": "WordPress", "categories": ["CMS", "Blogs"], "version": "7.2", "confidence": 100, "evidence": ["meta:generator"] },
{ "name": "PHP", "categories": ["Programming languages"], "version": null, "confidence": 100, "evidence": ["implied-by:WordPress"] },
{ "name": "Nginx", "categories": ["Web servers", "Reverse proxies"], "version": null, "confidence": 100, "evidence": ["header:server"] }
],
"headersSummary": { "server": "nginx", "poweredBy": null, "contentType": "text/html; charset=UTF-8", "via": null, "cdnHints": [], "securityHeaders": ["strict-transport-security"] },
"dns": { "cname": [], "mx": ["..."], "ns": ["..."], "txt": ["..."] },
"title": "Blog Tool, Publishing Platform, and CMS – WordPress.org",
"scannedAt": "2026-10-05T19:03:57.338Z",
"error": null
}

evidence tells you why a technology was reported (html, scriptSrc, scripts, meta:<name>, header:<name>, cookie:<name>, url, dns:<type>, js:<path>, dom, or implied-by:<tech>). Technologies detected only through DNS TXT/MX records (e.g. "Google Workspace", "Atlassian Cloud") mean the organisation uses that service, not that the page itself loads it. Failed, blocked or robots-disallowed URLs produce an item with error set and are not charged.

Pricing (pay per event)

EventWhen chargedPrice
apify-actor-startonce per run$0.005
url-scannedeach URL successfully analysed (failed, blocked and robots-disallowed URLs are free)$0.0025 (= $2.50 per 1,000 URLs)

Why this price: HTTP-only detection costs us almost nothing in compute, and comparable tech-detector actors in the Store charge roughly $1.50-$10 per 1,000 sites. We sit in the middle but with 7,600 fingerprints, versions, confidence, DNS hints and optional JS rendering. Example: 1,000 domains = about $2.50, 10,000 domains = about $25. No monthly rental, no minimum.

Politeness and limits

  • Honest user agent: TechStackDetector/0.1 (+https://apify.com; Apify actor; respects robots.txt).
  • One page request per URL (plus robots.txt, and DNS lookups), 15 s timeout, 1 retry, max 2 concurrent requests per host.
  • robots.txt is respected by default.
  • SSRF protection: only http/https; localhost, .local/.internal hosts and private/reserved IPs (checked after DNS resolution, at connection time, and across redirects) are refused.
  • Only the landing page is analysed (no crawling). Detection is based on what that page and its HTTP response reveal; sites behind bot protection may return a challenge page (you will usually still see the CDN/WAF).
  • Max 5,000 URLs per run.

Disclaimer

Results are best-effort heuristics and can contain false positives or negatives. Use responsibly and comply with the terms of the websites you scan and applicable law. This Actor does not bypass access controls.

Credits and license

Technology fingerprints are from enthec/webappanalyzer (a community fork of the Wappalyzer fingerprint set), licensed under GPL-3.0; the license text is in data/LICENSE-webappanalyzer. This project (matcher and Actor code) is released under GPL-3.0-only accordingly. "Wappalyzer" and "BuiltWith" are trademarks of their respective owners; this Actor is not affiliated with them.

FAQ

How is this different from BuiltWith or Wappalyzer?
It uses the open community Wappalyzer-style fingerprint set (7,600+ technologies) and returns evidence per detection. You pay per URL instead of a monthly seat, and get JSON through the API.

Does it detect client-side rendered sites?
Set renderJs to true. Default mode is one fast HTTP GET and misses JS-only technologies.

Can I get a list of all sites using Shopify?
The Actor analyses URLs you provide. It does not discover sites. Feed it your own lead list and filter output by technology name.

Am I charged for failed URLs?
No. Only successfully analysed URLs trigger url-scanned.

Is it legal?
It reads public pages with a single normal request, identifies itself, and respects robots.txt by default. You are responsible for how you use the data.

Part of the Site Audit Suite

Run the same list of domains through every audit:

Tip: pipe one domain list into several actors with an Apify Task or the API and join the results by url.

Development

npm install
npm run update-fingerprints # download fingerprints into data/ (committed copy is included)
npm test # node:test unit tests (matcher, SSRF guard, robots, helpers)
# local run: put input in storage/key_value_stores/default/INPUT.json
mkdir -p storage/key_value_stores/default
echo '{"urls":["wordpress.org","nextjs.org"],"renderJs":false}' > storage/key_value_stores/default/INPUT.json
npm start # results in storage/datasets/default/
# or: npx apify-cli run # same, via the Apify CLI

Browser mode locally needs Playwright's Chromium (npx playwright install chromium). Deploy (when an Apify account exists): npx apify-cli login && npx apify-cli push. The Dockerfile uses apify/actor-node-playwright-chrome:22.