Website Tech Stack Scraper - Detect Technologies in Bulk avatar

Website Tech Stack Scraper - Detect Technologies in Bulk

Pricing

from $1.05 / 1,000 results

Go to Apify Store
Website Tech Stack Scraper - Detect Technologies in Bulk

Website Tech Stack Scraper - Detect Technologies in Bulk

Find out which technologies a website runs on, for hundreds of company domains in one run. For every domain you get the detected technologies with version, confidence, category and website (CMS, e-commerce platform, analytics, tag managers, CDN, hosting, JavaScript frameworks, payment, marketing too

Pricing

from $1.05 / 1,000 results

Rating

0.0

(0)

Developer

Martin Petrov

Martin Petrov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Security

Limited permissions

Share

Tech Stack Lookup API - Detect Technologies, Bulk, MCP

Which CMS, shop platform, analytics, CDN and email provider does a company use? BuiltWith and Wappalyzer subscriptions cost hundreds of dollars a month, and sales and lead-gen teams need the tech stack of hundreds of prospect companies at once. This actor gives you the same kind of answer per domain for $2 per 1,000 websites, with no subscription and no API key.

Give it a list of domains. It makes one polite request to each homepage, matches 3,500+ open technology fingerprints, reads the MX and SPF records to find the email provider, and returns one clean row per domain. Works from the Apify API, from the console, and from AI agents via MCP.

What you get per domain

  • Technologies with version, confidence, categories and website (CMS, e-commerce, analytics, tag managers, CDN, hosting, web servers, JavaScript frameworks, payment processors, marketing and support tools, security).
  • Shortcuts for filters and CRM columns: cms, ecommerce, analytics, emailProvider, cdn, technologyNames, categories.
  • Company info: page title, meta description, generator and the company's own social profile links (LinkedIn, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub).
  • Only-new mode: alerts when a domain adds or drops a technology (a prospect moves from WooCommerce to Shopify, a competitor installs a new analytics tool).

Quick start (API)

curl -X POST "https://api.apify.com/v2/acts/martin10291~website-tech-stack-detector/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains": ["shopify.com", "stripe.com", "hubspot.com"], "includeDns": true}'

Use from AI agents (MCP)

Add this actor to the Apify MCP server at https://mcp.apify.com and your agent can call it as a tool:

https://mcp.apify.com?tools=martin10291/website-tech-stack-detector

Example prompt: "What CMS and email provider do these 20 companies use?" The agent passes the domains and reads back cms, ecommerce and emailProvider from the rows.

Input

FieldTypeDefaultDescription
domainsarray5 example sitesDomains or URLs to analyse. The homepage is fetched once per site.
includeDnsbooleantrueRead MX and TXT records to detect the email provider and SPF senders.
includeCompanyInfobooleantrueAdd title, description, generator and social profile links.
minConfidenceinteger50Only report technologies with at least this confidence (0-100).
maxConcurrencyinteger10Websites fetched in parallel (1-30).
monitorIdstringemptySet it to switch on only-new mode (see below).

Output example

{
"domain": "wordpress.org",
"finalUrl": "https://wordpress.org/",
"statusCode": 200,
"technologies": [
{"name": "WordPress", "version": null, "confidence": 100, "categories": ["CMS", "Blogs"], "website": "https://wordpress.org"},
{"name": "Nginx", "version": null, "confidence": 100, "categories": ["Web servers", "Reverse proxies"], "website": "http://nginx.org/en"}
],
"categories": ["Blogs", "CMS", "Reverse proxies", "Web servers"],
"technologyNames": ["WordPress", "Nginx", "PHP", "MySQL"],
"cms": "WordPress",
"ecommerce": null,
"analytics": [],
"emailProvider": null,
"cdn": null,
"title": "WordPress.org",
"description": "...",
"socialLinks": {"twitter": "https://twitter.com/WordPress"},
"added": null,
"removed": null,
"error": null,
"checkedAt": "2026-11-05T10:00:00Z"
}

Rows for sites that cannot be reached are still returned, with error set and empty technology lists. A RUN_SUMMARY record in the key-value store holds domainsIn, itemsOut, failed, lastError, durationSec and fingerprintsVersion.

Only-new mode: technology change alerts

Set monitorId (for example "prospects-q4"). The actor remembers the technology set of every domain under that ID. On the next run it outputs only domains whose stack changed, with added[] and removed[]. The first run with a new ID reports every domain as new (added = everything). Schedule the actor daily or weekly and connect a webhook or an Apify integration to get alerts. Use one ID per watch list.

FAQ

How accurate is it? Detection matches the open Wappalyzer fingerprints against the response headers, cookies, HTML, script URLs, meta tags and DNS records. Fingerprints that need a running browser (JavaScript globals, rendered DOM) are not used, so some client-side-only tools will be missed. Use confidence to judge weak signals.

Why is a site missing technologies or showing HTTP 403? Some sites block automated requests. Their headers and DNS are still analysed, but page-content signals are missing. The actor sends one honest request with its own User-Agent and does not use proxies or evasion.

Does it crawl the whole site? No, it analyses the homepage only (or the exact URL you pass).

Is it legal? It reads public homepage content and public DNS records of companies. No personal data is collected; social links are the company's own profiles.

How fast is it? About 30 domains in 40 seconds at the default concurrency of 10.

How is it priced? Pay per result, $2 per 1,000 rows.

Notice

Fingerprints: Wappalyzer (MIT) v6.10.54, 3,588 technologies. The license text is in src/data/LICENSE. Not affiliated with Wappalyzer or BuiltWith.

Use it as an integration (chain it after another actor)

This actor can run automatically after any actor whose results contain a website or domain.

  1. Open the source actor in Apify Console and go to the Integrations tab.
  2. Click Add integration -> Actor, pick this actor and set Dataset to {{resource.defaultDatasetId}} (leave domains empty). Set your other options and save.
  3. When the source run finishes, this actor reads its dataset and processes every row. The field is detected automatically; set Dataset field if your column has another name.

You can also start it by hand with datasetId (pick a dataset or paste its ID) to process an existing dataset.

Good sources to chain from:

  • compass/crawler-google-places (Google Maps Scraper)
  • martin10291/local-business-leads-osm
  • martin10291/shopify-app-store-scraper (developerWebsite)
  • martin10291/apple-podcasts-scraper (website)
  • any lead list with a website/domain column