🦖 TinyRex Data Toolspractical guides for web data APIs

Bulk tech stack lookup: a Wappalyzer / BuiltWith alternative for thousands of domains

Updated 2026-10-08 · Tool used: Tech Stack Detector - Bulk Wappalyzer & BuiltWith Alternative on Apify · Price: about $4 per 1,000 analyzed domains; unreachable, blocked and timed-out domains are free

Wappalyzer's browser extension is great for one site at a time, but checking a list of 5,000 prospects by hand is not realistic, and bulk plans of BuiltWith-style tools are expensive. This guide shows how to run a bulk tech stack lookup over any domain list and get one clean JSON or CSV row per domain.

It uses an open-source, Wappalyzer-compatible fingerprint database (7,600+ technologies) and also tells you each company's email provider (Google Workspace, Microsoft 365...), the SaaS tools in its SPF record and its DMARC policy.

Open Tech Stack Detector on Apify →

Steps

  1. Collect your domains (a CRM export, a list of competitors, a directory scrape). URLs and duplicates are normalized automatically.
  2. Optionally set onlyIfUses (e.g. ["Shopify"]) to keep only matching domains, which turns it into a lead filter.
  3. Run it from the Apify Console, the API, or an AI agent, then export the dataset as CSV/Excel/JSON.

Example input

{
  "domains": [
    "vercel.com",
    "gymshark.com",
    "techcrunch.com",
    "olx.ba"
  ],
  "includeDns": true,
  "onlyIfUses": [],
  "minConfidence": 50
}

Example output (one item, shortened)

{
  "input": "vercel.com",
  "domain": "vercel.com",
  "finalUrl": "https://vercel.com/",
  "statusCode": 200,
  "title": "Agentic Infrastructure - Vercel",
  "language": "en",
  "technologies": [
    {
      "name": "Amazon S3",
      "version": null,
      "confidence": 100,
      "categories": [
        "CDN"
      ],
      "website": "https://aws.amazon.com/s3/",
      "implied": false
    },
    {
      "name": "Amazon Web Services",
      "version": null,
      "confidence": 100,
      "categories": [
        "PaaS"
      ],
      "website": "https://aws.amazon.com/",
      "implied": true
    },
    {
      "name": "HSTS",
      "version": null,
      "confidence": 100,
      "categories": [
        "Security"
      ],
      "website": "https://www.rfc-editor.org/rfc/rfc6797#section-6.1",
      "implied": false
    },
    "..."
  ],
  "techNames": [
    "Amazon S3",
    "Amazon Web Services",
    "HSTS",
    "..."
  ],
  "byCategory": {
    "CDN": [
      "Amazon S3"
    ],
    "PaaS": [
      "Amazon Web Services",
      "Vercel"
    ],
    "Security": [
      "HSTS"
    ],
    "JavaScript frameworks": [
      "Next.js",
      "React"
    ],
    "Web frameworks": [
      "Next.js"
    ],
    "Programming languages": [
      "Node.js"
    ],
    "Miscellaneous": [
      "Open Graph",
      "PWA",
      "Webpack"
    ],
    "Performance": [
      "Priority Hints"
    ]
  },
  "blocked": false,
  "error": null,
  "checkedAt": "2026-10-04T06:53:25.679Z"
}

Every run's dataset can be downloaded as JSON, CSV, Excel, XML or HTML from the Apify Console, or via https://api.apify.com/v2/datasets/<datasetId>/items?format=csv.

Run it from code

Python

from apify_client import ApifyClient  # pip install apify-client

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
  "domains": [
    "vercel.com",
    "gymshark.com",
    "techcrunch.com",
    "olx.ba"
  ],
  "includeDns": true,
  "onlyIfUses": [],
  "minConfidence": 50
}
run = client.actor("tinyrex/tech-stack-detector").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client'; // npm i apify-client

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tinyrex/tech-stack-detector').call({
  "domains": [
    "vercel.com",
    "gymshark.com",
    "techcrunch.com",
    "olx.ba"
  ],
  "includeDns": true,
  "onlyIfUses": [],
  "minConfidence": 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

curl (no SDK)

# Runs the actor and returns the results directly (CSV here; use format=json for JSON)
curl -X POST "https://api.apify.com/v2/acts/tinyrex~tech-stack-detector/run-sync-get-dataset-items?format=csv" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["vercel.com", "gymshark.com", "techcrunch.com", "olx.ba"], "includeDns": true, "onlyIfUses": [], "minConfidence": 50}' > results.csv

Get your API token in Apify Console → Settings → API & Integrations. The free Apify plan includes monthly credit that is enough to try this.

Use it from an AI agent (MCP)

The Apify MCP server exposes this actor as a tool for Claude, Cursor, VS Code, n8n and other MCP clients. Add this to your client's MCP config (or use the OAuth flow at mcp.apify.com instead of a token):

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=tinyrex/tech-stack-detector",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Then ask in plain language, e.g. "Free wappalyzer alternative bulk for this list and give me a table".

Pricing

Pay per result: about $4 per 1,000 analyzed domains; unreachable, blocked and timed-out domains are free. You can cap the cost of every run in the run options.

FAQ

Is there a free Wappalyzer alternative for bulk lookups?

Apify's free plan includes monthly platform credit, which covers roughly a thousand domain lookups with this actor at about $4 per 1,000. Failed domains are not charged.

How do I find all Shopify stores in a list of domains?

Pass the list as domains and set onlyIfUses to ["Shopify"]. Non-matching domains are dropped (and charged at a much lower rate), so the dataset contains only Shopify stores.

Does it execute JavaScript?

No. It analyzes the homepage HTML, headers, cookies and script URLs over plain HTTP, which is why it is fast and cheap. Technologies detectable only through browser-side JavaScript may be missed.

Try it on Apify →

More guides