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

Use this when you need to know what a website is built with: CMS, ecommerce platform, frameworks, analytics, ad pixels, CDN, hosting, payment and marketing tools, with versions. 7,600+ technologies detected in a real browser. Bulk URLs, pay per website.

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

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 Alternative, 7,600+ Technologies

**Find out what any website is built with, in bulk.** Paste a list of websites and get the full technology stack of each one: **CMS, ecommerce platform, JavaScript frameworks, analytics, ad pixels, tag managers, CDN, hosting, payment providers, chat widgets, cookie-consent tools, A/B testing and marketing automation**, with **version numbers** where they can be detected.

Two modes: **Fast** reads HTML, headers, cookies, meta tags and script URLs (cheapest, about 1 second per site). **Browser** loads each page in **real Chrome**, so tools added by JavaScript at runtime (framework versions, SPA frameworks, chat widgets, network calls) are caught too. In our tests, browser mode found about 2x more technologies per site. It is built on the open-source Wappalyzer-compatible fingerprint set (7,600+ technologies, 100+ categories).

- 🔍 **7,600+ technologies** checked through headers, cookies, HTML, scripts, meta tags, JavaScript globals, DOM elements and network calls
- 🏷️ **Versions and categories** for every hit, plus description, website, open-source/SaaS flags and pricing tags
- 📊 **Grouped by category** (`byCategory`), ready for lead lists and spreadsheets
- 💸 **Pay only for sites that load.** Unreachable, blocked or failing sites are free. No start fee
- 🤖 **Agent-ready:** a simple flat price and clean JSON, callable through the Apify API and MCP server

### What can I use it for?

- **Lead generation and sales prospecting:** find every Shopify store, every HubSpot customer, or every site still on an old WordPress version
- **Competitor research:** see which analytics, ads and marketing tools rivals use
- **Market research:** measure how common a technology is across thousands of domains
- **Security and IT audits:** spot outdated libraries (jQuery, Bootstrap, PHP versions) across your own sites
- **Agencies:** check a prospect's stack before a pitch

### Input example

```json
{ "urls": ["https://wordpress.org", "https://www.shopify.com", "https://vercel.com"] }
```

### Output example (shortened)

```json
{
  "url": "https://wordpress.org/",
  "success": true,
  "statusCode": 200,
  "technologyCount": 15,
  "technologyNames": ["WordPress 7.2", "PHP", "MySQL", "Nginx", "Google Analytics GA4", "Google Tag Manager"],
  "byCategory": { "CMS": ["WordPress"], "Web servers": ["Nginx"], "Analytics": ["Google Analytics GA4"] },
  "technologies": [
    { "name": "WordPress", "version": "7.2", "confidence": 100, "categories": ["CMS", "Blogs"], "website": "https://wordpress.org", "openSource": true, "detectedVia": ["meta", "html", "dom"] }
  ]
}
```

### Pricing

Pay per website analysed successfully, with no start fee. Fast mode and browser mode have separate prices, because browser mode needs far more compute. Set **Maximum cost per run** and the Actor stops cleanly at your limit.

### Use it from the API

```bash
curl -X POST "https://api.apify.com/v2/acts/poised_beardlichen~tech-stack-detector/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" -d '{"urls": ["https://vercel.com"]}'
```

```python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("poised_beardlichen/tech-stack-detector").call(run_input={"urls": ["https://vercel.com"]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["url"], item["technologyNames"])
```

### Use with AI agents (MCP)

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

Then ask your agent: *"What CMS and analytics does example.com use?"*

### FAQ

**How accurate is it?** It uses the same kind of fingerprints as Wappalyzer and runs them in a real browser, so it catches client-side tools that HTML-only scanners miss. Only detections with at least 50% confidence are returned. Technologies that are only visible on the server, or behind a login, can't be seen by any external scanner.

**Does it crawl the whole site?** It analyses each URL you give it, usually the homepage. Add more pages (for example `/cart` or `/blog`) to find more tools.

**A site is blocked or returns 403?** Turn on Apify Proxy (residential works best). Blocked sites are reported with an error and are not charged.

**Is it legal?** It reads only public information that any visitor's browser receives. No logins, no personal data.

**Where do the fingerprints come from?** From the community-maintained open-source [webappanalyzer](https://github.com/enthec/webappanalyzer) project (GPL-3.0), which continues the open Wappalyzer rule set.

### Other tools by us

- [Audio & Video Transcriber (Whisper)](https://apify.com/poised_beardlichen/audio-video-transcriber): MP3, WAV, M4A and MP4 to text, timed segments and SRT subtitles at $0.006 per audio minute.
- [Bulk Email Verifier](https://apify.com/poised_beardlichen/email-verifier-bulk): syntax, MX, disposable and role-address checks at $0.30 per 1,000 emails.
- [Website Screenshot & PDF API](https://apify.com/poised_beardlichen/website-screenshot-pdf): bulk screenshots and PDFs of any page with cookie banners and pop-ups removed.
- [Website Screenshot & PDF for AI Agents](https://apify.com/poised_beardlichen/website-screenshot-pdf-agent): fast single-page screenshots and PDFs for agents, from $0.0015 per screenshot.
- [PDF to Text & Markdown with OCR](https://apify.com/poised_beardlichen/pdf-to-text-markdown-ocr): turn PDFs, DOCX and scans into clean, LLM-ready Markdown.
- [Image to Text OCR API](https://apify.com/poised_beardlichen/image-to-text-ocr): extract text from PNG, JPEG, TIFF and WebP images in 27 languages.
- [Bulk PageSpeed & Lighthouse Checker](https://apify.com/poised_beardlichen/pagespeed-lighthouse-checker): Lighthouse scores, Core Web Vitals and top fixes for many URLs.
- [Research Paper Search](https://apify.com/poised_beardlichen/research-paper-search): arXiv, PubMed and Crossref papers plus legal open-access full text from $0.0015 per paper.
- [SEC EDGAR Financials & Filings](https://apify.com/poised_beardlichen/sec-edgar-financials): US company financials, filings and 10-K sections as compact JSON.
- [Website Legitimacy & Scam Check](https://apify.com/poised_beardlichen/website-legitimacy-check): domain age, SSL, look-alike brands, VAT and LEI signals at $0.008 per site.
- [Bulk Phone Number Validator](https://apify.com/poised_beardlichen/phone-number-validator): validity, E.164 format, line type and region for any number at $0.70 per 1,000.
- [Company Contact & Profile Extractor](https://apify.com/poised_beardlichen/company-contact-extractor): generic emails, phones, socials and profile from any company website at $0.004 per site.
- [UK & Australia Company Check](https://apify.com/poised_beardlichen/company-registry-check): ABN, ACN, ASIC and Companies House status and red flags from $0.003 per company.
- [Company Careers & Open Jobs Lookup](https://apify.com/poised_beardlichen/careers-jobs-lookup): open jobs from Greenhouse, Lever, Ashby and more at $0.0015 per job.

### Support

Missing or wrong detection? Open an issue on the **Issues** tab with the URL.

### More agent tools from Monie Tools

- [Website Screenshot & PDF for AI Agents](https://apify.com/poised_beardlichen/website-screenshot-pdf-agent): Use this when an AI agent needs a clean screenshot or PDF of a web page (cookie banners, ads, chats removed).
- [Research Paper Search: arXiv, PubMed, Crossref + Full Text](https://apify.com/poised_beardlichen/research-paper-search): scholarly papers by topic, DOI, arXiv ID or PMID from arXiv, Crossref and Europe PMC/PubMed.
- [SEC EDGAR API: Financials, Filings & 10-K Sections](https://apify.com/poised_beardlichen/sec-edgar-financials): SEC data on a US public company: profile, standardised financials, filings, 10-K/10-Q sections or EDGAR full-text search.
- [Website Legitimacy & Scam Check: Domain Age, SSL, VAT, LEI](https://apify.com/poised_beardlichen/website-legitimacy-check): must judge if a website or company looks legitimate before buying, partnering or clicking.

# Actor input Schema

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

Websites or pages to analyse. "example.com" without https:// works too.

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

Fast mode reads the page's HTML, headers, cookies, meta tags and script URLs, which detects most CMS, ecommerce, analytics and pixel tags. Browser mode loads the page in Chrome and also catches tools that only show up at runtime (framework versions, SPA frameworks, network calls). It costs more per site.

## `includeDetails` (type: `boolean`):

Add description, website, open-source/SaaS flags, pricing tags and CPE to each technology. Turn off for smaller output.

## `extraWaitSecs` (type: `integer`):

Extra time for late-loading tags (analytics, chat widgets) to appear. Browser mode only.

## `timeoutSecs` (type: `integer`):

Maximum time to load each page.

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

Pages analysed at the same time. Defaults: 20 in fast mode, 3 in browser mode (about 1 per GB).

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

Optional. Use Apify Proxy for sites that block data-centre traffic.

## Actor input object example

```json
{
  "urls": [
    "https://wordpress.org",
    "https://www.shopify.com",
    "https://vercel.com"
  ],
  "mode": "fast",
  "includeDetails": true,
  "extraWaitSecs": 2,
  "timeoutSecs": 30,
  "proxyConfiguration": {
    "useApifyProxy": 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 = {
    "urls": [
        "https://wordpress.org",
        "https://www.shopify.com",
        "https://vercel.com"
    ]
};

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

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

```

## MCP server setup

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