# Website Tech Stack Detector - Wappalyzer Alternative (`best_apis/website-tech-stack-detector`) Actor

Detect the tech stack of any website in bulk: CMS, ecommerce platform, analytics, frameworks, CDN, hosting, payments and marketing tools with versions from 7,000+ fingerprints, plus email provider, SPF email services and SSL issuer from DNS. $1 per 1,000 sites.

- **URL**: https://apify.com/best_apis/website-tech-stack-detector.md
- **Developed by:** [A Q](https://apify.com/best_apis) (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

## Website Tech Stack Detector - Wappalyzer & BuiltWith Alternative

**Find out what any website is built with, in bulk.** Paste URLs or domains and get each site's **CMS, ecommerce platform, analytics, tag managers, JavaScript frameworks, CDN, hosting, payment providers, marketing and A/B testing tools, with versions**, matched against **7,000+ technology fingerprints**. Every row also includes **DNS insights** that browser extensions don't show: **email provider** (Google Workspace, Microsoft 365...), **email and marketing services** found in SPF (HubSpot, SendGrid, Salesforce, Mailchimp...), **domain-verified SaaS tools**, **nameservers** and the **SSL certificate issuer**. **$1 per 1,000 websites.**

### What can this tech stack detector do?

- 🔍 **7,000+ technologies** from the open Wappalyzer fingerprint set (refreshed on every build): WordPress, Shopify, Magento, Webflow, Wix, React, Next.js, Vue, Google Analytics, GA4, Google Tag Manager, Meta Pixel, HubSpot, Hotjar, Cloudflare, AWS, Vercel, Stripe, Klaviyo, Intercom and thousands more.
- 🧩 **Versions and plugins**: WordPress plugins, Shopify apps and other add-ons are detected in a second pass once their platform is found.
- 📧 **Email provider from MX** (seeing through Mimecast/Proofpoint gateways), plus **email/marketing services from SPF**, which is great for B2B lead qualification ("uses Microsoft 365 + HubSpot").
- 🛡️ **SSL issuer and expiry**, **nameservers / DNS host**, and **company social profile links** found on the homepage.
- ⚡ **Fast and cheap**: plain HTTP, no browser, parallel downloads that scale with run memory. Thousands of domains per run.
- 📊 **Analysis-ready output**: a nested `technologies` array (name, version, confidence, categories, how it was detected), a `byCategory` map and a flat `technologyList` column for CSV / Excel / Google Sheets.
- 🤖 Simple JSON input for the API, Zapier, Make, n8n, LangChain and the **Apify MCP server**.

### Who uses website technology lookup?

- **Sales & lead generation**: build lists of stores on Shopify, sites running HubSpot, companies on Microsoft 365, and so on.
- **Agencies & freelancers**: qualify prospects that run outdated WordPress or no analytics.
- **Competitor research**: see which analytics, A/B testing, chat and payment tools competitors use.
- **Market research**: measure technology adoption across thousands of domains.
- **Security & IT audits**: inventory CMS versions, CDNs and certificate issuers across your own domains.

### How to use it

1. Paste **websites** (URLs or bare domains, one per line).
2. Keep **DNS insights** and **SSL issuer** on (default) or switch them off for maximum speed.
3. Click **Start**, or call it from the API and schedule it to watch technology changes over time.

### Input example

```json
{
  "urls": ["https://www.allbirds.com", "https://techcrunch.com", "stripe.com"],
  "includeDns": true,
  "includeTls": true,
  "minConfidence": 0
}
```

Empty input runs a small demo on three well-known sites.

### Output example

```json
{
  "input": "https://techcrunch.com",
  "domain": "techcrunch.com",
  "url": "https://techcrunch.com/",
  "statusCode": 200,
  "ok": true,
  "title": "TechCrunch | Startup and Technology News",
  "technologyCount": 16,
  "technologyList": "WordPress 6.9.10, Yoast SEO 25.1, WordPress VIP, PHP, MySQL, Google Tag Manager, Cloudflare, reCAPTCHA, HSTS, ...",
  "cms": "WordPress",
  "ecommercePlatform": null,
  "technologies": [
    { "name": "WordPress", "version": "6.9.10", "confidence": 100, "categories": ["CMS", "Blogs"], "website": "https://wordpress.org", "detectedVia": ["meta", "html"] },
    { "name": "Yoast SEO", "version": "25.1", "confidence": 100, "categories": ["SEO"], "website": "https://yoast.com/wordpress/plugins/seo/", "detectedVia": ["html"] }
  ],
  "byCategory": { "CMS": ["WordPress"], "SEO": ["Yoast SEO"], "Tag managers": ["Google Tag Manager"], "CDN": ["Cloudflare"] },
  "emailProvider": "Google Workspace",
  "emailSecurityGateway": null,
  "emailServices": ["Google Workspace", "SendGrid"],
  "mxRecords": ["aspmx.l.google.com"],
  "spfIncludes": ["_spf.google.com", "sendgrid.net"],
  "nameservers": ["ns1.example-dns.com", "ns2.example-dns.com"],
  "tlsIssuer": "Google Trust Services",
  "tlsValidTo": "2026-12-01T00:00:00.000Z",
  "socialLinks": { "twitter": "https://x.com/techcrunch", "linkedin": "https://www.linkedin.com/company/techcrunch", "facebook": null, "instagram": null, "youtube": null, "tiktok": null, "github": null },
  "error": null,
  "scrapedAt": "2026-10-16T05:30:00.000Z"
}
```

(Values above are illustrative.) Sites that can't be reached come back as an **uncharged** row with `ok: false` and the reason in `error`.

### How much does it cost?

| | This Actor | BuiltWith (official Actor) | motivational_nickel | automation-lab | misterkhan |
|---|---|---|---|---|---|
| Per 1,000 websites | **$1.00** | $2.00 | $1.50 | $2.30 | up to $100 |
| Actor start | $0.002 per GB of memory ($0.004 at the default 2 GB) | n/a | $0.002 | $0.035 | n/a |

Competitor prices as listed in the Apify Store on Oct 16, 2026 (free-tier price). You pay only for websites that were analyzed successfully; failed sites are free, and your **max cost per run** is respected exactly.

### API / JavaScript / Python

```bash
curl "https://api.apify.com/v2/acts/best_apis~website-tech-stack-detector/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urls":["shopify.com","notion.so"]}'
```

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('best_apis/website-tech-stack-detector').call({ urls: ['shopify.com', 'notion.so'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('best_apis/website-tech-stack-detector').call(run_input={'urls': ['shopify.com', 'notion.so']})
print(client.dataset(run['defaultDatasetId']).list_items().items)
```

### FAQ

**How does it detect technologies?** It downloads the page once and matches HTTP headers, cookies, meta tags, script URLs, inline scripts, HTML and DOM selectors against the open Wappalyzer fingerprint database. DNS records and the SSL certificate add evidence that a browser extension can't see. Each technology lists `detectedVia` so you know why it was matched.

**Is it as accurate as the Wappalyzer extension?** It uses the same fingerprints without running a browser, so technologies that can only be seen through live JavaScript variables may be missed. In exchange it is far faster and cheaper for bulk lists, and the DNS/SSL insights find tools the extension can't.

**Is this legal?** It reads only what a public website and public DNS send to any visitor. It collects no personal data. Check your own use case against local rules.

**Do I need a proxy?** Usually not. If many of your targets block datacenter traffic, enable a proxy in the input.

**Can I monitor technology changes?** Yes. Schedule the Actor and compare `technologyList` between runs.

### Related Actors

- [Shopify & WooCommerce Products Scraper](https://apify.com/best_apis/shopify-woocommerce-products-scraper)
- [ATS Jobs Scraper (Greenhouse, Lever, Ashby)](https://apify.com/best_apis/ats-jobs-scraper)
- [App Store & Google Play Reviews](https://apify.com/best_apis/app-store-play-reviews)

# Actor input Schema

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

Websites to analyze, one per line. Full URLs (https://example.com/page) or bare domains (example.com) both work. Paste thousands at once. Leave empty for a small demo.

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

Look up MX, TXT/SPF, NS and SOA records to reveal the email provider (Google Workspace, Microsoft 365...), email/marketing services in SPF (HubSpot, SendGrid, Salesforce...), DNS host and domain-verified SaaS tools.

## `includeTls` (type: `boolean`):

Read the SSL certificate issuer and expiry date (Let's Encrypt, DigiCert, Cloudflare, AWS...).

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

Only return technologies detected with at least this confidence. 0 returns everything.

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

How many websites to analyze in parallel. Leave empty for automatic (scales with the run memory; more memory = more CPU = faster runs).

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

Give up on a website that doesn't start responding within this time.

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

Not needed for most websites. Enable it only if many of your target sites block datacenter traffic.

## Actor input object example

```json
{
  "urls": [
    "https://www.allbirds.com",
    "https://techcrunch.com",
    "stripe.com"
  ],
  "includeDns": true,
  "includeTls": true,
  "minConfidence": 0,
  "requestTimeoutSecs": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `full` (type: `string`):

No description

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

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

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

```

## MCP server setup

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