Website Tech Stack Detector: CMS, Versions & CDN, No Login icon

Leads & companies · Live on Apify

Website technology checker for many sites at once

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.

About $1.81 for 1,000 websites$0.0018 per website + $0.007 per run. Apify bills you, not us.One website in a run of its own: about $0.0088.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

urlwordpress.org
finalUrlhttps://wordpress.org/
httpStatus200

How to use it: 3 steps

  1. Make a free Apify accountApify 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 StartNo 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 resultsWhen 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.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

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.

Who uses it

Agencies and freelancers

Check a client's stack before a pitch or audit.

Sales teams

Find leads that use Shopify, WordPress or another platform.

CRM owners

Add technology columns to a long domain list.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.007Charged 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.

Examples

  • 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. That is enough for about 2,700 websites.

Prices checked on 24 October 2026. See the current price on Apify.

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.

Details

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
TaskInputYou getKey fieldsNext step
Build a lead list by platformurls (domains from your CRM)One row per siteurl, ecommerce, cms, technologyCountExport CSV, filter, import to CRM
Competitor or client auditurls + useBrowser: trueFull technology listtechnologies[].name, version, categoriesReport or spreadsheet
Check one category onlyurls + categories: ["Analytics"]Filtered technology listtechnologies, analyticsGoogle Sheets
Regular stack checkurls on a scheduleRow with datedetectedAt, cms, cdnCompare runs over time
AI agent questionurls (MCP)One row per sitecms, ecommerce, analytics, cdn, serverAgent answer
Tips for better results
  • 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 and good to know
  • 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

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one 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. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
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)
cURL
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}'
LangChain · langchain-apify
# 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)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (19)
FieldTypeMeaning
urlstringURL or domain as given in the input
finalUrlstringPage URL after redirects; null if no response
statusstringcomplete or error
httpStatusintegerHTTP status of the final response
technologiesarrayDetected technologies: name, categories, version, confidence (0-100), website
technologyCountintegerNumber of technologies in the list
cmsarrayCMS names
ecommercearrayEcommerce platforms
analyticsarrayAnalytics tools
cdnarrayCDNs
serverarrayWeb servers
frameworkarrayJavaScript and web frameworks
paymentarrayPayment processors
modestringhttp or browser
pageTitlestringPage <title>
detectedAtstringISO time of the check
fingerprintsVersionstringFingerprint data source and commit
fingerprintsLicencestringLicence of the fingerprint data
errorobjectcode and message when status is error
Input settings (4)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Websites requiredurlsarray["apify.com", "shopify.com", "wordpress.org"]
Render JavaScript in a browseruseBrowserbooleanfalse
Only these categoriescategoriesarray[]
Parallel sitesmaxConcurrencyinteger10

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure