# Tech Stack Detector - Website Technology Lookup (`orbifetch/tech-stack-detector`) Actor

Find out what any website is built with. Detects 7,600+ technologies (CMS, e-commerce, analytics, frameworks, CDN, hosting, payments, marketing tools) plus the SaaS tools a company uses from DNS records. Bulk lists, CSV/Excel export, API.

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

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### What does Tech Stack Detector do?

**Tech Stack Detector** tells you what any website is built with. Paste a list of URLs or domains and get back, for each site:

- **CMS** (WordPress, Webflow, Contentful, Drupal…) and **e-commerce platform** (Shopify, WooCommerce, Magento, BigCommerce…)
- **Analytics, tag managers and ad pixels** (Google Analytics, GTM, Meta Pixel, Hotjar, Segment…)
- **JavaScript frameworks** (React, Next.js, Vue, Nuxt, Svelte…), **UI libraries**, **CDN**, **hosting**, **web server**
- **Payments, live chat, marketing automation, CRM, reviews, A/B testing, cookie consent** and more
- **Company SaaS tools from DNS** — the email provider and the SaaS apps a company has verified its domain with (Google Workspace, Microsoft 365, Salesforce, HubSpot, Slack, Atlassian, Zoom…)
- **Versions** when exposed, **confidence scores**, page title, description, language and **social profile links**

It recognizes **7,600+ technologies in 100+ categories** using an open, actively maintained fingerprint database. It's a fast, low-cost **Wappalyzer and BuiltWith alternative** you can run on thousands of domains at once, via the Apify API, or from Make, Zapier, n8n and Google Sheets.

### Why use it?

- **Lead generation & sales prospecting** — find every Shopify store, every site running a competitor's product, or companies using Salesforce, then enrich your CRM.
- **Competitor research** — see which analytics, marketing and payment stack competitors run.
- **Agencies** — qualify prospects before outreach ("still on WordPress 5?", "no analytics installed?").
- **Market research & investing** — measure technology adoption across a list of domains.
- **Security & IT audits** — inventory the software and versions exposed by your own web properties.

### How much does it cost?

You pay only for websites that were analyzed successfully. Failed URLs (dead domains, timeouts) are **free**.

| Mode | Price | 1,000 websites |
|---|---|---|
| Fast scan (default) | $0.003 per website | **$3** |
| Deep scan (real browser) | $0.008 per website | **$8** |

The Apify free plan's monthly credit covers roughly 1,500 fast scans.

### How to use it

1. Click **Try for free**.
2. Paste your websites into **Websites** — full URLs or bare domains, one per line.
3. (Optional) Turn on **Deep scan** for maximum accuracy on JavaScript-heavy sites.
4. Click **Start**, then download results as **Excel, CSV, JSON or HTML**, or fetch them through the API.

**Fast scan vs. deep scan:** the fast scan reads the HTML, HTTP headers, cookies, scripts and DNS records — enough for most CMS, e-commerce, analytics and hosting detection and very quick. The deep scan also renders the page in Chrome to catch technologies that only appear at runtime (JavaScript globals and background API calls), which helps with single-page apps and tag-manager-loaded tools.

### Input example

```json
{
    "urls": ["allbirds.com", "https://vercel.com", "wordpress.org"],
    "useBrowser": false,
    "includeDns": true,
    "minConfidence": 50
}
```

### Output example

Each website produces one row. The **Overview** table has one column per category; the full JSON contains every technology with its version, categories, confidence and how it was detected.

```json
{
    "domain": "allbirds.com",
    "finalUrl": "https://www.allbirds.com/",
    "statusCode": 200,
    "title": "Allbirds: Sustainable Shoes & Clothing",
    "cms": null,
    "ecommerce": "Shopify",
    "analytics": "Google Tag Manager",
    "payments": "Apple Pay, PayPal",
    "cdn": "Cloudflare",
    "companyToolNames": "Microsoft 365, Miro, DocuSign",
    "technologyCount": 10,
    "technologies": [
        {
            "name": "Shopify",
            "version": null,
            "confidence": 100,
            "categories": ["Ecommerce"],
            "website": "https://shopify.com",
            "saas": true,
            "openSource": false,
            "pricing": ["low", "recurring"],
            "detectedVia": ["cookies", "headers", "scripts"]
        }
    ],
    "socialLinks": { "instagram": "https://www.instagram.com/allbirds/" }
}
```

### FAQ

**How accurate is it?** Detection uses the same fingerprint approach as Wappalyzer (HTML, headers, cookies, meta tags, scripts, DOM, JavaScript and DNS patterns). Each technology has a confidence score; the default threshold is 50%. Deep scan finds more technologies on JavaScript-heavy sites.

**Can I analyze a whole list of domains from a CSV?** Yes — paste the column into the Websites field or send it through the API. Bare domains are automatically converted to `https://`.

**Does it scrape personal data?** No. It only reads publicly served website code and public DNS records. It does not collect emails, names or any personal information.

**Some sites return an error.** Sites that block data-center traffic can be retried with the **Proxy** option enabled. You are never charged for failed websites.

**Can I integrate it?** Yes — use the Apify API, the official Python/JavaScript clients, or the Make, Zapier, n8n, Google Sheets and Airbyte integrations. Schedule it to monitor tech-stack changes over time.

**Found a wrong or missing detection?** Open an issue on the **Issues** tab with the URL and the technology — fixes usually ship within days.

### Credits

Technology fingerprints come from the open-source [webappanalyzer](https://github.com/enthec/webappanalyzer) project (GPL-3.0).

# Actor input Schema

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

Website URLs or bare domains to analyze (e.g. shopify.com, https://www.example.com). One result per URL. Paste thousands at once.

## `useBrowser` (type: `boolean`):

Render each page in Chrome to also detect technologies that only appear at runtime (JavaScript globals, API calls). More accurate, slower and billed at the deep-scan price. Leave off for fast bulk lookups.

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

Read DNS records (TXT, MX, NS) to find the email provider and SaaS tools the company has verified, e.g. Google Workspace, Microsoft 365, Salesforce, HubSpot, Slack. Returned separately in companyTools.

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

Only return technologies detected with at least this confidence.

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

How many websites to analyze in parallel.

## `requestTimeoutSecs` (type: `integer`):

How long to wait for each website to respond before giving up.

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

Optional. Use a proxy if some websites block requests from data centers.

## Actor input object example

```json
{
  "urls": [
    "wordpress.org",
    "allbirds.com",
    "vercel.com"
  ],
  "useBrowser": false,
  "includeDns": true,
  "minConfidence": 50,
  "maxConcurrency": 20,
  "requestTimeoutSecs": 30,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

One row per website with the main technology categories as columns.

## `allTechnologies` (type: `string`):

Full list of detected technologies and company SaaS tools per website.

# 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",
        "allbirds.com",
        "vercel.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("orbifetch/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",
        "allbirds.com",
        "vercel.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("orbifetch/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",
    "allbirds.com",
    "vercel.com"
  ]
}' |
apify call orbifetch/tech-stack-detector --silent --output-dataset

```

## MCP server setup

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