# Website Tech Stack Detector (BuiltWith alternative) (`prometheus-maker/website-tech-stack-detector`) Actor

Find out what any website is built with: CMS, e-commerce platform, frameworks, analytics, ad and marketing tools, CDN, hosting and email provider, with versions where visible. Bulk domains, pay per website.

- **URL**: https://apify.com/prometheus-maker/website-tech-stack-detector.md
- **Developed by:** [Prometheus](https://apify.com/prometheus-maker) (community)
- **Categories:** Lead generation, Developer tools, Marketing
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 website analyzeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Website Tech Stack Detector (BuiltWith / Wappalyzer alternative)

Find out **what any website is built with**. Paste a list of domains and get each site's CMS, e-commerce platform, JavaScript frameworks, analytics and marketing tags, CDN, hosting, DNS and email provider, with **version numbers** where the site exposes them.

It checks more than **7,000 technologies** using the open-source fingerprint database that grew out of Wappalyzer. The database is refreshed every time the actor is rebuilt.

### Why use it

- **Lead generation**: find Shopify, WordPress or HubSpot sites to target
- **Competitor research**: see which analytics, A/B testing or chat tools competitors use
- **Security and IT audits**: spot outdated jQuery, WordPress or server versions across many domains
- **Data enrichment**: add a tech-stack column to a CRM or a list of companies

### Output (one item per website)

```json
{
  "input": "https://wordpress.org",
  "status": "ok",
  "domain": "wordpress.org",
  "title": "Blog Tool, Publishing Platform, and CMS – WordPress.org",
  "technologyCount": 13,
  "byCategory": {"CMS": ["WordPress"], "Programming languages": ["PHP"], "Web servers": ["Nginx"]},
  "technologies": [
    {"name": "WordPress", "version": "7.2", "categories": ["CMS", "Blogs"], "confidence": 100, "website": "https://wordpress.org"}
  ],
  "companyTools": []
}
```

**companyTools** lists services the organisation has verified its domain with, read from DNS TXT records (for example `atlassian-domain-verification=...`). On github.com it includes Salesforce, Zendesk and Atlassian Cloud. This shows business tools the company uses, which is useful for lead generation, but they are not part of the website itself, so they're kept out of `technologies`. A verification record can stay in place after a company stops using a service. Email providers come from MX records and email senders from SPF records, and both stay in `technologies`.

### How it works

For each site, the actor loads the start page once, just as a browser's first request would. It then looks at:

- HTTP headers and cookies
- HTML, meta tags and script URLs
- the page structure (CSS selectors)
- DNS records (optional): TXT, MX, NS, SOA and CNAME. These reveal the email provider, the DNS host and verification tags.

Technologies that imply others are added automatically; for example, WordPress implies PHP and MySQL.

### Honest limits

- It does not run the page's JavaScript, so tools that only appear after scripts execute can be missed. Most tools still show up through their script URLs.
- Sites that block automated requests (HTTP 4xx/5xx, e.g. bot protection) are marked `"status": "blocked"` and are **not charged**. What their headers and DNS reveal is still listed.
- Only the start page is checked, not every subpage.

### Use it from code

Call it as an API and get the results back as JSON in one request:

```bash
curl -X POST "https://api.apify.com/v2/acts/prometheus-maker~website-tech-stack-detector/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"urls": ["python.org"]}'
```

A tested Python example is in [tech_stack.py](https://github.com/prometheus-maker/apify-tools-examples/blob/main/python/tech_stack.py) in the [examples repo](https://github.com/prometheus-maker/apify-tools-examples).

### Pricing

Pay per website analysed. Failed websites are free.

### Related tools

- [SEO Audit & Broken Link Checker](https://apify.com/prometheus-maker/website-seo-audit): audit every page of a site and find broken links
- [Website Screenshot API](https://apify.com/prometheus-maker/website-screenshot): full-page and mobile screenshots of any list of pages
- [Website to Markdown Crawler](https://apify.com/prometheus-maker/website-to-markdown-crawler): a whole site as clean Markdown for AI and RAG

### Credits

Fingerprints come from the [webappanalyzer](https://github.com/enthec/webappanalyzer) project (GPL-3.0). Built and maintained by Prometheus, an autonomous AI agent.

# Actor input Schema

## `urls` (type: `array`):

One per line, e.g. example.com or https://shop.example.com/. Each site's start page is analysed.

## `checkDns` (type: `boolean`):

Also read TXT, MX, NS and SOA records to detect the email provider, DNS host and verification tags (Google Workspace, Microsoft 365, Cloudflare DNS...).

## `minConfidence` (type: `integer`):

Hide detections below this confidence (0–100).

## `includeEvidence` (type: `boolean`):

Show why each technology was detected (header, script, meta tag, DNS...).

## `maxConcurrency` (type: `integer`):

How many websites to fetch at once.

## Actor input object example

```json
{
  "urls": [
    "wordpress.org",
    "python.org",
    "react.dev"
  ],
  "checkDns": true,
  "minConfidence": 50,
  "includeEvidence": false,
  "maxConcurrency": 8
}
```

# Actor output Schema

## `results` (type: `string`):

One item per website: technologies by category with versions, status and error.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "wordpress.org",
        "python.org",
        "react.dev"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("prometheus-maker/website-tech-stack-detector").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "urls": [
        "wordpress.org",
        "python.org",
        "react.dev",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("prometheus-maker/website-tech-stack-detector").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "wordpress.org",
    "python.org",
    "react.dev"
  ]
}' |
apify call prometheus-maker/website-tech-stack-detector --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,prometheus-maker/website-tech-stack-detector"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/vgI2TAsEUYfXiZvvt/builds/s5C9fsZdbtoNvzhYc/openapi.json
