Website Tech Stack Detector (Wappalyzer, BuiltWith alternative)
Pricing
from $4.00 / 1,000 website scanneds
Website Tech Stack Detector (Wappalyzer, BuiltWith alternative)
Detect 7,000+ technologies on any website: CMS, ecommerce platform, analytics, ad pixels, payment, live chat, CDN, hosting, email provider (DNS) and more. Bulk domains, clean JSON with version, confidence and evidence. No API key, no browser, no personal data.
Pricing
from $4.00 / 1,000 website scanneds
Rating
0.0
(0)
Developer
Datakiln
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Website Tech Stack Detector (Wappalyzer and BuiltWith alternative)
Paste a list of websites or domains and get back the technologies each one uses: CMS, ecommerce platform, analytics, ad pixels, payment tools, live chat, CDN, hosting, JavaScript frameworks and, through DNS, the email provider. Each technology comes with its category, a version when the site shows one, a confidence score and the signal that revealed it.
It makes one HTTP request per website, reads the response and, if you leave the option on, looks up the domain's DNS records. It opens no browser, needs no login and no API key, and collects no personal data.
Who uses it
| Use | How |
|---|---|
| Sales prospecting (B2B) | Scan a list of leads and keep the ones running Shopify, WooCommerce, HubSpot or whatever you sell to or integrate with |
| SEO and agency audits | See the CMS, analytics, tag managers, CDN and consent tools of a client or a competitor in one row |
| Market research | Scan a few hundred sites in a niche and count which platforms and tools they use, with technologiesByCategory |
| Migration and lead lists | Find sites still on an old platform or an old library version |
| Email and DNS checks | See whether a domain's mail runs on Google Workspace or Microsoft 365, and which DNS host it uses |
| Feeding a workflow or AI agent | Call it through the API or MCP and read the JSON rows |
How it works
For every site the Actor:
- Normalizes the input (
example.combecomeshttps://example.com) and removes duplicates. - Requests the page once and follows redirects. Only that page is fetched, no links are followed.
- Reads the final URL, response headers, cookies, the HTML, meta tags, script URLs, inline scripts, inline CSS and page structure.
- Optionally reads the domain's MX, TXT, NS, SOA and CNAME records.
- Matches all of that against 7,628 technology fingerprints from the open-source webappanalyzer project (GPL-3.0), fetched on 2026-10-05, and adds technologies those fingerprints imply (for example, WooCommerce implies WordPress).
Detection is pattern matching on what the server sends. No JavaScript is executed.
How to use it
- Paste websites or domains, one per line. A missing
https://is added for you. - Leave the defaults or narrow the result with
categoryFilterandminConfidence. - Start the run and open the dataset. The "Overview" view lists each domain with its technologies, split into what the website shows and what only DNS shows. The "By category" view groups them.
Example input:
{"urls": ["mailchimp.com", "https://www.wikipedia.org", "example.com"],"checkDns": true,"minConfidence": 50,"categoryFilter": ["CDN", "Analytics", "Email"]}
Input
| Field | Type | Default | What it does |
|---|---|---|---|
urls | array of strings | required | Websites or domains, one per line. example.com, www.example.com and https://example.com/page all work. Duplicates are removed |
checkDns | boolean | true | Also look up MX, TXT, NS, SOA and CNAME. Finds email providers, DNS hosts and SaaS domain verifications that the page does not show |
categoryFilter | array of strings | empty | Keep only technologies in these categories, such as Ecommerce, CMS, Analytics, Payment processors, Live chat. Case does not matter. Empty returns everything |
minConfidence | integer 0 to 100 | 0 | Hide detections below this score. 100 keeps only certain matches |
includeEvidence | boolean | true | Add the detectedBy list to each technology |
respectRobotsTxt | boolean | true | Skip websites whose robots.txt disallows the page. Skipped sites are listed and not charged |
maxConcurrency | integer 1 to 100 | 20 | Websites scanned in parallel |
requestTimeoutSecs | integer 5 to 120 | 30 | How long to wait for a site before retrying |
maxRetries | integer 0 to 5 | 2 | Retries before a site is reported as failed. Domains that do not exist are not retried |
proxyConfiguration | object | no proxy | Optional. Use Apify Proxy if some sites block the requests |
Output
One row per website. This is a real row from a scan of mailchimp.com, shortened (the full row lists 19 technologies):
{"inputUrl": "mailchimp.com","url": "https://mailchimp.com/","domain": "mailchimp.com","status": "ok","httpStatus": 200,"title": "Email & SMS Marketing Platform | Mailchimp","language": "en","technologyCount": 19,"technologyNames": ["Akamai", "Microsoft 365", "Optimizely", "React"],"websiteTechnologyNames": ["Akamai", "Optimizely", "React"],"dnsServiceNames": ["Microsoft 365", "Zapier"],"technologiesByCategory": {"CDN": ["Akamai"],"A/B Testing": ["Optimizely"],"JavaScript frameworks": ["React"]},"technologies": [{"name": "Optimizely","slug": "optimizely","categories": ["A/B Testing", "Personalisation"],"version": null,"confidence": 100,"detectedBy": ["scriptSrc"],"website": "https://www.optimizely.com","saas": true,"openSource": null,"pricing": ["poa", "high"],"cpe": null}],"mxRecords": ["mx1.intuit.iphmx.com", "mx2.intuit.iphmx.com"],"nameservers": ["a7-66.akam.net", "a6-66.akam.net"],"error": null,"scannedAt": "2026-10-05T02:54:06.439Z"}
Fields in plain words:
| Field | Meaning |
|---|---|
status | ok, failed, skipped or invalid-input. Only ok is charged |
technologyNames | Flat list of everything found |
websiteTechnologyNames | Technologies seen on the website itself: headers, HTML, scripts, cookies |
dnsServiceNames | Services seen only in DNS records, such as the email provider or a SaaS domain verification. Being in DNS means the domain uses or once verified the service, not that the page loads it |
technologiesByCategory | Category name mapped to the technologies in it |
technologies[].confidence | 0 to 100. Lower scores come from weaker patterns |
technologies[].detectedBy | Signals behind the match: headers, html, scriptSrc, meta, cookies, dom, dns, url, or implied by <technology> |
technologies[].version | Only when the site exposes it. Many hide it |
error | Why a site could not be scanned, for failed and skipped rows |
Rows for failed, skipped and invalid sites keep the same fields with zero technologies, so a filter on status is enough to separate them. A run summary (scanned, failed, invalid, fingerprint source) is stored under SUMMARY in the key-value store.
How much does it cost?
You pay per website read successfully, with the website-scanned event. It is charged once per site, when the row has status: ok.
| Plan | Price per 1,000 websites |
|---|---|
| Free | US$ 6.00 |
| Starter (Bronze) | US$ 5.00 |
| Scale (Silver) | US$ 4.50 |
| Business (Gold) | US$ 4.00 |
There is also an Actor Start fee of US$ 0.00005 per run.
Not charged: websites that fail (DNS error, timeout, connection refused, blocked with 403), websites skipped by robots.txt, lines that are not a valid domain, and duplicates in the list.
You can set a maximum cost per run in the run options. The Actor reads that limit before starting. If your list is longer than the limit allows, it scans only the first sites that fit and writes a warning to the log. If the limit is reached during the run, it stops by itself and keeps the results already saved.
Limits, read before you run
- Detection uses what the server sends. A site that builds its page with JavaScript after loading can show less than it really runs. The Actor does not execute scripts.
- Only the page you give is read (usually the home page). Tools used only on inner pages, such as a checkout, are not seen.
- Some sites block anything that is not a browser. They come back as
failedwith a 403 message, and you are not charged. The Actor does not try to get around that. In our test of 25 sites, one (nytimes.com) was blocked this way. - Fingerprints are community patterns. They can miss a technology, and a few can match something that is not there. Use
confidenceanddetectedByto judge a result, andminConfidenceto cut weak ones. Scripts, headers and cookies are strong signals. A match from HTML text alone is weaker. - Versions appear only when the site exposes them. A missing version does not mean the software is current.
- DNS results depend on the records the owner published. A TXT verification can remain after the company stopped using that service.
- Pages are read up to about 600,000 characters of HTML. Larger pages are cut.
- The fingerprint base is a snapshot (2026-10-05). New tools appear after that date and will not be detected until the base is updated.
- Rows come out in the order scans finish, not in input order.
Responsible use
The Actor reads public pages and public DNS records. It does not log in, fill forms or solve captchas, and it does not send cookies from one site to another. It stores no personal data: the output describes technologies, not people. With respectRobotsTxt on (the default), it skips pages that robots.txt disallows. You are responsible for how you use the results, including contacting businesses you find with them, under the rules that apply to you (for example GDPR, CAN-SPAM, LGPD) and each site's terms.
FAQ
Does it run a browser? No. It makes a plain HTTP request and reads the response, which keeps it fast and cheap. The trade-off is in Limits: it cannot see what a script adds after the page loads.
Why did a site come back as failed and what do I pay?
The domain may not exist, may time out, or may block bots. Failed rows are in the dataset with the reason in error, and cost nothing.
Can I scan a specific page and not the home page?
Yes. Give the full URL, such as https://example.com/pricing. That one page is read. DNS is always checked on the domain.
What is the difference between websiteTechnologyNames and dnsServiceNames?
The first list is what the page, headers and cookies show. The second is what only DNS records show, mostly the email provider and SaaS domain verifications. Both are in technologyNames.
Can I find only sites using a given platform?
Run the list, then filter the dataset on technologyNames or technologiesByCategory in your tool or with the API. The Actor does not discover sites for you, it scans the ones you give it.
Is the data live? Each run fetches the sites at that moment. Nothing is cached between runs. Schedule the Actor if you want to track changes over time.
How many sites can I scan in one run?
There is no fixed cap in the Actor. Your limit is your maximum cost per run and your plan's memory. Raise maxConcurrency for large lists, and lower it if many sites fail.
Feedback and feature requests
Found a technology that is missed or wrongly detected, or want a new field or option? Open an issue in the Issues tab of this Actor. Include the website and what you expected to see, and I will check it against the fingerprints.