# Tech Stack Detector — BuiltWith & Wappalyzer Alternative (`jesting_grass/tech-stack-detector`) Actor

Find the tech stack of any website in bulk: CMS, ecommerce platform, analytics, payments, CRM, marketing automation, hosting and frameworks. BuiltWith & Wappalyzer alternative for technographics and lead lists. Pay per domain, failed lookups free.

- **URL**: https://apify.com/jesting\_grass/tech-stack-detector.md
- **Developed by:** [A J](https://apify.com/jesting_grass) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 domain analyzeds

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

## Tech Stack Detector — BuiltWith & Wappalyzer Alternative

**Find out what any website is built with — in bulk.** Paste a list of domains and get each site's **CMS, ecommerce platform, payment providers, analytics, CRM, marketing automation, hosting, CDN and frameworks** as clean JSON or a CSV-ready table.

A pay-per-use **BuiltWith alternative** and **Wappalyzer alternative** for technographics, lead generation and competitor research — no $250–$295/month subscription, no browser extension, no API key to manage.

### Why this Actor

- 🔍 **Rich detection** — up to 20 technologies per site with categories, from a commercial technographics provider (not just a quick homepage regex).
- 📋 **Bulk** — hundreds of domains per run; URLs, `www.` and paths are cleaned up and duplicates removed automatically.
- 🎯 **Lead filter** — "only return sites using Shopify / HubSpot / Klarna / WordPress…" to build prospect lists in one step.
- 📊 **Flat columns** — `cms`, `ecommerce`, `payments`, `analytics`, `marketingAutomation`, `crm`, `hosting`, `cdn`… ready for Google Sheets, Excel or your CRM.
- 💸 **Pay only for results** — one price per analyzed domain; invalid, offline or undetectable sites are **free**.
- 🤖 **Agent & automation ready** — call it from Python, JavaScript, n8n, Make, Zapier, or as a tool for AI agents through the Apify MCP server.

### Use cases

- **Sales & lead generation** — find companies using a competitor's product, or the platform your product integrates with (e.g. all Shopify stores in a list).
- **Technographics enrichment** — add tech stack columns to a CRM export or lead list.
- **Competitor research** — see which analytics, A/B testing, payment and marketing tools competitors use.
- **Agencies** — qualify prospects by CMS (WordPress, Webflow, Shopify…) before outreach.
- **Security & IT audits** — inventory web servers, CDNs and frameworks across many domains.

### Input

| Field | Description | Example |
|---|---|---|
| `domains` | Domains or URLs to analyze | `["stripe.com", "https://www.allbirds.com"]` |
| `onlyDomainsUsing` | Optional lead filter — keep only sites using any of these | `["Shopify", "Klarna Checkout"]` |
| `categories` | Optional — limit output to these categories | `["CMS", "Ecommerce", "Analytics"]` |
| `includeDescriptions` | Add a one-line description per technology | `false` |

```json
{
  "domains": ["allbirds.com", "gymshark.com", "klarna.com", "hubspot.com"],
  "onlyDomainsUsing": ["Shopify"]
}
```

### Output example

```json
{
  "domain": "allbirds.com",
  "technologyCount": 10,
  "technologyNames": "Google Analytics, Stripe, Cloudflare, Nginx, Shopify, jsDelivr, HSTS, OpenResty, HTTP/3, TrackJs",
  "categories": ["Analytics", "CDN", "CMS", "Ecommerce", "Payment processors", "..."],
  "cms": "Shopify",
  "ecommerce": "Shopify",
  "payments": "Stripe",
  "analytics": "Google Analytics",
  "marketingAutomation": "",
  "crm": "",
  "hosting": "",
  "cdn": "Cloudflare, jsDelivr",
  "technologies": [
    { "name": "Shopify", "categories": ["Ecommerce", "CMS"], "website": "shopify.com" },
    { "name": "Stripe", "categories": ["Payment processors"], "website": "stripe.com" }
  ]
}
```

When `onlyDomainsUsing` is set, matching rows also include `matchedTechnologies`.

### How to use it from code

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("jesting_grass/tech-stack-detector").call(run_input={
    "domains": ["allbirds.com", "gymshark.com", "klarna.com"],
})
for row in client.dataset(run.default_dataset_id).iterate_items():
    print(row["domain"], "|", row.get("cms"), "|", row.get("payments"))
```

More examples (CSV export, Shopify lead filter, Node.js, cURL): **[github.com/emiohr/builtwith-wappalyzer-alternative](https://github.com/emiohr/builtwith-wappalyzer-alternative)** · Tutorial: [Find any website's tech stack in bulk with Python](https://dev.to/jesting_grass/find-any-websites-tech-stack-in-bulk-with-python-a-pay-per-use-builtwith-wappalyzer-alternative-51bc)

### Pricing

Pay per analyzed domain — see the **Pricing** tab for the current price. No subscription. Invalid domains, offline sites and sites where nothing could be detected are **not charged**. With the lead filter, every analyzed domain is billed, whether or not it matches.

For comparison (September 2026): BuiltWith plans start at $295/month and Wappalyzer Pro at $250/month.

### More SEO tools from the same developer

- [Backlink Checker](https://apify.com/jesting_grass/backlink-checker) — every backlink, referring domains and competitor link gap
- [Google Trends Scraper & API](https://apify.com/jesting_grass/google-trends-api) — interest over time, rising queries and regions
- [Bulk Domain Authority & Backlink Checker](https://apify.com/jesting_grass/bulk-domain-authority-checker) — domain rank, referring domains and backlinks
- [Keyword Research Tool](https://apify.com/jesting_grass/keyword-research-tool) — search volume, difficulty, intent, AI Overviews and keyword ideas

### FAQ

**How is this different from the Wappalyzer browser extension?** The extension checks one site at a time while you browse. This Actor analyzes whole lists of domains automatically and returns structured data you can filter, export and feed into other tools.

**How accurate is it?** Detection comes from a commercial technographics provider that fingerprints sites for thousands of technologies. Results reflect what is publicly detectable from the website; internal back-office tools that leave no trace on the site can't be detected by any tool.

**Can I find all websites using a technology (e.g. every Shopify store)?** This Actor analyzes the domains you provide. Combine it with a domain source (a lead list, a Google Maps or search scraper) and use `onlyDomainsUsing` to keep the matches.

**Is it legal?** It only reads publicly available information about websites (not personal data about people).

*Not affiliated with BuiltWith or Wappalyzer; names are used only for comparison.*

# Actor input Schema

## `domains` (type: `array`):

Domains or URLs to analyze (e.g. stripe.com or https://www.shopify.com/pricing). Duplicates are removed. One billed lookup per domain with detected technologies.

## `onlyDomainsUsing` (type: `array`):

Optional. Keep only websites that use at least one of these technologies, e.g. Shopify, HubSpot, Klarna, WordPress. Great for building lead lists. Every analyzed domain is billed, matched or not.

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

Optional. Limit the technology list to categories such as CMS, Ecommerce, Analytics, Payment processors, CRM, Marketing automation, CDN.

## `includeDescriptions` (type: `boolean`):

Add a one-line description of each technology (larger output).

## Actor input object example

```json
{
  "domains": [
    "stripe.com",
    "allbirds.com",
    "hubspot.com"
  ],
  "onlyDomainsUsing": [],
  "categories": [],
  "includeDescriptions": false
}
```

# 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 = {
    "domains": [
        "stripe.com",
        "allbirds.com",
        "hubspot.com"
    ],
    "onlyDomainsUsing": [],
    "categories": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("jesting_grass/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 = {
    "domains": [
        "stripe.com",
        "allbirds.com",
        "hubspot.com",
    ],
    "onlyDomainsUsing": [],
    "categories": [],
}

# Run the Actor and wait for it to finish
run = client.actor("jesting_grass/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 '{
  "domains": [
    "stripe.com",
    "allbirds.com",
    "hubspot.com"
  ],
  "onlyDomainsUsing": [],
  "categories": []
}' |
apify call jesting_grass/tech-stack-detector --silent --output-dataset

```

## MCP server setup

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