Website Tech Stack Detector & Technology Lookup
Pricing
$2.00 / 1,000 url analyseds
Website Tech Stack Detector & Technology Lookup
For sales and lead-generation teams who filter prospects by tech stack: give it company websites, get one row per site with its CMS, e-commerce platform, analytics, CRM and frameworks, ready for Google Sheets, a CRM or n8n. Pay only for sites that answer; no start fee.
Pricing
$2.00 / 1,000 url analyseds
Rating
0.0
(0)
Developer
Alexander Wright
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Features
Share
For sales and lead-generation teams who filter prospects by their tech stack. Give it a list of company websites and get one row per site: its CMS, e-commerce platform, analytics, tag manager, marketing automation, CRM, frameworks, web server, CDN and hosting, ready to load into Google Sheets, your CRM or n8n.
Use it to find every Shopify store in a lead list, every prospect still on WordPress, every site without analytics, or to qualify accounts before outreach.
What 1,000 sites cost
Pay per event, only for sites that answer: $0.002 per site analysed, $2.00 per 1,000 sites. No start fee, no monthly rental.
A site is charged only when its final response is 2xx. Sites that time out, don't resolve, block the request (403) or return an error still get a row with their status, and cost nothing. Duplicates in your list (example.com, https://www.example.com/, http://example.com) are analysed and charged once.
In a local test run over 1,000 mid-ranked domains (Tranco ranks 10,001 to 11,000, 9 November 2026), 625 answered with a page and would have been charged: $1.25. The other 375 cost nothing.
Does it still work?
- Apify runs this Actor every day on its default input (Shopify, WordPress and Next.js sites) and labels it Under maintenance if most test runs over three days fail.
- Every push to the code is tested against those three sites: WordPress must be found on wordpress.org, Next.js and React on nextjs.org, Shopify on www.shopify.com, and only sites that returned a page may be charged.
- Detection uses 7,695 technologies in 109 categories from the open webappanalyzer fingerprint set (the community continuation of Wappalyzer's fingerprints), commit of 3 November 2026, plus this Actor's own Next.js patterns (
data/local-fingerprints.json). - Every input has a default, so an empty input
{}runs and returns results.
Will I get blocked or sued?
- One HTTP GET per site (following redirects), to its public home page, with browser-like headers. No login, no browser automation, no proxy, no crawling beyond the home page.
- The output is technical data about websites (technology names, categories, versions). It collects no personal data, emails or contacts.
- Some sites behind bot protection refuse the request, usually with 403 (93 of the 1,000 test domains). Those get a row with their status code and are not charged; there is no retry or evasion. A challenge page served with a 2xx status is charged like any page.
- You are responsible for how you use the results and for the lists you submit.
How do I get it into my tool?
Each run's dataset has one item per site. These flat columns load as they are:
url, domain, finalUrl, statusCode, technologyCount, technologyNames, cms, ecommerce, analytics, tagManagers, advertising, marketingAutomation, crm, liveChat, paymentProcessors, javascriptFrameworks, webFrameworks, programmingLanguages, webServers, cdn, hosting, fetchedAt, error
Each category column lists that site's technologies in the category, comma-separated, or is empty. domain is the host after redirects, without www.: use it to match rows to accounts in a CRM. Different inputs can redirect to the same domain (36 of the 1,000 test rows), so url ties a row back to the list you submitted.
- CSV for Google Sheets, Excel or a CRM import: export the dataset as CSV and leave out the nested
technologiesfield, for example with the API:https://api.apify.com/v2/datasets/<datasetId>/items?format=csv&omit=technologies&token=<your token>Each site is then one row with the columns above. - n8n, Make or Zapier: run the Actor with Apify's integration for that tool (n8n, Make, Zapier) and read the dataset items; use
domainand the category columns directly. - JSON with full detail: the nested
technologiesfield keeps every detection with its categories, version and confidence.
Input
| Field | Default | Description |
|---|---|---|
urls | the three sites above | Home pages to analyse. example.com is read as https://example.com. Duplicates are removed. |
categories | [] (all) | Keep only detections in these categories, for example CMS, Ecommerce, Analytics. |
minConfidence | 50 | Keep only detections at or above this confidence (0-100). |
{ "urls": ["https://www.shopify.com", "https://wordpress.org", "https://nextjs.org"], "categories": [], "minConfidence": 50 }
Sample dataset
From a real run of the input above (9 November 2026), as CSV without technologies, empty category columns left out here for width:
| domain | statusCode | technologyCount | cms | ecommerce | tagManagers | javascriptFrameworks | webFrameworks | programmingLanguages | webServers | cdn | hosting |
|---|---|---|---|---|---|---|---|---|---|---|---|
| nextjs.org | 200 | 8 | Next.js, React | Next.js | Next.js | Vercel | |||||
| shopify.com | 200 | 8 | Cart Functionality, Shopify | Cloudflare | |||||||
| wordpress.org | 200 | 13 | WordPress | Google Tag Manager | PHP | Nginx |
One item in full (technologies shortened to three of thirteen):
{"url": "https://wordpress.org","domain": "wordpress.org","finalUrl": "https://wordpress.org/","statusCode": 200,"technologyCount": 13,"technologyNames": "Google Font API, Google Tag Manager, Gutenberg, HSTS, MySQL, Nginx, Open Graph, PHP, Priority Hints, RSS, WordPress, WordPress Block Editor, WordPress Site Editor","cms": "WordPress","ecommerce": "","analytics": "","tagManagers": "Google Tag Manager","advertising": "","marketingAutomation": "","crm": "","liveChat": "","paymentProcessors": "","javascriptFrameworks": "","webFrameworks": "","programmingLanguages": "PHP","webServers": "Nginx","cdn": "","hosting": "","technologies": [{ "name": "Gutenberg", "categories": ["WordPress plugins", "Editors"], "confidence": 100, "version": "24.3.1" },{ "name": "PHP", "categories": ["Programming languages"], "confidence": 100, "version": null },{ "name": "WordPress", "categories": ["CMS", "Blogs"], "confidence": 100, "version": "7.2" }],"fetchedAt": "2026-11-09T14:49:18.531Z","error": null}
statusCode is the final HTTP status after redirects, or null with an error message when no response came (DNS failure, timeout, refused connection, certificate error).
How it works
- Matches the page URL, response headers, cookies, HTML, body text, meta tags, script URLs, inline scripts, inline styles and DOM selectors against the fingerprints, then adds implied technologies (Next.js implies React, WordPress implies PHP).
- Technologies are listed by confidence, then name, with the fingerprint set's own names and categories.
- In the local test on a home connection, 1,000 domains took 7.5 minutes at 5 sites at a time. A site that never answers waits up to 10 seconds to connect and 30 seconds for a response. Run time on Apify will differ.
Limits
- Detection reads only what the home page response exposes. A technology loaded later by JavaScript, or used only on other pages, can be missed.
- Sites that answer only to a real browser are usually reported with their 4xx status and not charged.
Fingerprint data and licence
Technology fingerprints come from enthec/webappanalyzer, licensed under the GNU General Public License v3.0. The upstream commit used and the full licence text ship with the Actor in data/fingerprints/ (SOURCE.json, LICENSE); see THIRD-PARTY-NOTICES.md.