Tech Stack Detector - Website Technology Lookup
Pricing
from $4.00 / 1,000 website analyseds
Tech Stack Detector - Website Technology Lookup
Find out which technologies any website uses: CMS, ecommerce platform, frameworks, analytics, marketing tools, payments, CDN and hosting. 3,500+ fingerprints, bulk URLs, emails and social links for lead lists. $0.004 per analysed URL, failed URLs are free.
Pricing
from $4.00 / 1,000 website analyseds
Rating
0.0
(0)
Developer
OIa Martin Torheim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Find out which technologies any website is built with, in bulk, for $0.004 per website. Paste a list of URLs or domains and get one clean row per site with its CMS, ecommerce platform, JavaScript frameworks, analytics and marketing tools, payment providers, CDN, hosting, web server and programming language, including versions where the site exposes them.
- 🔍 3,500+ technology fingerprints across 100+ categories (WordPress, Shopify, Wix, Webflow, Next.js, React, Google Analytics 4, Meta/Facebook Pixel, Klaviyo, HubSpot, Stripe, Cloudflare, Vercel and thousands more)
- ⚡ Fast and light: plain HTTP, no headless browser. Hundreds of sites per minute on 256 MB of memory
- 🛡️ Reliable: automatic
www./http:/// expired-certificate fallbacks, one retry for flaky connections and an optional proxy retry for sites that block bots. One broken site never breaks your run - 💸 Failed websites are free: you are only charged for websites that were actually analysed
- 📇 Lead data included: page title, description, language, email addresses and social profiles from the homepage
What can you use it for?
- Lead generation: build lists of stores running Shopify, WooCommerce or Magento, or companies using a competitor's tool (for example everyone with Intercom or Drift), and get their emails and social profiles in the same run.
- Sales prospecting and qualification: enrich your CRM accounts with their tech stack before outreach. "Uses HubSpot + Stripe + Next.js" tells you a lot about budget, maturity and fit.
- Competitor research: see which analytics, A/B testing, chat, payment and hosting tools your competitors rely on, and spot changes over time with scheduled runs.
- Market research: measure the market share of platforms or tools across a list of thousands of sites (the run summary already counts the top technologies).
- Agencies and developers: audit a client's site in seconds, find the CMS before a migration quote, or find every site still on an old jQuery or PHP version.
- Security and IT asset inventory: list servers, frameworks and versions exposed by your own domains.
How it works
- Each website's page is fetched once over plain HTTP (no browser), following redirects.
- The response headers, cookies, HTML, meta tags, script URLs, inline scripts, styles, page text and (optionally) robots.txt are matched against an open-source fingerprint database of 3,500+ technologies, plus our own curated fingerprints for modern stacks (Next.js, Nuxt, SvelteKit, Astro, Remix, GA4, Segment, Plausible, Hotjar, Intercom and more).
- Related technologies are resolved automatically: WordPress implies PHP and MySQL, Next.js implies React and Node.js, and plugins such as WooCommerce are only reported when WordPress is present.
- You get one dataset row per website, and a run summary with the most common technologies.
If a site fails, the Actor tries harder before giving up: for a bare domain it also tries www. and http://, it accepts sites with expired or self-signed certificates, retries once after a dropped connection, and (if you enable a proxy) retries once through Apify Proxy when the site blocks the request. Whatever still fails gets a row with a clear error message, and is not charged.
Input
Only one of startUrls or domains is needed. Everything else has sensible defaults.
| Field | Default | Description |
|---|---|---|
startUrls | - | Full URLs (https://www.example.com/shop). You can upload a CSV/TXT file in the Console |
domains | - | Plain domains, one per line (shopify.com, example.co.uk) |
extractContacts | true | Emails and social profile links from the page |
includeEvidence | false | Adds an evidence list per technology explaining why it was detected |
minConfidence | 0 | Hide detections below this confidence (0-100) |
fetchRobotsTxt | false | Use /robots.txt as an extra signal |
maxConcurrency | 10 | Websites analysed in parallel (1-50) |
requestTimeoutSecs | 20 | Per-site timeout |
followRedirects | true | Analyse the final page after redirects |
proxyConfiguration | off | Used only as a retry for sites that block or cannot be reached directly |
Example input
{"domains": ["allbirds.com", "gymshark.com", "vercel.com", "wordpress.org"],"startUrls": [{ "url": "https://www.example.com/shop" }],"extractContacts": true,"includeEvidence": false,"maxConcurrency": 20}
Output
One row per website. Example (shortened to 4 of 7 technologies, with includeEvidence: true):
{"url": "https://fjordcandles.example/","input": "fjordcandles.example","domain": "fjordcandles.example","finalUrl": "https://www.fjordcandles.example/","statusCode": 200,"success": true,"technologyCount": 7,"technologyNames": ["Shopify", "Cloudflare", "Google Tag Manager", "Hotjar", "Klaviyo", "TikTok Pixel", "Open Graph"],"technologies": [{"name": "Shopify","category": "Ecommerce","categories": ["Ecommerce"],"version": null,"confidence": 100,"website": "http://shopify.com","evidence": ["header x-shopid: 12345678", "header powered-by: Shopify"]},{"name": "Cloudflare","category": "CDN","categories": ["CDN"],"version": null,"confidence": 100,"website": "http://www.cloudflare.com","evidence": ["header server: cloudflare", "header cf-ray: 8a1b2c3d4e5f6a7b-ARN"]},{"name": "Google Tag Manager","category": "Tag managers","categories": ["Tag managers"],"version": null,"confidence": 100,"website": "http://www.google.com/tagmanager","evidence": ["inline script googletagmanager.com/gtm.js"]},{"name": "Hotjar","category": "Analytics","categories": ["Analytics"],"version": null,"confidence": 100,"website": "https://www.hotjar.com","evidence": ["inline script static.hotjar.com/c/hotjar-"]}],"categories": {"Analytics": ["Hotjar", "TikTok Pixel"],"CDN": ["Cloudflare"],"Ecommerce": ["Shopify"],"Marketing automation": ["Klaviyo"],"Miscellaneous": ["Open Graph"],"Tag managers": ["Google Tag Manager"]},"title": "Fjord Candles","metaDescription": "Hand-poured soy candles inspired by Norwegian fjords.","language": "en","emails": [],"socialLinks": {"instagram": "https://www.instagram.com/fjordcandles","tiktok": "https://www.tiktok.com/@fjordcandles","pinterest": "https://www.pinterest.com/fjordcandles/"},"server": "cloudflare","responseTimeMs": 412,"fetchedVia": "direct","error": null,"analyzedAt": "2026-10-09T20:30:15Z"}
technologiesare sorted from the most defining categories (CMS, ecommerce) to the most generic.categoryis the main category;categorieslists all of them.versionis filled when the site exposes it (for exampleWordPress 6.4.3,PHP 8.2.10,Angular 17.1.2,Google Analytics→GA4).confidenceis 0-100. Most detections are 100; technologies inferred from another one ("implied") inherit its confidence.- Failed websites have
success: falseand anerrorsuch asDNS lookup failed (domain does not resolve),Timed out after 20 sorHTTP 403 Forbidden. The site blocked the request; enable a proxy in the input to retry through Apify Proxy.If the site answered with an error page, technologies visible in its headers (for example Cloudflare) are still listed. - The dataset has three views in the Console: Overview, Technologies by category and Leads (contacts). Export to CSV, Excel, JSON or connect it to Make, Zapier, n8n, Google Sheets or your CRM.
A run summary is saved as OUTPUT in the key-value store: number of websites analysed and failed, events charged, the 25 most common technologies, and the list of errors.
Pricing
This Actor uses pay-per-event pricing:
| Event | Price | When |
|---|---|---|
url-analyzed | $0.004 ($4 per 1,000 websites) | A website was fetched and analysed successfully |
| Actor start | Apify default | Once per run |
- 100 websites = $0.40
- 1,000 websites = $4
- 10,000 websites = $40
That is up to 25x cheaper than other tech-stack lookup Actors that charge around $0.10 per URL. You are not charged for websites that fail (DNS errors, timeouts, blocked requests, non-HTML responses), for duplicates in your input, or for the extra fallback and proxy retries. Set Maximum cost per run in the run options and the Actor stops cleanly when the budget is used up; failed websites never use up your budget.
FAQ
How accurate is it?
Detection uses the same kind of fingerprints that popular browser extensions use (headers, cookies, meta tags, script URLs, HTML patterns, CSS selectors). Turn on includeEvidence to see exactly why each technology was reported.
Why is a technology I know about missing? This Actor does not run a browser, so tools that only appear after JavaScript runs in the visitor's browser, and do not leave a trace in the HTML, headers or cookies, can be missed. Single-page apps that render everything client-side expose fewer clues. Only the page you enter is analysed (usually the homepage); tools used only on checkout or other pages are not seen.
A site returns 403 or "blocked". What can I do? Enable Proxy (fallback only) in the input. Blocked sites are then retried once through Apify Proxy (Datacenter by default; choose RESIDENTIAL for the strictest sites). Sites that still block are not charged.
Can I analyse thousands of websites?
Yes. Up to 50,000 URLs per run; use maxConcurrency 20-50 for big lists. Split larger lists into several runs.
Does it find emails? It collects email addresses and social profile links that appear on the analysed page itself (mailto links and visible text). It does not crawl other pages or guess emails.
Can I call it from my code or no-code tools? Yes, through the Apify API, the Python and JavaScript clients, or integrations such as Make, Zapier, n8n and Google Sheets.
Limits
- One page per website (the URL you enter, after redirects). Pages larger than 4 MB are truncated.
- No JavaScript execution: about 300 of the 3,500+ fingerprints can only be seen in a browser and are not detected.
- The fingerprint database is based on the last MIT-licensed release of the Wappalyzer data (January 2023) plus our own curated additions. Very new tools may be missing; tell us in the Issues tab and we will add them.
- Private and internal addresses (localhost, 10.x, 192.168.x and similar) are rejected.
Is it legal?
The Actor reads only public web pages and HTTP headers that any visitor's browser receives, once per website. It does not log in or bypass paywalls. Email addresses and social links are personal data in some cases: make sure your use (for example cold outreach) complies with GDPR, CAN-SPAM and other applicable laws. Read more in Apify's post Is web scraping legal?.
Credits
Technology fingerprints and categories are derived from the open-source Wappalyzer data, version 6.10.54, released under the MIT License (see LICENSE-wappalyzer.txt in the source data folder). This Actor is not affiliated with or endorsed by Wappalyzer or any of the technology vendors it detects; all product names are trademarks of their respective owners.