# Website Tech Stack Detector: Bulk Lead Filters (`offerastudio/website-tech-stack-detector`) Actor

Detect the technologies of up to 5,000 websites in bulk: CMS, e-commerce platform, analytics, tag managers, CDN, hosting hints and email provider, with versions where visible. Keep only sites that use, or do not use, given technologies. No proxy or login.

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

## Pricing

from $2.00 / 1,000 site 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

### What does Website Tech Stack Detector do?

**Website Tech Stack Detector** finds out which technologies up to **5,000 websites** use, and lets you **keep only the sites that match your lead list**: for example every Shopify store **without** Klaviyo, or every WordPress site with WooCommerce and no Google Tag Manager. For each site you get:

- 🧩 **Technologies** with **category, version where visible, a confidence score and the evidence** (the script URL, header, cookie or DNS record that gave it away).
- 🏷️ **Quick fields for lead lists**: CMS, e-commerce platform, analytics tools, tag managers, CDN, hosting and server hints, and the **email provider** (from the MX records: Google Workspace, Microsoft 365 ...).
- 🔎 **Lead-list filters**: *Must use* (any of) and *Must not use* (any of), plus a category filter.
- 📊 **A free summary row** for the whole run: how many of the sites use each technology and category.

It reads the sites over **plain HTTP** (no browser, no proxy, no login): the homepage (plus up to two more pages that the site's `robots.txt` allows), the response headers, cookie names, and the MX and TXT records over DNS-over-HTTPS. The fingerprints are our own (`src/fingerprints.json`), not copied from any GPL data set.

### Who is it for?

- **Sales and lead generation**: build target lists by technology: "Shopify stores that use no email marketing tool", "WooCommerce shops on a slow host", "sites with no analytics".
- **Agencies and consultants**: audit a client list or a competitor set in one run.
- **App and plugin vendors**: find the sites that already use the platform your product integrates with.
- **Market researchers**: count technology adoption across a list of sites.

### How to use it

1. Paste your sites into **URLs or domains** (one per line, up to 5,000).
2. Optional: fill **Must use** (keep a site if it uses any of these) and **Must not use** (drop a site if it uses any of these). Names are the ones in the output, case-insensitive, for example `Shopify`, `Klaviyo`, `WooCommerce`, `HubSpot`, `Google Workspace`.
3. Optional: set **Pages per site** to 2 or 3 to also read pricing, shop or contact pages (more tools found), or limit the **Categories to return**.
4. Click **Start**. **Sites** shows the lead-list columns, **All technologies** the full detail, **Summary and errors** the totals and free rows.

### Input example

```json
{
    "urls": ["shop-one.example", "https://www.shop-two.example", "agency-site.example"],
    "mustUse": ["Shopify"],
    "mustNotUse": ["Klaviyo", "Mailchimp"],
    "maxPagesPerSite": 2,
    "includeFilteredOut": false
}
```

### Output example

One row per site (real data from a run on 7 October 2026, shortened to the first technologies):

```json
{
    "type": "site",
    "domain": "wordpress.org",
    "url": "https://wordpress.org/",
    "finalUrl": "https://wordpress.org/",
    "title": "Blog Tool, Publishing Platform, and CMS – WordPress.org",
    "httpStatus": 200,
    "technologies": [
        {
            "name": "WordPress",
            "category": "CMS",
            "version": "7.2",
            "confidence": 100,
            "evidence": ["meta generator: WordPress 7.2-alpha-64231", "header link: <https://wordpress.org/wp-json/>; rel=\"https://api.w.org/\", ...", "html /wp-content/"]
        },
        { "name": "Google Tag Manager", "category": "Tag manager", "version": null, "confidence": 91, "evidence": ["url https://www.googletagmanager.com/gtm.js?id=", "html GTM-P24PF4B"] },
        { "name": "Nginx", "category": "Web server", "version": null, "confidence": 85, "evidence": ["header server: nginx"] }
    ],
    "technologyNames": ["WordPress", "Google Tag Manager", "Nginx", "Google Fonts"],
    "cms": "WordPress",
    "ecommerce": null,
    "analytics": [],
    "tagManagers": ["Google Tag Manager"],
    "cdn": [],
    "hosting": ["Nginx"],
    "emailProvider": null,
    "pagesFetched": ["https://wordpress.org/"],
    "matchedFilter": null
}
```

`matchedFilter` is `true` when you set filters and the site passed them, `null` when no filter is set. `confidence` is 0 to 100: a meta tag or MX record counts for more than a word in the page source, and several kinds of evidence add up.

The **summary row** (free) shows `technologyCounts` (sites per technology, with share) and `categoryCounts` across all analysed sites, before filtering, for example *"5 sites analysed, 5 matched your filters, 0 left out, 0 failed; most used: Google Workspace (4), Microsoft 365 (4), Next.js (2)."*

#### What is free

Sites that fail to load (`error` rows: `dns-not-found`, `connection-failed`, `timeout`, `tls-error`, `blocked`, `http-error`, `not-html`, `invalid-input`), sites your **Must use / Must not use** lists leave out (they are only added as free `filtered` rows if you switch on **Include filtered-out sites**), and the summary row.

### How much does it cost?

Pay per event: **$0.002 per site analysed** that matches your filters (`site-analyzed`), so 1,000 sites cost $2.00. **Free**: failed sites, sites filtered out, the summary row. Use Apify's "maximum cost per run" to cap spend.

### Limitations

- **HTTP only, no JavaScript rendering.** Tools that a site loads only after scripts run (some tag-manager contents, consent-gated trackers) are not seen. This is why the evidence is listed: you can see what was found.
- **Detection is based on public clues**: script and link URLs, meta generator, cookies, headers and DNS. Some tools hide behind a tag manager or a proxy; a missing technology does not prove it is not used.
- **Versions** are given only when the site shows them (generator tag, file names, headers).
- **Sites that block bots** (HTTP 403, challenge pages) give a free `blocked` row.
- **robots.txt** is respected for the extra pages (pricing, shop, contact ...). The homepage is read like a normal visit.
- The **email provider** comes from the MX records of the registrable domain and may be a mail filter (Mimecast, Proofpoint) rather than the mailbox host. Technologies from TXT records (sending services, domain verification) show which services the company has set up with its domain.
- About 230 technologies are covered today. Tell us what is missing.

### FAQ

#### How do I get "Shopify stores without Klaviyo"?

Set **Must use** to `Shopify` and **Must not use** to `Klaviyo`. Stores that use Klaviyo are left out and not charged.

#### What names can I use in the filters?

The names in the `technologyNames` field, for example `WordPress`, `WooCommerce`, `Shopify`, `Magento`, `HubSpot`, `Google Analytics 4`, `Google Tag Manager`, `Cloudflare`, `Google Workspace`, `Microsoft 365`. Case does not matter.

#### Is this the same data as BuiltWith or Wappalyzer?

No. It uses its own fingerprint list and reads the same kinds of public clues. Results will differ.

#### Does it use a proxy or a browser?

No.

### More tools from the same developer

All pay-per-result, no proxy or login needed, built and maintained by the same developer:

**Website audits**

- [Website Accessibility Checker: WCAG 2.2 & EAA](https://apify.com/offerastudio/website-accessibility-audit): accessibility issues with fixes, SEO basics and security headers.
- [Cookie & Tracker Audit: GDPR Consent Checker](https://apify.com/offerastudio/cookie-tracker-audit): cookies and tracking tags that load before consent.
- [AI Crawler Access Checker: robots.txt & llms.txt](https://apify.com/offerastudio/ai-crawler-access-audit): which AI crawlers a site allows, plus llms.txt.
- [Structured Data Validator: Schema & Rich Results](https://apify.com/offerastudio/structured-data-validator): JSON-LD and Microdata checked against Google's rich result rules.
- [Website Change Monitor: Diffs, Prices & Alerts](https://apify.com/offerastudio/website-change-monitor): get a row only when a page changes, with a clean diff.
- [Policy Change Monitor: Privacy & Terms Tracker](https://apify.com/offerastudio/policy-change-monitor): privacy policy and terms changes, classified clause by clause.
- [SaaS Pricing Monitor: Track Competitor Plans](https://apify.com/offerastudio/saas-pricing-monitor): competitor pricing plans as structured data, with price-change diffs.
- [Sitemap Change Monitor: New & Removed URLs](https://apify.com/offerastudio/sitemap-change-monitor): new, removed and changed URLs from a site's sitemaps.
- [Site SEO Crawler: Broken Links & On-Page Audit](https://apify.com/offerastudio/site-seo-crawler-audit): site-wide crawl for broken links, redirects and on-page SEO issues.
- [Domain Availability & Expiry Checker (RDAP)](https://apify.com/offerastudio/domain-whois-availability): domain availability, registrar and expiry dates from RDAP.
- [Status Page SLA Monitor: Uptime & Incidents](https://apify.com/offerastudio/status-page-sla-monitor): SaaS vendor uptime, incidents and a monthly SLA table from public status pages.

**Company data and compliance**

- [Company Contact Finder: Emails, Phones & Socials](https://apify.com/offerastudio/company-contact-finder): contact details published on company websites.
- [UK New Companies Feed: Companies House Daily](https://apify.com/offerastudio/uk-new-companies-feed): newly incorporated UK companies with sector filters.
- [EU VAT Number Validator: Bulk VIES Checker](https://apify.com/offerastudio/eu-vat-number-validator): bulk VAT checks with name, address and consultation number.
- [LEI Corporate Tree: GLEIF Parents & Subsidiaries](https://apify.com/offerastudio/gleif-lei-corporate-tree): LEI lookup with parents, subsidiaries and a KYC summary.
- [UK Company Distress Watch: Insolvency Alerts](https://apify.com/offerastudio/uk-company-distress-watch): administrations, liquidations and winding-up petitions from The Gazette.
- [IBAN Validator: Bulk Check & Bank Lookup](https://apify.com/offerastudio/iban-bank-validator): IBAN format and checksum, plus bank name and BIC where open data exists.
- [Sanctions Screening: OFAC, EU, UN & UK Lists](https://apify.com/offerastudio/sanctions-screening): names screened against official sanctions lists, with match scores.
- [OSHA & EPA Violation Monitor: Fines by Company](https://apify.com/offerastudio/osha-epa-violation-monitor): US OSHA and EPA enforcement cases and penalties by company.
- [Email List Precheck: Syntax, MX & Disposable Check](https://apify.com/offerastudio/email-list-precheck): cheap email list hygiene before a real verification.
- [UK Company Officer Changes: Director & PSC Alerts](https://apify.com/offerastudio/uk-company-officer-changes): director, owner, address and status changes for a watchlist of UK companies.
- [FDA Warning Letters Monitor: By Company & Subject](https://apify.com/offerastudio/fda-warning-letters-monitor): FDA warning letters by company and subject, with cited regulations.
- [Supplier Risk Report: Sanctions, VAT & Insolvency](https://apify.com/offerastudio/supplier-risk-report): one risk row per supplier from eight official registers, with changes since last run.
- [Brand Impersonation Domain Monitor: Look-alikes](https://apify.com/offerastudio/brand-impersonation-domain-monitor): look-alike domains and certificates that imitate your brand, with a risk score.

**Media and AI**

- [Audio & Video Transcriber: Podcasts, SRT, Speakers](https://apify.com/offerastudio/audio-video-transcriber): audio, video, podcasts and social links to text, SRT and VTT.
- [Podcast Mention Alerts: Brand Mentions by Second](https://apify.com/offerastudio/podcast-mention-alerts): where your brand is said in new podcast episodes, with the exact second.
- [News Brand Mentions Monitor: New Articles Only](https://apify.com/offerastudio/news-brand-mentions-monitor): new news articles about your brand, people or topics.
- [YouTube Channel Monitor: New Videos & Growth](https://apify.com/offerastudio/youtube-channel-monitor): new videos and view growth of the channels you watch.

**Market signals**

- [US WARN Layoff Notices: 12 States Daily Feed](https://apify.com/offerastudio/us-warn-layoff-notices): layoff and plant closure notices from official state sources.
- [US Product Recalls Monitor: FDA & CPSC Feed](https://apify.com/offerastudio/us-product-recalls-monitor): FDA and CPSC recalls in one feed, with severity.
- [EU Tenders Feed: TED Public Procurement Alerts](https://apify.com/offerastudio/eu-tender-feed): EU public tenders from TED with CPV, country and value filters.
- [Liquor License Openings: New Bars & Stores (US)](https://apify.com/offerastudio/liquor-license-openings): new US liquor licences from official state open data.
- [Clinical Trials Change Monitor: Status & Updates](https://apify.com/offerastudio/clinicaltrials-change-monitor): status, enrollment and results changes on ClinicalTrials.gov studies.
- [Career Site Jobs Monitor: ATS Jobs & New Roles](https://apify.com/offerastudio/career-site-jobs-monitor): open roles from company career sites, with new and closed roles since the last run.
- [App Reviews Monitor: App Store & Google Play](https://apify.com/offerastudio/app-store-reviews-monitor): app reviews from both stores, only new ones in monitor mode.
- [US Federal Contracts Feed: SAM.gov & USAspending](https://apify.com/offerastudio/us-federal-contracts-feed): SAM.gov contract opportunities with the buyer's award history.
- [Grants.gov Opportunities: US Federal Grants Feed](https://apify.com/offerastudio/grants-gov-opportunities): US federal grant opportunities by keyword, eligibility and agency.
- [Federal Register Monitor: US Rules & Notices Feed](https://apify.com/offerastudio/federal-register-monitor): new US rules, proposed rules and notices by agency or topic.
- [B2B Sales Trigger Feed: Hiring + Tech Leads](https://apify.com/offerastudio/b2b-sales-trigger-feed): companies hiring for a role and using (or not using) a technology, with contacts.
- [Local Business Leads: OpenStreetMap, No Website](https://apify.com/offerastudio/local-business-leads-osm): local businesses by city and category, including those with no website.
- [Solana Token Pair Monitor: New & Trending Pairs](https://apify.com/offerastudio/solana-token-pair-monitor): new and trending Solana pairs with liquidity, volume and safety flags.

### Feedback

Missing a technology or a wrong detection? Open an issue on the **Issues** tab with the site and the technology.

# Changelog

This Actor's version history is a separate document: https://apify.com/offerastudio/website-tech-stack-detector/changelog.md

# Actor input Schema

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

Websites to analyse, one per line (shopify.com, https://www.wordpress.org). Up to 5,000.

## `mustUse` (type: `array`):

Keep only sites that use at least one of these technologies, e.g. Shopify, WooCommerce, HubSpot. Names as in the output (case-insensitive). Sites left out are free.

## `mustNotUse` (type: `array`):

Drop sites that use any of these technologies. "Shopify" in Must use and "Klaviyo" here gives Shopify stores without Klaviyo.

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

Return only technologies of these categories in the rows, e.g. Analytics, CMS, E-commerce, Email, CDN. Filters still look at everything detected. Leave empty for all.

## `maxPagesPerSite` (type: `integer`):

1 = homepage only. 2 or 3 also read up to two more pages the site's robots.txt allows (pricing, shop, contact ...), which finds more tools.

## `checkDns` (type: `boolean`):

Ask DNS-over-HTTPS (Cloudflare) for the mail provider and verification records.

## `includeFilteredOut` (type: `boolean`):

Also add a free row for sites that your Must use / Must not use lists left out, with the reason.

## Actor input object example

```json
{
  "urls": [
    "https://www.shopify.com",
    "https://wordpress.org",
    "https://vercel.com",
    "https://www.wix.com",
    "https://stripe.com"
  ],
  "maxPagesPerSite": 1,
  "checkDns": true,
  "includeFilteredOut": false
}
```

# Actor output Schema

## `sites` (type: `string`):

No description

## `technologies` (type: `string`):

No description

## `summary` (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://www.shopify.com",
        "https://wordpress.org",
        "https://vercel.com",
        "https://www.wix.com",
        "https://stripe.com"
    ]
};

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

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

```

## MCP server setup

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