Tech Stack Detector - Wappalyzer & BuiltWith Alternative
Pricing
from $3.00 / 1,000 url analyzeds
Tech Stack Detector - Wappalyzer & BuiltWith Alternative
Find out what any website is built with: CMS, ecommerce platform, analytics, frameworks, CDN, hosting and payments. 7,600+ technologies, bulk domains in, JSON/CSV out. $3 per 1,000 sites; unreachable sites are free.
Pricing
from $3.00 / 1,000 url analyzeds
Rating
0.0
(0)
Developer
Kanto Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Tech Stack Detector - find what any website is built with
Paste a list of domains, get each site's technology stack back as clean JSON, CSV or Excel: CMS, ecommerce platform, analytics, tag managers, JavaScript frameworks, UI libraries, CDN, hosting, web server, payment and marketing tools - with versions and a confidence score for each detection.
- 7,600+ technologies recognized, using the open Wappalyzer-format fingerprint database
- $3 per 1,000 websites ($0.003 each) - no subscription, no API key, no monthly minimum
- Unreachable websites are free - you are only charged for sites that were actually analyzed
- Bulk-friendly: thousands of domains per run, 10 in parallel by default, one row per site
A Wappalyzer and BuiltWith alternative for people who need the data in bulk, in a spreadsheet or behind an API, without a browser extension or a per-seat plan.
What does Tech Stack Detector do?
For each domain or URL you give it, the actor loads the page once (like a browser visiting it), checks the response against 7,600+ technology fingerprints, and returns:
- the list of technologies found, grouped by category (CMS, Ecommerce, Analytics, CDN, ...)
- the version of each technology when the site exposes it (for example
WordPress 7.2) - a confidence score (0-100) and which signals matched (headers, cookies, meta, script URLs, DOM)
- the site's HTTP status, final URL after redirects, page title, web server and response time
- the technology's CPE identifier when one exists, for matching against vulnerability databases
Use cases
- Lead generation - find every Shopify, WooCommerce, Magento or HubSpot site in a list of prospects.
- Sales intelligence - see which analytics, chat, CRM or payment tool a prospect already uses before the call.
- Lead scoring and CRM enrichment - add a
technologiescolumn to company domains in HubSpot, Salesforce, Clay or a spreadsheet. - Competitor research - compare the stacks of the top sites in your niche.
- Market research - count how many sites in a sample use a given CMS, framework or tool.
- Security and IT audits - spot outdated CMS or JavaScript library versions across a portfolio of sites.
- Agency prospecting - find sites on an old platform that are candidates for a migration project.
Who is it for?
- Sales and SDR teams building lead lists by technology (every Shopify, HubSpot or WordPress site in a list).
- Agencies looking for sites on an old platform or missing analytics, before a pitch.
- RevOps and data teams adding a
technologiescolumn to a CRM or a Clay table. - Market and competitor researchers counting which tools a sample of sites uses.
- Developers who need a Wappalyzer-style detection API with JSON output and no browser extension.
How to use it
- Click Try for free.
- Paste your domains or URLs into Websites, one per line (
example.comworks, so does a full URL). - Click Start. Each site takes about as long as its page takes to load (2.1 s for shopify.com in the example below), with 10 sites fetched in parallel.
- Download the results as JSON, CSV, Excel or HTML, or read them through the API.
Input example
{"urls": ["https://www.shopify.com", "wordpress.org/news", "https://www.bbc.com"],"minConfidence": 50}
| Field | What it does | Default |
|---|---|---|
urls | Domains or URLs, one per line. Strings or {"url": "..."} objects both work. | three example sites |
minConfidence | Hide weak single-signal guesses below this confidence (0-100). 0 returns everything. | 50 |
includeDescriptions | Add a one-paragraph description of each technology | false |
maxConcurrency | Websites fetched in parallel | 10 |
requestTimeoutSecs | Give up on a website that does not answer in time (not charged) | 20 |
proxyConfiguration | Optional Apify Proxy for sites that block datacenter traffic | off |
Output example
One dataset item per website. This is real output from a cloud run of this actor
(the technologies array is trimmed to 2 of its 8 entries):
{"inputUrl": "https://www.shopify.com","url": "https://www.shopify.com","domain": "www.shopify.com","statusCode": 200,"title": "Shopify: The All-in-One Commerce Platform for Businesses - Shopify","server": "cloudflare","technologyCount": 8,"technologyNames": ["Cart Functionality", "Cloudflare", "HSTS", "HTTP/3", "Open Graph","Priority Hints", "Shopify", "Tailwind CSS"],"categories": {"CDN": ["Cloudflare"],"CMS": ["Shopify"],"Ecommerce": ["Cart Functionality", "Shopify"],"Miscellaneous": ["HTTP/3", "Open Graph"],"Performance": ["Priority Hints"],"Security": ["HSTS"],"UI frameworks": ["Tailwind CSS"]},"technologies": [{"name": "Cart Functionality","version": null,"confidence": 100,"categories": ["Ecommerce"],"website": "https://www.wappalyzer.com/technologies/ecommerce/cart-functionality","cpe": null,"detectedBy": ["dom"]},{"name": "Cloudflare","version": null,"confidence": 100,"categories": ["CDN"],"website": "https://www.cloudflare.com","cpe": null,"detectedBy": ["headers"]}],"responseTimeMs": 2108,"error": null}
In a test run, wordpress.org/news returned 12 technologies, including WordPress with
version 7.2, PHP, MySQL, Nginx and Google Tag Manager.
In CSV/Excel exports, technologyNames gives you one flat, filterable column per site.
A site that cannot be reached is still listed, with the reason in error.
How much does it cost to detect a website's tech stack?
$3 per 1,000 analyzed websites ($0.003 per site), pay-per-event. Apify platform compute is included in that price, so the per-site fee is what you pay. There is also a one-off start fee of $0.00005 per GB of run memory (the default 1 GB run = $0.00005 per run).
| You analyze | You pay |
|---|---|
| 1 website | $0.003 |
| 100 websites | $0.30 |
| 1,000 websites | $3.00 |
| 25,000 websites | $75.00 |
What is free: websites that cannot be reached at all - DNS failure, timeout, refused connection,
TLS error - and sites that answer only with a block or an error (HTTP 401, 403, 429 or 5xx, typically a
bot check or a server error). Those rows come back with an error message (plus any technologies seen on
that response) and cost nothing. Every other site that answers is analyzed and charged once; its
statusCode tells you what it returned.
Cost cap: set Maximum cost per run in the run options and the actor stops cleanly when it is reached, so a large list can never cost more than you decided. Apify's free plan includes monthly platform credit you can use to try it.
How it compares
| This actor | Browser extensions | Headless-browser scanners | |
|---|---|---|---|
| Bulk lists (1,000s of domains) | Yes | One tab at a time | Yes |
| Output | JSON, CSV, Excel, API | On-screen | Varies |
| Speed per site | One HTTP request | Page load | Full page render |
| Technologies that only appear after JavaScript runs | Not detected | Detected | Detected |
| Compute per site | Lowest (no browser) | Your own browser | Higher (a browser renders every page) |
Pick this actor when you want breadth and a low per-site price. If you need trackers that only load after a user interaction, a browser-based scanner will see more.
How it works
The actor makes one ordinary HTTP GET request per site and matches the response against the fingerprint database:
| Signal | Example |
|---|---|
| HTTP headers | server: cloudflare, x-shopify-stage |
| Cookies | _shopify_y, _ga, wp-settings |
| Meta tags | <meta name="generator" content="WordPress 6.5"> |
| Script URLs | googletagmanager.com/gtag/js, /wp-includes/ |
| Inline scripts and CSS | framework markers, tracking snippets |
| HTML and DOM selectors | link[href*="/wp-content/"], div[data-reactroot] |
| Implied technologies | WordPress implies PHP and MySQL |
Integrations and API
- API:
POST https://api.apify.com/v2/acts/kantolabs~website-tech-stack-detector/run-sync-get-dataset-items?token=YOUR_TOKENwith the input JSON as the body returns the results in one call. Python and JavaScript clients:apify-client. - AI agents (MCP): available through the Apify MCP server, so Claude, ChatGPT, Cursor or any MCP client can ask "what is example.com built with?".
- No-code: Make, Zapier, n8n, Google Sheets, webhooks and scheduled runs work out of the box.
Run it from your own code with the official apify-client package (Python shown; JavaScript works the same way):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("kantolabs/website-tech-stack-detector").call(run_input={"urls": ["https://www.shopify.com","wordpress.org/news"],"minConfidence": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Or get the results in a single HTTP call:
curl -X POST "https://api.apify.com/v2/acts/kantolabs~website-tech-stack-detector/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://www.shopify.com", "wordpress.org/news"], "minConfidence": 50}'
Limits
- One ordinary HTTP request per site and no browser: tools that only appear after JavaScript runs (some trackers and client-side libraries) are not detected.
- It reads the page you give it (usually the homepage), not every page of the site.
- Sites behind a bot check may answer with a challenge page (HTTP 403/429). That row is free and says so; try the Apify Proxy option for those sites.
- It does not search the web for sites that use a technology - you supply the list of domains.
FAQ
Which technologies can it detect? 7,600+ from the Wappalyzer-format database: CMS (WordPress, Drupal, Webflow, Wix...), ecommerce (Shopify, WooCommerce, Magento, BigCommerce...), analytics and tag managers, JavaScript frameworks, CDNs, hosting providers, web servers, payment providers, marketing automation, chat widgets and more.
How accurate is it?
Technologies that leave a trace in the page the server sends - CMS, ecommerce platform, CDN, web
server, tag manager, analytics loaded from a script URL - are detected reliably. Libraries that only
appear after JavaScript runs in a browser are not reported. minConfidence lets you trade recall for
precision.
Do I pay for sites that fail?
No. Unreachable sites (DNS error, timeout, refused connection) and sites that only answer with a block or
server error (401/403/429/5xx) are returned with an error and are not charged. Only sites that were
actually analyzed count.
Can I pass {"url": "..."} objects instead of strings?
Yes. Both ["example.com"] and [{"url": "https://example.com"}] are accepted.
Is it legal to use? The actor makes one normal page request per site and reads only publicly served markup and headers, the same as any browser visit. It collects no personal data. You are responsible for how you use the results.
Where does the fingerprint data come from? From the open-source wappalyzergo project (MIT licence), which maintains the Wappalyzer-format technology database. The actor's copy is refreshed from that project periodically.
Something is missing or wrong? Open an issue on the Issues tab with the URL and what you expected.
Related Actors by Kanto Labs
- Company Enrichment - logo, socials, industry and size from a domain
- WHOIS & DNS Domain Lookup - registrar, age, expiry, DNS, SSL and DMARC
- Domain Authority Checker - bulk 0-100 authority from open web data
- Website SEO Audit - 0-100 on-page SEO score and fix list per page