# Website technology checker for many sites at once

> Website technology checker for up to 1,000 sites. Find CMS, ecommerce, analytics, CDN and server with versions. 7,600+ fingerprints. No login.

URL: https://cliqtomedia.com/actors/tech-stack-detector/

Category: Leads, companies & validation · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/tech-stack-detector?fpr=cliqto

Paste a list of websites. The tool checks each live page against 7,600+ technology fingerprints. You get one row per site with CMS, shop platform, analytics and more.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `apify.com` in Websites. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Find out which technologies a website uses today. Give a list of domains or URLs, and the Actor loads each page, matches it against 7,600+ technology fingerprints and returns one row per site: CMS, ecommerce platform, analytics, CDN, web server, frameworks and payments, with versions and confidence where the page shows them. No login, no API key.

- Technologies list. Each technology has a name, categories, a version (when the page shows one) and a confidence from 0 to 100.
- Ready columns. `cms`, `ecommerce`, `analytics`, `cdn`, `server`, `framework` and `payment` are short lists of names, so you can filter a table without opening the full list.
- Live result. The check happens during your run. `detectedAt` says when, and `finalUrl` shows where redirects ended.
- Optional browser mode. With `useBrowser: true`, each page is opened in headless Chrome. This also finds technologies that appear only after JavaScript runs (JavaScript globals, background requests). It is slower and costs more.
- Clear errors. A site that cannot be checked gets a row with `status: "error"` and a code like `DNS_NOT_FOUND`, `BLOCKED` or `TIMEOUT`. An error is never shown as an empty stack.

### Good for

- Find leads that use a given platform: run your domain list and filter `ecommerce` for Shopify or `cms` for WordPress.
- Check a competitor's or a client's stack before a pitch or an audit: CMS version, analytics, tag manager, CDN.
- Enrich a CRM or spreadsheet with technographic columns for many domains in one run.
- Give an AI agent a quick way to answer "what is this site built with?".

### Not a good fit

- One page per input URL. The Actor does not crawl the whole site. Technologies used only on other pages (checkout, blog, app) are found only if you add those URLs.
- No history. It shows what the page uses now, not what the site used in the past. It does not check DNS, mail (MX/SPF) or SSL records.
- No security or vulnerability scanning, and no logged-in pages. Only public pages are checked; local, private and internal addresses are refused.
- Detection is based on public signals. A technology that leaves no trace in the page, headers or scripts cannot be found. Sites behind strong bot protection may return `BLOCKED`.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.007 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Site checked | $0.0018 (from $0.0015 on paid Apify plans) | One website the Actor contacted in HTTP mode: a complete row, or an error the site or network gave (blocked, timeout, DNS, HTTP status). Duplicates, rejected input lines and internal errors are free. |
| Site checked in a browser | $0.0035 (from $0.003 on paid Apify plans) | One website the Actor contacted with JavaScript rendering on (useBrowser): a complete row, or an error the site or network gave. Duplicates, rejected input lines and internal errors are free. |

- One website: about $0.0088.
- 1,000 websites: about $1.81.
- Every day 100 websites, for 30 days: about $5.61 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/tech-stack-detector?fpr=cliqto

## Questions

### Why does it find fewer tools than BuiltWith?

BuiltWith shows history. This tool checks the live page now.

### Does it crawl the whole site?

No. It checks one page per URL you give.

### Do I pay for sites that fail?

Yes, if the site was contacted. Duplicates and bad input lines are free.

### Why is the version often empty?

Many sites hide versions. The tool shows only what the page reveals.

### Do I need an account, cookies or an API key for the sites?

No. The Actor reads public pages like a visitor who is not logged in.

### How accurate is the version?

The version comes from what the page shows: a meta generator tag, a script file name or a header. Many sites hide versions, so `version` is often `null`.

## Data fields

- `url` (string): URL or domain as given in the input
- `finalUrl` (string): Page URL after redirects; null if no response
- `status` (string): complete or error
- `httpStatus` (integer): HTTP status of the final response
- `technologies` (array): Detected technologies: name, categories, version, confidence (0-100), website
- `technologyCount` (integer): Number of technologies in the list
- `cms` (array): CMS names
- `ecommerce` (array): Ecommerce platforms
- `analytics` (array): Analytics tools
- `cdn` (array): CDNs
- `server` (array): Web servers
- `framework` (array): JavaScript and web frameworks
- `payment` (array): Payment processors
- `mode` (string): http or browser
- `pageTitle` (string): Page <title>
- `detectedAt` (string): ISO time of the check
- `fingerprintsVersion` (string): Fingerprint data source and commit
- `fingerprintsLicence` (string): Licence of the fingerprint data
- `error` (object): code and message when status is error

## Input settings

- `urls` (array, required): Up to 1,000 domains or URLs (500 in browser mode), one per line, such as shopify.com or https://example.com/blog. A bare domain is checked at https://domain/. Each URL is one page (no crawling). Duplicates are checked once. Public pages only: private, local and internal addresses are refused.
- `useBrowser` (boolean): Off (default): one fast HTTP request per site, which finds most CMS, ecommerce, analytics, CDN and server technologies. On: load each page in headless Chrome to also detect technologies visible only after JavaScript runs (JS globals, XHR hosts). Slower (about 3–4 s per site), up to 500 URLs per run, uses more memory and is billed as a browser analysis.
- `categories` (array): Optional filter for the technologies list, for example CMS, Ecommerce, Analytics, CDN. Empty means all 109 categories. The cms, ecommerce, analytics, cdn, server, framework and payment columns are always filled.
- `maxConcurrency` (integer): How many sites are analysed at the same time (1–20; browser mode uses at most 5).

## Step by step on Apify

1. Open the Input tab. The Websites field is prefilled with `apify.com`, `shopify.com` and `wordpress.org`.
2. Replace them with your own domains or URLs, one per line (up to 1,000; up to 500 in browser mode).
3. Keep Render JavaScript in a browser off (the default) for a fast, cheap check.
4. Click Start.
5. Open the Output tab. The Overview view shows one row per site with `cms`, `ecommerce`, `analytics`, `cdn` and `server`. The Technologies view shows the full list.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Build a lead list by platform | `urls` (domains from your CRM) | One row per site | `url`, `ecommerce`, `cms`, `technologyCount` | Export CSV, filter, import to CRM |
| Competitor or client audit | `urls` + `useBrowser: true` | Full technology list | `technologies[].name`, `version`, `categories` | Report or spreadsheet |
| Check one category only | `urls` + `categories: ["Analytics"]` | Filtered technology list | `technologies`, `analytics` | Google Sheets |
| Regular stack check | `urls` on a schedule | Row with date | `detectedAt`, `cms`, `cdn` | Compare runs over time |
| AI agent question | `urls` (MCP) | One row per site | `cms`, `ecommerce`, `analytics`, `cdn`, `server` | Agent answer |

## Tips

- Use browser mode for sites that load tools with JavaScript.
- Add extra URLs, like the checkout page, to find tools used there.
- Filter the ready cms or ecommerce column in a spreadsheet.

## Limits



- Up to 1,000 URLs per run in HTTP mode and up to 500 in browser mode. One page per URL.
- Each request has 15 seconds, and each site 30 seconds in total, with up to 3 attempts after network errors, timeouts, 429 and 5xx answers. Up to 5 redirects. Only the first 5 MB of a page are read.
- Speed: in HTTP mode, 1,000 domains took about 11 minutes in our test; in browser mode, about 3–4 seconds per site (100 sites in about 6 minutes), so 500 sites fit the default one-hour timeout. In browser mode each site has at most 45 seconds.
- If the run is near its timeout, the Actor stops starting new sites and saves what it has (`reason: "TIME_LIMIT"`).
- The fingerprint data is enthec/webappanalyzer (GPL-3.0), used unchanged. Technology names and trademarks belong to their owners.

## Sample result

```json
{
  "url": "wordpress.org",
  "finalUrl": "https://wordpress.org/",
  "status": "complete",
  "httpStatus": 200,
  "technologies": [
    { "name": "WordPress", "categories": ["CMS", "Blogs"], "version": "7.2", "confidence": 100, "website": "https://wordpress.org" },
    { "name": "Gutenberg", "categories": ["WordPress plugins", "Editors"], "version": "24.1.0", "confidence": 100, "website": "https://github.com/WordPress/gutenberg" },
    { "name": "Nginx", "categories": ["Web servers", "Reverse proxies"], "version": null, "confidence": 100, "website": "https://nginx.org/en" },
    { "name": "Google Tag Manager", "categories": ["Tag managers"], "version": null, "confidence": 100, "website": "https://www.google.com/tagmanager" }
  ],
  "technologyCount": 13,
  "cms": ["WordPress"],
  "ecommerce": [],
  "analytics": [],
  "cdn": [],
  "server": ["Nginx"],
  "framework": [],
  "payment": [],
  "mode": "http",
  "pageTitle": "Blog Tool, Publishing Platform, and CMS – WordPress.org",
  "detectedAt": "2026-10-14T02:41:57.061Z",
  "fingerprintsVersion": "enthec/webappanalyzer@eea872a",
  "fingerprintsLicence": "GPL-3.0-only",
  "error": null
}
```

## Use it from code

Actor ID: `cliqtomedia/tech-stack-detector`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/tech-stack-detector").call(run_input={
    "urls": [
        "apify.com",
        "shopify.com",
        "wordpress.org"
    ],
    "useBrowser": False
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~tech-stack-detector/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["apify.com", "shopify.com", "wordpress.org"], "useBrowser": false}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/tech-stack-detector")
result = tool.invoke({"run_input": {"urls": ["apify.com", "shopify.com", "wordpress.org"], "useBrowser": False}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Use cases with this tool

- [Lead lists from public data](https://cliqtomedia.com/actors/use-cases/lead-generation/): Build lists of companies and contacts from public sites. Check emails and phones before you send.
- [Know what your competitors do](https://cliqtomedia.com/actors/use-cases/competitor-monitoring/): See what your competitors launch, hire, change and advertise. Every week, without opening their sites.

## Similar tools

- [Website Contact Scraper](https://cliqtomedia.com/actors/website-contacts-scraper/)
- [Bulk Email Verifier: MX, Disposable, Role & Typo Check](https://cliqtomedia.com/actors/email-verifier/)
- [Domain WHOIS (RDAP) & DNS Lookup, No Login](https://cliqtomedia.com/actors/domain-whois-dns-lookup/)
- [EU VAT Number Validator (VIES) - Bulk Check, No Login](https://cliqtomedia.com/actors/vat-number-validator/)
- [Europages Scraper: B2B Suppliers & Certificates (No Login)](https://cliqtomedia.com/actors/europages-companies-scraper/)
- [France Company & SIRET Search](https://cliqtomedia.com/actors/france-sirene-company-search/)
