# Website Tech Stack & Lead Intelligence Scraper (`scrapesage/website-tech-stack-scraper`) Actor

Detect any website's full technology stack — CMS, e-commerce, analytics, ad pixels, CRM, payments, CDN & 200+ more — plus B2B lead intelligence: contacts, firmographics, email host (MX), TLS and a technographic lead score. Filter by technology and monitor stack changes. No login.

- **URL**: https://apify.com/scrapesage/website-tech-stack-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** SEO tools, Lead generation, Automation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 website 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Website Tech Stack & Lead Intelligence Scraper — Technographics + B2B Leads

Detect **any website's full technology stack** — CMS, e-commerce platform, JavaScript frameworks, analytics, advertising pixels, CRM, marketing automation, email tools, live chat, payments, reviews, CDN, hosting and **180+ more** — and turn each domain into a **ready-to-use B2B lead**: contact emails & phones, firmographics, social profiles, the company's **email host (Google Workspace / Microsoft 365 / …)**, TLS certificate and a **0–100 technographic lead score** with buying signals.

No login, no cookies, no API keys — fast HTTP detection with graceful, reliable handling of any domain list.

### Why this tech-stack scraper?

Most "BuiltWith alternative" actors only return a flat list of technologies. This actor ships the **richest technographic + lead record in the category** — it detects the stack **and** hands you everything you need to act on it:

| Data | Typical tech-stack scrapers | This actor |
|---|---|---|
| CMS / e-commerce / framework detection | ✅ | ✅ |
| Analytics, ad pixels, tag managers | partial | ✅ |
| CRM, marketing automation, email, live chat, payments, reviews | ❌ | ✅ |
| **Email host (MX) — Google Workspace / Microsoft 365 / Proofpoint…** | ❌ | ✅ |
| SPF / DMARC + SaaS domain-verification records | ❌ | ✅ |
| TLS certificate issuer & expiry | ❌ | ✅ |
| Firmographics (company name, description, logo, language) | ❌ | ✅ |
| **Contact emails & phone numbers** | ❌ | ✅ opt-in |
| Social profiles (LinkedIn, X, Facebook, Instagram, …) | ❌ | ✅ |
| **0–100 technographic lead score + buying signals** | ❌ | ✅ |
| **Technology filter — "only sites using Shopify + Klaviyo"** | ❌ | ✅ |
| **Monitor mode — alert when a site adds/removes a technology** | ❌ | ✅ |

### Use cases

- **Technographic lead generation** — build targeted prospect lists: "every site using **Shopify** but **no live chat**", "all **HubSpot** customers", "stores on **Klaviyo**". Filter by technology, score by buying intent, and export the contacts.
- **Sales personalization** — open with what a prospect actually runs ("I saw you're on Marketo and Drift…"). The `leadSignals` field writes the hook for you.
- **Competitive & market intelligence** — map which platforms, pixels and tools a market segment uses; track adoption and churn over time.
- **Partner & integration targeting** — find every site running the platform you integrate with (Shopify, Salesforce, WordPress, BigCommerce…).
- **CRM enrichment** — append tech stack, email host, firmographics and a lead score to a list of domains you already have.
- **Agency prospecting** — find outdated stacks, missing analytics/consent/security, or "no reviews tool on a store" gaps to pitch.
- **Security & web audits** — surface TLS expiry, missing DMARC, exposed server software and WAF/bot tooling across a portfolio.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Website Tech Stack & Lead Intelligence Scraper**, paste a list of domains (or upload a file/Google Sheet of URLs), and click **Start**.
3. (Optional) Add a **Technology filter** to keep only sites using specific tools, or a **Minimum lead score** to keep only the hottest prospects.
4. Watch results stream into the dataset — switch between the **Tech & leads**, **Lead generation** and **Marketing & sales stack** views.
5. **Export** as JSON, CSV, Excel or XML — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "domains": ["allbirds.com", "glossier.com", "hubspot.com"],
    "enrichContacts": true,
    "crawlExtraPages": false,
    "includeDns": true,
    "includeTls": true,
    "technologyFilter": ["Shopify"],
    "technologyFilterMode": "any",
    "minLeadScore": 0,
    "maxResults": 100
}
```

- **domains** — list of domains or website URLs to analyze (e.g. `shopify.com`, `https://www.stripe.com`).
- **startUrls** — alternative input as a request list (supports uploading a file or Google Sheet of URLs); merged with `domains`.
- **enrichContacts** *(default true)* — extract contact emails, phones and social profiles. Fetches one Contact/About page per site (billed as a `contactEnrichment` event).
- **crawlExtraPages** *(default false)* — fetch up to 3 extra pages (Contact, About, Pricing) per site for deeper detection and more complete contacts.
- **includeDns** *(default true)* — resolve MX (email host), nameservers, SPF/DMARC and SaaS verification records.
- **includeTls** *(default true)* — read the TLS certificate (issuer + days to expiry).
- **technologyFilter** — only output sites using these technologies (case-insensitive, partial match, e.g. `["Shopify", "Klaviyo"]`). Turns the actor into a technographic list builder.
- **technologyFilterMode** *(`any` / `all`)* — whether a site must match ANY or ALL of the filter technologies.
- **minLeadScore** *(0–100)* — only output sites at or above this technographic lead score.
- **monitorMode** / **onlyNewItems** / **monitorKey** — remember each site's stack across runs and emit only new or changed sites (tech additions/removals are buying signals). Works alongside Apify Schedules.
- **maxResults** *(default 100)* — cap the number of sites (use `0` for no limit with a bounded list).
- **proxyConfiguration** — datacenter by default (cheap, works for most sites); switch to residential for anti-bot-heavy targets.

### Output

One record per website (`type: "website"`):

```json
{
    "type": "website",
    "domain": "glossier.com",
    "companyName": "Glossier",
    "technologyCount": 13,
    "topTechnologies": "Shopify, jQuery, Google Tag Manager, Klaviyo, Drift, Zendesk",
    "ecommercePlatform": "Shopify",
    "analyticsTools": "Google Tag Manager",
    "emailMarketing": "Klaviyo",
    "liveChat": "Drift, Zendesk",
    "paymentProcessors": "Apple Pay, Shop Pay",
    "cdn": "Cloudflare",
    "emailHost": "Google Workspace",
    "leadScore": 95,
    "techMaturityScore": 100,
    "leadSignals": [
        "Runs an online store (Shopify)",
        "Runs email marketing (Klaviyo)",
        "Has 3 contact emails",
        "Email host: Google Workspace"
    ],
    "emails": ["gteam@glossier.com", "brand@glossier.com", "press@glossier.com"],
    "linkedinUrl": "https://www.linkedin.com/company/glossier",
    "socials": { "instagram": "https://instagram.com/glossier", "tiktok": "https://tiktok.com/@glossier" },
    "technologies": [
        { "name": "Shopify", "categories": ["E-commerce"], "version": null, "confidence": 100 },
        { "name": "Klaviyo", "categories": ["Email marketing", "Marketing automation"], "version": null, "confidence": 90 }
    ],
    "dns": { "mxProvider": "Google Workspace", "hasSpf": true, "hasDmarc": true, "verifications": ["google-site-verification", "stripe-verification"] },
    "tls": { "issuer": "Let's Encrypt", "validTo": "2026-09-01T00:00:00.000Z", "daysToExpiry": 67 },
    "finalUrl": "https://www.glossier.com/",
    "httpReachable": true,
    "scrapedAt": "2026-06-26T18:00:00.000Z"
}
```

Flat per-category columns (`ecommercePlatform`, `cms`, `crmTools`, `advertisingPixels`, `liveChat`, `paymentProcessors`, …) make it trivial to filter and pivot in a spreadsheet; the full `technologies[]` array carries every detection with its category and confidence.

### Automate & schedule

Run this actor on autopilot and pull results into your stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — re-scan a watchlist daily/weekly with `monitorMode` to catch the moment a prospect adopts (or drops) a technology — a high-intent buying signal.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger CRM imports, Slack alerts or email sequences the instant a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/website-tech-stack-scraper').call({
    domains: ['allbirds.com', 'glossier.com', 'gymshark.com'],
    technologyFilter: ['Shopify'],
    enrichContacts: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} technographic lead records`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push enriched leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored site changes its stack.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find every Shopify store in this list that doesn't use a live-chat tool and give me their contact emails" and let it run this scraper.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **B2B lead-gen & enrichment stack**:

- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** — emails, phones, socials & addresses from any website or domain list.
- **[LinkedIn Company Scraper](https://apify.com/scrapesage/linkedin-company-scraper)** — firmographics, employee count, followers, HQ & specialties.
- **[Google Maps Scraper](https://apify.com/scrapesage/google-maps-scraper)** — local business leads with phone, website, rating & contacts.
- **[IndiaMART Scraper](https://apify.com/scrapesage/indiamart-scraper)** — B2B supplier & product leads from India's #1 marketplace.
- **[Glassdoor Scraper](https://apify.com/scrapesage/glassdoor-scraper)** — company reviews, ratings & interview intel for account research.
- **[Eventbrite Scraper](https://apify.com/scrapesage/eventbrite-scraper)** — event organizer leads with emails & socials.

### Tips

- **Build a technographic list**: set `technologyFilter` (e.g. `["Shopify", "Klaviyo"]`) with `technologyFilterMode: "all"` to keep only sites that run your exact target stack, then export the contacts.
- **More contacts**: turn on `crawlExtraPages` to also read each site's Contact/About/Pricing pages — it materially increases email coverage.
- **Cost control**: datacenter proxy (default) is cheapest; only switch to residential if you target sites with aggressive anti-bot. DNS, TLS and email-host detection work even when a page is blocked, so you always get a record.
- **Change detection**: combine `monitorMode` + `onlyNewItems` with a [Schedule](https://docs.apify.com/platform/schedules) to receive only sites whose stack changed since the last run.

### FAQ

**Which technologies can it detect?** 180+ of the highest-signal technologies across e-commerce, CMS, frameworks, analytics, advertising, CRM, marketing automation, email, live chat, payments, reviews, A/B testing, CDP, CDN, hosting, security, consent and more — the ones that matter for sales, marketing and competitive research.

**How is the email host detected?** From the domain's public **MX records** (DNS) — it maps the mail exchangers to providers like Google Workspace, Microsoft 365, Proofpoint or Mimecast. A great firmographic and a strong fit signal for IT/security vendors.

**Where do the contact emails come from?** Only from the site's own public pages (homepage and, optionally, Contact/About pages) — the same emails a human visitor would see. Placeholder and asset addresses are filtered out.

**Do I need a BuiltWith or Wappalyzer API key?** No. This actor detects technologies directly from each site's HTML, scripts, headers, cookies and DNS — no third-party API, key or login.

**A category column is empty — why?** Per-category columns (e.g. `crmTools`, `paymentProcessors`) are populated **only when the site actually uses a technology in that category** — an empty value means "not detected", which is itself a useful signal (e.g. "no live chat" = an opportunity).

**Is scraping this data legal?** The actor reads only publicly available information from each website and public DNS/TLS. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for any personal data) and each site's terms.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests — including new technology fingerprints — are welcome; this actor is actively maintained.

# Actor input Schema

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

List of domains or website URLs to analyze (e.g. "shopify.com", "https://www.stripe.com"). The actor visits each site and detects its technology stack, contacts, firmographics, email host and TLS.

## `startUrls` (type: `array`):

Website URLs to analyze, as a request list (supports uploading a file/Google Sheet of URLs). Merged with "Domains".

## `maxResults` (type: `integer`):

Maximum number of websites to analyze. Use 0 for no limit (only with a bounded input list).

## `enrichContacts` (type: `boolean`):

Extract contact emails, phone numbers and social profiles from each site. When on, the actor also fetches one Contact/About page per site (billed as a contactEnrichment event).

## `crawlExtraPages` (type: `boolean`):

Fetch up to 3 extra pages (Contact, About, Pricing) per site for deeper technology detection and more complete contacts. Slower and costs extra contactEnrichment events.

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

Resolve DNS records: MX (email host such as Google Workspace / Microsoft 365), nameservers, SPF/DMARC and SaaS domain-verification records.

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

Read the TLS/SSL certificate: issuer (Let's Encrypt, DigiCert, …) and days to expiry.

## `technologyFilter` (type: `array`):

Only output sites that use these technologies (case-insensitive, partial match — e.g. "Shopify", "HubSpot", "Klaviyo"). Turns the actor into a technographic list builder. Leave empty to output every site.

## `technologyFilterMode` (type: `string`):

Whether a site must match ANY or ALL of the technologies in the filter.

## `minLeadScore` (type: `integer`):

Only output sites with a technographic lead score (0-100) at or above this value.

## `monitorMode` (type: `boolean`):

Remember each site's stack across runs and annotate added/removed technologies (buying signals). Works alongside Apify Schedules — Schedules decide WHEN to run, this decides WHAT changed.

## `onlyNewItems` (type: `boolean`):

With monitor mode, output only sites that are new or whose technology stack changed since the last run. Ideal for scheduled change-detection feeds.

## `monitorKey` (type: `string`):

Names the monitor state store so you can run independent watchlists in parallel.

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

How many sites to analyze in parallel.

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

Proxy settings. Datacenter (default) is cheap and works for the vast majority of sites; switch to Residential for anti-bot-heavy targets.

## Actor input object example

```json
{
  "domains": [
    "allbirds.com",
    "hubspot.com"
  ],
  "maxResults": 100,
  "enrichContacts": true,
  "crawlExtraPages": false,
  "includeDns": true,
  "includeTls": true,
  "technologyFilter": [
    "Shopify",
    "Klaviyo"
  ],
  "technologyFilterMode": "any",
  "minLeadScore": 0,
  "monitorMode": false,
  "onlyNewItems": false,
  "monitorKey": "default",
  "maxConcurrency": 8,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All analyzed websites in the default dataset.

# 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": [
        "allbirds.com",
        "techcrunch.com",
        "stripe.com"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/website-tech-stack-scraper").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": [
        "allbirds.com",
        "techcrunch.com",
        "stripe.com",
    ],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/website-tech-stack-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "allbirds.com",
    "techcrunch.com",
    "stripe.com"
  ],
  "maxResults": 100
}' |
apify call scrapesage/website-tech-stack-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/website-tech-stack-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xniNnHRJp8wcRRdJU/builds/hPq6hdQdWgQVtkhRc/openapi.json
