# Tech Stack Detector (Wappalyzer Alternative) (`datamole/tech-stack-detector`) Actor

Detect the technologies behind any website, from CMS and ecommerce platform to analytics, ad pixels, CDN, hosting and frameworks with versions, using 7,600+ fingerprints. Also returns tracking IDs like GA4, GTM and Meta Pixel, social profiles, email provider and SSL issuer.

- **URL**: https://apify.com/datamole/tech-stack-detector.md
- **Developed by:** [DataMole](https://apify.com/datamole) (community)
- **Categories:** Lead generation, Developer tools, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $18.00 / 1,000 result-items

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

![DataMole](https://raw.githubusercontent.com/YoiderD/datamole-assets/main/banner.png)

## 🕳️ Tech Stack Detector: Wappalyzer & BuiltWith Alternative

> **Find out what any website is built with, in bulk.** CMS, ecommerce platform, analytics, ad pixels, CDN, hosting, frameworks, libraries and versions, detected from **7,600+ technology fingerprints**. Every result also includes **tracking IDs** (GA4, GTM, Meta Pixel...), **social profiles**, **email provider** and **SSL issuer**.

*By **DataMole**. We dig the data you need.*

**Tech Stack Detector** scans websites the way Wappalyzer and BuiltWith do and returns clean, structured JSON. Paste domains, full URLs or even email addresses, and the Actor removes duplicates, scans them in parallel and groups every detected technology by category. Choose **Fast mode** for large lists, or **Deep mode** to render each page in a real browser and catch JavaScript-only tools. In our tests Deep mode usually finds about twice as many technologies, including versions.

| 🎯 Who uses it | 💡 What for |
|---|---|
| Sales and SDR teams, agencies, SaaS marketers, investors, security teams, market researchers | Lead qualification by technology ("all Shopify stores using Klaviyo"), competitor analysis, technographic segmentation, migration and upsell targeting, security and version audits |

### 📋 What it detects

- 🧱 **CMS and site builders:** WordPress, Shopify, Wix, Webflow, Squarespace, Drupal, Ghost...
- 🛒 **Ecommerce:** Shopify, WooCommerce, Magento, VTEX, BigCommerce, PrestaShop...
- 📊 **Analytics and tag managers:** Google Analytics, GTM, Hotjar, Microsoft Clarity, Mixpanel, Segment...
- 📣 **Advertising and pixels:** Meta Pixel, TikTok Pixel, LinkedIn Insight, Google Ads, Criteo, RTB House...
- 💬 **Marketing and support:** HubSpot, Intercom, Zendesk, Mailchimp, Klaviyo, OneTrust...
- ⚙️ **Frameworks and libraries:** React, Next.js, Vue, Angular, jQuery, Bootstrap, Tailwind... with **versions** when exposed.
- ☁️ **Infrastructure:** Cloudflare, AWS, CloudFront, Vercel, Nginx, Apache, SSL issuers, DNS providers.
- 🏷️ **Tracking IDs:** GA4 (`G-`), Universal Analytics (`UA-`), GTM (`GTM-`), Google Ads (`AW-`), Meta Pixel, TikTok Pixel, LinkedIn Insight, Hotjar, Microsoft Clarity, Pinterest Tag.
- 👥 **Social profiles** linked from the site, **email provider** (Google Workspace, Microsoft 365...) and **page title, description and language**.

### ⚙️ Input

| Field | What it does |
|---|---|
| `urls` | Domains, URLs or emails. Duplicates removed. |
| `mode` | `fast` (HTML, headers, cookies, scripts, DOM, DNS, SSL, robots.txt) or `deep` (adds a real browser: JavaScript globals and network calls). |
| `categories` | Keep only some categories, e.g. `["Ecommerce", "Analytics"]`. |
| `includeTechDetails` | Adds website, description, pricing model, open source flag, CPE and detection method per technology. |
| `includeDns` / `includeCertificate` | Extra signals (email provider, DNS, SSL issuer). |
| `scanExternalScripts` | Same-site JavaScript files to scan for library versions (0 to 10). |
| `maxItems` | Hard cap of websites per run. |

```json
{
    "urls": ["apify.com", "https://www.shopify.com", "ceo@stripe.com"],
    "mode": "deep",
    "categories": ["Analytics", "Advertising", "Marketing automation"]
}
```

> ℹ️ **Free Apify plan:** runs return a preview of up to 10 results. Any paid Apify plan unlocks the full results.

### 📊 Output

Real Deep mode result (trimmed):

```json
{
    "domain": "apify.com",
    "finalUrl": "https://apify.com/",
    "httpStatus": 200,
    "title": "Apify: Marketplace of ready-to-run tools for AI",
    "technologyCount": 33,
    "technologyNames": ["Next.js", "styled-components", "Algolia", "Intercom", "Bootstrap", "Amazon Web Services", "React", "Amazon CloudFront", "Amazon S3", "AWS Certificate Manager", "Cloudflare", "Cloudflare Bot Management", "..."],
    "categories": {
        "JavaScript frameworks": ["Next.js", "styled-components", "React"],
        "Web frameworks": ["Next.js"]
    },
    "technologies": [
        {
            "name": "Next.js",
            "version": "16.3.6",
            "confidence": 100,
            "categories": ["JavaScript frameworks", "Web frameworks", "Web servers", "Static site generator"],
            "website": "https://nextjs.org",
            "detectedVia": ["js"]
        }
    ],
    "trackingIds": {
        "googleAnalytics4": ["G-62P18XN9NS"],
        "googleTagManager": ["GTM-MNGXGGB"],
        "googleAds": ["AW-18019971215", "AW-695293971"],
        "microsoftClarity": ["kvzhw1flhz"]
    },
    "socialProfiles": {
        "github": "https://github.com/apify/crawlee",
        "linkedin": "http://linkedin.com/company/apify",
        "x": "https://x.com/apify",
        "youtube": "https://www.youtube.com/apify",
        "tiktok": "https://www.tiktok.com/@apifytech"
    },
    "emailProvider": "Google Workspace",
    "certificateIssuer": "Amazon Amazon RSA 2048 M04",
    "scanMode": "deep"
}
```

### ✨ Why this one

- ✅ **7,600+ fingerprints**, continuously updated from the community-maintained open-source database.
- ✅ **Two modes:** fast and cheap for big lists, or deep for maximum coverage.
- ✅ **Sales-ready extras:** tracking IDs, social profiles and email provider in the same row.
- ✅ **Versions and confidence scores** for every technology.
- ✅ **Bulk friendly:** accepts messy input (URLs, emails), removes duplicates, retries with `www.`, and clearly reports sites that don't exist.
- ✅ **No API key, no login, no proxy needed** for most websites.

### ❓ FAQ

**Fast or Deep?** Use Fast for thousands of domains or when you only need the CMS, ecommerce platform and infrastructure. Use Deep when you need marketing, analytics and JavaScript framework details. Deep mode finds roughly twice as many technologies but is slower.

**How accurate is it?** Detection uses the same fingerprinting approach as Wappalyzer. Each technology comes with a confidence score and the signals that triggered it (`detectedVia`), so you can filter with confidence.

**Why did a website fail?** Some domains have no website, block bots, or time out. They appear as rows with a clear `error` message and are not counted as results.

**Can I filter to one category?** Yes. Use `categories`, for example `["Ecommerce"]` to build a list of online stores and their platforms.

### 🕳️ More from DataMole

| Actor | What it does |
|---|---|
| [SEO & GEO Audit](https://apify.com/datamole/seo-geo-audit) | SEO and AI search readiness scores with prioritized fixes for every page |
| [Domain Intelligence](https://apify.com/datamole/domain-intel-scraper) | WHOIS, DNS, email security grade, SSL expiry and hosting for any domain |

**Need a technology or field we don't detect yet?** Open an issue on this Actor. We read everything.

### 🙏 Credits

Technology fingerprints come from the open-source [webappanalyzer](https://github.com/enthec/webappanalyzer) project (GPL-3.0), the community continuation of Wappalyzer's fingerprints.

### ⚖️ Disclaimer

This Actor reads publicly available information that websites send to any visitor. It is not affiliated with Wappalyzer or BuiltWith. Use the results responsibly.

# Actor input Schema

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

Domains, URLs or even email addresses (the domain is extracted). Duplicates are removed automatically.

## `mode` (type: `string`):

Fast is ideal for large lists. Deep renders each page in a browser and usually finds 2x more technologies, including versions and marketing tools. For Deep mode set the run memory to at least 2048 MB (Run options).

## `maxItems` (type: `integer`):

Hard cap for the whole run. Leave empty for no cap.

## `categories` (type: `array`):

Keep only technologies from these categories (e.g. Ecommerce, CMS, Analytics). Empty = all categories.

## `includeTechDetails` (type: `boolean`):

Adds website, description, pricing model, open source flag, CPE and detection method for every technology.

## `includeDns` (type: `boolean`):

Reads TXT, MX and NS records to detect email providers, verification tags and DNS hosting.

## `includeCertificate` (type: `boolean`):

Reads the TLS certificate to detect providers like Let's Encrypt, DigiCert or Cloudflare.

## `scanExternalScripts` (type: `integer`):

How many same-site JavaScript files to download and scan for library signatures and versions.

## `proxyConfiguration` (type: `object`):

Not needed for most websites.

## Actor input object example

```json
{
  "urls": [
    "apify.com",
    "shopify.com",
    "https://www.wordpress.org"
  ],
  "mode": "fast",
  "includeTechDetails": true,
  "includeDns": true,
  "includeCertificate": true,
  "scanExternalScripts": 3
}
```

# Actor output Schema

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

No description

# 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": [
        "apify.com",
        "shopify.com",
        "https://www.wordpress.org"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datamole/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": [
        "apify.com",
        "shopify.com",
        "https://www.wordpress.org",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("datamole/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": [
    "apify.com",
    "shopify.com",
    "https://www.wordpress.org"
  ]
}' |
apify call datamole/tech-stack-detector --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datamole/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/GifQ3lKW6zHylbxoa/builds/jpvgNC2DDb9l1rpTZ/openapi.json
