Tech Stack Detector like Wappalyzer & BuiltWith avatar

Tech Stack Detector like Wappalyzer & BuiltWith

Pricing

from $1.50 / 1,000 website analyzeds

Go to Apify Store
Tech Stack Detector like Wappalyzer & BuiltWith

Tech Stack Detector like Wappalyzer & BuiltWith

Detect the technologies behind any list of websites: CMS, ecommerce platform, analytics, ad pixels, marketing tools, payment, CDN, hosting, frameworks and 7,600+ more, plus email provider and SPF senders from DNS. One clean row per website. Pay only for websites analysed.

Pricing

from $1.50 / 1,000 website analyzeds

Rating

0.0

(0)

Developer

Wrenfield Data

Wrenfield Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Website Tech Stack Detector - Wappalyzer & BuiltWith Alternative

Find out what any website is built with. Paste a list of websites or domains and get, for each one, its CMS, ecommerce platform, analytics, ad pixels, marketing automation, payment processors, live chat, CDN, hosting, JavaScript frameworks and more, out of 7,600+ technologies. DNS checks add the domain's email provider (Google Workspace, Microsoft 365...) and the SaaS tools allowed to send its email (HubSpot, Salesforce, Zendesk, SendGrid...). You get one clean row per website, ready for your CRM, Clay, n8n, Make, Zapier or an AI agent.

  • ๐Ÿ”Ž Wappalyzer-compatible detection: uses the open-source Wappalyzer fingerprint format (7,600+ technologies in 100+ categories). Matches headers, cookies, meta tags, script URLs, inline scripts, HTML, DOM selectors, DNS records and the TLS certificate. It also returns versions where the site shows them (e.g. WordPress 6.8).
  • ๐Ÿ“ฌ Signals other detectors miss: emailProvider and emailSecurityGateway from MX records, emailSendingServices from SPF, dnsProvider, sslIssuer, and services that verified the domain (Google, Facebook, Atlassian, DocuSign...).
  • ๐ŸŽฏ Lead lists by technology: set Only websites using to e.g. Shopify + Klaviyo and get only the matching sites. Non-matching sites are not charged.
  • ๐Ÿ’ธ Pay only for websites analysed: a flat price per website with at least one technology detected. Dead domains, blocked sites and invalid inputs return a free row that says why.
  • ๐Ÿงฎ Lead scoring built in: paidSaasCount and techSpendScore estimate how much a company spends on SaaS, using pricing tiers from the fingerprints.
  • โšก Fast and light: plain HTTP with a real-browser TLS fingerprint, no headless browser. In our cloud tests, 3-20 websites took 5-11 s, and 1,000 random domains took about 6.5 minutes (1 GB memory, 40 in parallel).

๐Ÿ’ธ $2.50 per 1,000 websites with at least one technology detected. Dead or blocked sites are free. Try it on Apify's free plan ($5 of monthly credit, no credit card).

Sample output

DomainTechnologiesCMSWeb serverCDN
wordpress.org14WordPress, WordPress Block EditorNginxโ€“
apify.com22โ€“โ€“Amazon CloudFront, Amazon S3
allbirds.com16โ€“โ€“Cloudflare

What data do you get?

Field groupFields
Summarydomain, url, status, technologyCount, technologies (all names), technologiesByCategory
Flat categories (arrays)cms, ecommerce, ecommerceAddOns, paymentProcessors, analytics, tagManagers, advertising, marketingAutomation, emailServices, crm, liveChat, abTesting, reviews, cookieConsent, javascriptFrameworks, javascriptLibraries, uiFrameworks, webFrameworks, programmingLanguages, webServers, cdn, hosting, security, searchAndAI, bookingAndScheduling, forms, recruiting, seo
Email & infrastructureemailProvider, emailSecurityGateway, emailSendingServices, dnsProvider, sslIssuer, sslValidUntil, dnsRecords (mx, ns, spf, txtVerifications, cname)
Lead scoringpaidSaasCount, techSpendScore
DetailstechnologyDetails: name, version, confidence, categories, groups, website, description, saas, openSource, pricing, cpe, detectedBy
Pagetitle, description, language, httpStatus
Run infostatus, error, errorType, pagesScanned, scannedUrls, pagesFailed, proxyUsed, redirectedFrom, sourceName, sourceIndex, scrapedAt

How to use

  1. Paste websites or domains into Websites / domains, one per line: acme.com, https://www.acme.com, acme.com/pricing. Email addresses also work (their domain is used).
  2. Or enrich a dataset: put the ID of a dataset from another Actor (for example Google Maps Scraper, Website Contact Scraper or Company Name to Domain Finder) into Enrich an existing dataset. The website field is detected automatically (website, url, domain...).
  3. Optional: Only websites using (e.g. Shopify, HubSpot), Pages per website (1-5), Minimum confidence.
  4. Click Start. Download the results as JSON, CSV or Excel. The All categories view is flat and CSV-ready. You can also call the Actor through the API or MCP.

Input example

{
"urls": ["apify.com", "wordpress.org", "allbirds.com", "gymshark.com"],
"maxPagesPerWebsite": 1,
"checkDnsAndTls": true,
"minConfidence": 50,
"onlyWithTechnologies": []
}

Output example

A row from a cloud test run (some fields trimmed):

{
"input": "levainbakery.com",
"domain": "levainbakery.com",
"url": "https://levainbakery.com/",
"status": "ok",
"technologyCount": 26,
"technologies": [
"Cart Functionality",
"Shopify",
"Apple iCloud Mail",
"Microsoft 365",
"Amazon Web Services",
"Apple Pay",
"Amazon S3",
"Amazon SES",
"Anthropic",
"Appstle",
"Attentive",
"Black Crow",
"Cloudflare",
"Cloudflare DNS",
"GlobalSign",
"HSTS",
"Klaviyo",
"Klaviyo Reviews",
"Let's Encrypt",
"Mailgun",
"parallax.js",
"Priority Hints",
"Sendgrid",
"Yotpo Reviews",
"HTTP/3",
"Open Graph"
],
"cms": [],
"ecommerce": [
"Cart Functionality",
"Shopify"
],
"ecommerceAddOns": [
"Appstle"
],
"paymentProcessors": [
"Apple Pay"
],
"analytics": [],
"marketingAutomation": [
"Black Crow",
"Klaviyo",
"Attentive"
],
"emailServices": [
"Microsoft 365",
"Amazon SES",
"Mailgun",
"Sendgrid"
],
"reviews": [
"Klaviyo Reviews",
"Yotpo Reviews"
],
"cdn": [
"Amazon S3",
"Cloudflare"
],
"hosting": [
"Amazon Web Services",
"Cloudflare DNS"
],
"emailProvider": null,
"emailSecurityGateway": "SpamTitan",
"emailSendingServices": [
"Amazon SES",
"SendGrid",
"Microsoft 365"
],
"dnsProvider": "Cloudflare",
"sslIssuer": "Let's Encrypt",
"paidSaasCount": 6,
"techSpendScore": 8,
"technologyDetails": [
{
"name": "Shopify",
"version": null,
"confidence": 100,
"categories": [
"Ecommerce"
],
"groups": [
"Sales"
],
"website": "https://shopify.com",
"saas": true,
"openSource": null,
"pricing": [
"low",
"recurring"
],
"cpe": null,
"detectedBy": [
"inlineScript",
"meta",
"scriptSrc"
]
},
{
"name": "Klaviyo",
"version": null,
"confidence": 100,
"categories": [
"Marketing automation"
],
"groups": [
"Marketing"
],
"website": "https://www.klaviyo.com/",
"saas": true,
"openSource": null,
"pricing": [
"mid",
"recurring"
],
"cpe": null,
"detectedBy": [
"scriptSrc"
]
}
],
"dnsRecords": {
"mx": [
"cloud12.spamtitan.com",
"cloud11.spamtitan.com"
],
"spf": "v=spf1 include:amazonses.com include:sendgrid.net ip4:158.106.221.10 include:spf.protectio...",
"txtVerifications": [
"apple",
"globalsign",
"google"
]
},
"pagesScanned": 3
}

A website that fails returns a free row:

{"input": "notarealdomain-xyz123.com", "domain": "notarealdomain-xyz123.com", "status": "error", "errorType": "dns_not_found", "error": "Domain does not resolve (DNS lookup failed). Not charged.", "technologyCount": 0, "technologies": []}
statusMeaningCharged?
okThe website was analysed and at least one technology was detectedYes
no_technologiesThe website loaded but no known technology was foundNo
filtered_outNone of the Only websites using technologies was found (only output if you enable it)No
errorDNS failure, timeout, blocked, HTTP error, not an HTML site (errorType says which)No
invalid_inputNot a website (e.g. a Facebook page URL, an IP address)No

How it works

  1. Fetch: it tries https://domain, then www. and then http://, and follows redirects (you get redirectedFrom if the site moved to another domain). With Pages per website above 1, it also scans pages from different sections of the site (shop, pricing, blog...).
  2. Fingerprints: every page is matched against 7,600+ open-source Wappalyzer-format fingerprints: response headers, cookies, <meta> tags, <script src> URLs, inline script content, inline CSS, HTML, DOM selectors and visible text.
  3. DNS & TLS: MX, TXT (SPF and site verifications), NS, SOA and CNAME records, plus the TLS certificate issuer. These add email provider, email-sending SaaS, DNS host and SSL issuer, and also feed DNS-based fingerprints.
  4. Resolution: like Wappalyzer, it applies "implies" (WordPress โ†’ PHP, MySQL), "excludes" and "requires" rules. Then it sums the confidence and keeps detections at or above your Minimum confidence.
  5. Blocking: pages are fetched directly with a real-browser TLS fingerprint. A website that answers with a bot check, 403 or 429 is retried through Apify Proxy. You can also enable a residential fallback.

Pricing

This Actor uses pay-per-event pricing. You pay for website-analyzed: one website analysed with at least one technology detected. The price is per website, not per page or per technology. Proxy and compute are included. Websites with nothing detected, websites filtered out by Only websites using, errors and invalid inputs are free. Check the Pricing tab for the current price.

You can cap spending with Max websites analysed or the run's maximum cost. The Actor stops cleanly at the limit and doesn't start websites it can't charge for.

Find sites that use a technology, then pull their contacts or (for Shopify stores) their full catalog.

All of these are maintained by the same developer and export flat JSON, CSV or Excel, so you can feed one tool's dataset into the next.

FAQ

How is this different from Wappalyzer or BuiltWith? Wappalyzer's and BuiltWith's APIs are sold as monthly subscriptions. This Actor uses the same open fingerprint format as Wappalyzer, so detections and names match what you know. You pay per website, with no subscription. Unlike BuiltWith it checks the live website at run time instead of a historical database, so results are current but don't include past technologies.

Why wasn't technology X detected? The Actor doesn't run a headless browser, so tools that are only injected later by JavaScript (some chat widgets and pixels loaded through a tag manager) can be missed. It still finds them when they show up in the HTML, script URLs, inline scripts, cookies, headers or DNS. Setting Pages per website to 2-3 catches tools that only load on some pages. If something is consistently missing, tell us in the Issues tab.

How accurate is it? What does confidence mean? Each fingerprint carries a confidence (usually 100). The confidences of all matching signals are added up, to a maximum of 100. Minimum confidence 50 (the default) hides weak single-signal guesses. detectedBy shows how each technology was found (headers, scriptSrc, dom, dns, implied...), so you can judge for yourself.

Can I find all websites using a technology (e.g. every Shopify store)? This Actor checks the websites you provide. It doesn't search the whole web. Feed it a list (from Google Maps Scraper, a CRM export or a domain list) and use Only websites using to keep only the matches. You only pay for matches.

Why does a website list tools like Zoom, Figma, Atlassian or OpenAI? Those come from the domain's DNS TXT records. Companies add a verification record when they connect their domain to a SaaS account, so it's a solid sign that the company uses that tool, even though it doesn't run on the website. detectedBy: ["dns"] marks them, and dnsRecords.txtVerifications lists the raw verifications. Turn off DNS & TLS checks if you only want what runs on the website itself.

Does it give versions? Yes, when the site exposes them (meta generator tags, script URLs like jquery-3.7.1.min.js, headers). version is null otherwise.

What is techSpendScore? It's a rough lead-scoring signal. For each detected SaaS tool with a paid plan, the fingerprint's pricing tier adds a score (low = 1, mid or price-on-ask = 2, high = 3), and the scores are summed. Higher usually means a bigger marketing/tech budget. paidSaasCount is the number of such tools.

What do the email fields mean? emailProvider comes from the domain's public MX records. emailSendingServices comes from the SPF record, which lists every service allowed to send email as the domain (a strong sign that the company uses HubSpot, Salesforce, Zendesk, Mailchimp...). No email is ever sent.

Do I need a login, cookies or an API key? No. The Actor reads only the public homepage (plus optional extra pages) and public DNS, the same things a browser sees.

What about websites behind Cloudflare or other bot protection? Requests use a real-browser TLS fingerprint, and blocked requests are retried through Apify Proxy. Sites that only show content after a JavaScript challenge may still fail. They return a free error row with errorType: blocked.

Can I use it from an AI agent, n8n, Make or Zapier? Yes. Call it through the Apify API, the MCP server or any integration with one domain and read the first dataset row. Rows are flat, and technologies is a simple list.

Where do the fingerprints come from? From the open-source, community-maintained Wappalyzer fingerprint set (enthec/webappanalyzer, GPL-3.0), pinned to a fixed version and updated regularly. Technology names, categories and icons belong to their respective owners.

Is it legal? The Actor makes one normal request to each public page you give it, plus public DNS lookups, and doesn't log in. It doesn't collect personal data. You are responsible for how you use the results.

Something didn't work? Open an issue on the Issues tab with the run ID and the website. We usually fix things within a day.