Tech Stack API | BuiltWith Alternative, Email Providers avatar

Tech Stack API | BuiltWith Alternative, Email Providers

Pricing

from $1.05 / 1,000 domain results

Go to Apify Store
Tech Stack API | BuiltWith Alternative, Email Providers

Tech Stack API | BuiltWith Alternative, Email Providers

Extract any website's tech stack at $1.50 per 1,000 domains, 25% under BuiltWith's own Actor, reading each site live rather than a stored database, and adding the email provider (MX), SPF senders and DMARC from DNS. CMS, Shopify and e-commerce platforms, analytics and ad pixels, chat, CRM, CDN.

Pricing

from $1.05 / 1,000 domain results

Rating

0.0

(0)

Developer

Aurelix

Aurelix

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 minutes ago

Last modified

Security

Limited permissions

Share

What is Tech Stack API?

Find out what a website runs on (CMS, e-commerce platform, analytics, ad pixels, chat, CRM, email provider) for $1.50 per 1,000 domains, no login.

For B2B sales and agencies qualifying leads. Each site is read live, not from a stored database, and the email provider, SPF senders and DMARC come from DNS even when the homepage blocks bots. Your first run with the example input costs about $0.004 (2 domains in our test run).

Tech Stack API: example output from a real run

InputA list of domains or URLs (up to 10,000 per run, extra ones skipped and counted in the status message; above about 2,500 raise the run timeout from 1 hour)
Detects200+ technologies in 17 categories, from our own fingerprint rules
EmailMailbox provider (MX), security gateway, SPF senders, DMARC policy
Output30 fields per domain; JSON, CSV, Excel, API
AutomateSchedules, webhooks, Zapier, Make, n8n, Google Sheets, MCP for AI agents
Price$1.50 per 1,000 domains ($1.05 per 1,000 domains on paid Apify plans)
Login neededNo

Why Tech Stack API users pick this one

  • 25% under BuiltWith's Actor. $1.50 per 1,000 domains against $2.00.
  • Email provider included. MX, SPF and DMARC read from DNS.
  • CRM-ready columns. One flat column per technology category.
  • Light and polite. Homepage only, robots.txt obeyed.
  • Dead domains free. Domains that neither resolve nor answer are not charged.

Get started in 3 steps

  1. Paste your domains or website URLs, one per line, e.g. allbirds.com.
  2. Click Start; each domain takes a few seconds, ten at a time (about 40 to 60 domains a minute).
  3. Download JSON, CSV or Excel, filter by a column such as ecommerce = Shopify, or send the rows to your CRM, Google Sheets, Zapier, Make or n8n.

▶ Try it with the example input

The form opens with an example input already filled in: that run costs about $0.004 on the free plan.

How much does it cost to detect a website's tech stack?

Pay per event: you pay only for what the run returns, plus a small start fee. Bronze, Silver, Gold and higher Apify plans pay less per result.

DomainsFree planPaid plans (Bronze, Silver, Gold)
100$0.15$0.11
1,000$1.50$1.05
10,000$15.00$10.50

Totals include the $0.001 start fee per run, rounded to the cent. Apify's free plan includes $5 of credit a month, enough for about 3,300 domains.

Domains that neither resolve in DNS nor answer over HTTP are not charged; duplicate domains in the input are analysed once.

Billing events

EventFree planPaid plans (Bronze, Silver, Gold)
domain-result$1.50 per 1,000 domains$1.05 per 1,000 domains
apify-actor-start$0.001 per run$0.001 per run

Tech Stack API vs alternatives

This Actorbuiltwith/builtwith-official-technology-scraperscrapemint/website-tech-stack-detector
Price per 1,000 domains, free plan$1.50$2.00 per 1,000 results$10 per 1,000 sites with a detection
Price per 1,000 domains, paid plans$1.05$2.00 per 1,000 results$10 per 1,000 sites with a detection
Start fee per run$0.001NoneNone
Platform usage billed on topNoNoNo
Email provider (MX), SPF senders and DMARC policy✓not statednot stated
Reads the live site, not a stored database✓✗ (reads builtwith.com)✓
One column per category (CMS, e-commerce, analytics, ads...)✓not statednot stated
Dead or unreachable domains free✓not stated✓

Prices checked regularly on each Actor's Store page.

Benchmarks: how we compare

TestInputResult
Prefilled first runThe example input (2 domains)2 rows, $0.004 charged in total
Default-input runs on Apify2 domains, run twice2 of 2 analysed in 4.3 s and 3.9 s
Measured run on Apify49 domains47 analysed and 2 dead (not charged) in 68 s, ten at a time, peak memory 148 MB
Dead domains3 domains that do not exist0 rows, nothing charged beyond the start fee
Robots-blocked site3 domains, one disallowing bots in robots.txt3 of 3 analysed in 2.9 s; the blocked one still got its DNS fields
Homepage down or rate-limitedConnection failures and an HTTP 429 injected in local runsEvery domain still returned with its email and DNS fields, homepage_checked false and a note saying why
Duplicatesapify.com, https://apify.com/store and APIFY.COM1 row, 1 charge
Maximum charge5 domains with a charge cap for 22 rows, status says the maximum charge was reached
Large list1,100 domains from a public top-sites list1,087 rows; 13 did not resolve or answer and were not charged; charges equal rows
Fill rate on those 1,087 rowsShare of rows with each fieldAt least one technology 91.5%, MX records 75.3%, SPF 67.7%, homepage read 68.3%, DMARC policy 60.4%, email provider named 46.0%, analytics 31.3%, CMS 20.6%, ad pixel 12.7%, e-commerce platform 3.7%
Email providers in those rowsNamed providersGoogle Workspace 237, Microsoft 365 226, Zoho Mail 9, Yandex Mail 7

Run times are from single runs on Apify at 256 MB memory with no proxy. Robustness, duplicate, maximum-charge and large-list tests were local runs with Apify's pay-per-event emulation and fault injection. The 1,100-domain run used an earlier build that did not yet retry a homepage over http, so the homepage-read share is a lower bound. Small samples: treat them as indicative.

What data you get

Tech Stack API takes a list of domains and, for each one, reads the homepage once and the public DNS records to tell you what the company runs: CMS or site builder, e-commerce platform, analytics, tag manager and advertising pixels (Meta, Google Ads, LinkedIn, TikTok...), live chat and CRM or marketing-automation widgets, payments, cookie consent, JavaScript framework, backend, web server, CDN and hosting, the mailbox provider from MX records (Google Workspace, Microsoft 365...), email security gateway, email-sending services named in SPF, the DMARC policy and the DNS provider.

  • domain, final homepage url, http_status, title
  • technologies: every detection as {name, category}
  • cms, ecommerce, analytics, tag_manager, advertising, chat, crm_marketing, payments, consent, framework, backend, web_server, cdn_hosting: lists of names
  • email_provider (from MX, or SPF behind a gateway), email_security, email_sender, mx, spf, dmarc_policy
  • dns_provider and nameservers; homepage_checked and a note when the homepage was skipped
domaincmsecommerceanalyticsadvertisingchatemail_providerdns_provider
allbirds.com[]["Shopify"]["Microsoft Clarity"][][]Microsoft 365["MarkMonitor DNS"]
webflow.com["Webflow"][][][][]Google Workspace["Amazon Route 53"]
wordpress.org["WordPress"][][][][][]
hubspot.com["HubSpot CMS"][]["Cloudflare Web Analytics"][][]Google Workspace["Cloudflare DNS"]
mcgill.ca["Drupal"][]["Google Analytics", "Hotjar"]["Meta Pixel"][]Microsoft 365[]
davidstea.com[]["Shopify"][]["Google Ads"]["Gorgias"]Microsoft 365["Cloudflare DNS"]

One full domain record, exactly as a real run returned it (long text and lists shortened here). From a real run:

{
"domain": "allbirds.com",
"url": "https://www.allbirds.com/",
"http_status": 200,
"title": "Allbirds: Comfortable, Sustainable Shoes & Apparel",
"technologies": [
{
"name": "Cloudflare",
"category": "CDN / hosting"
},
{
"name": "Google Tag Manager",
"category": "Tag manager"
},
{
"name": "MarkMonitor DNS",
"category": "DNS provider (NS)"
},
"... [4 more]"
],
"cms": [],
"ecommerce": [
"Shopify"
],
"analytics": [
"Microsoft Clarity"
],
"advertising": [],
"tag_manager": [
"Google Tag Manager"
],
"chat": [],
"crm_marketing": [],
"payments": [],
"consent": [
"OneTrust"
],
"framework": [],
"backend": [],
"web_server": [],
"cdn_hosting": [
"Cloudflare"
],
"email_security": [],
"email_sender": [],
"dns_provider": [
"MarkMonitor DNS"
],
"email_provider": "Microsoft 365",
"mx": [
"allbirds-com.mail.protection.outlook.com"
],
"spf": "v=spf1 include:allbirds_com._es.easydmarc.com include:spf.protection.outlook.com ~all",
"dmarc_policy": "quarantine",
"nameservers": [
"ns1.markmonitor.com",
"ns2.markmonitor.com",
"ns3.markmonitor.com",
"... [2 more]"
],
"homepage_checked": true,
"note": null,
"source_url": "https://www.allbirds.com/",
"scraped_at": "2026-11-04T19:15:59Z"
}

Use cases

  • Sales teams finding Shopify, WooCommerce or HubSpot users to prospect
  • Agencies qualifying leads by CMS, ad pixels and analytics before a pitch
  • SaaS and email vendors segmenting accounts by Google Workspace or Microsoft 365
  • Market researchers measuring technology adoption across a list of sites

Use-case recipes

Find the Shopify stores in a prospect list

For app developers and agencies selling to Shopify merchants. Paste the store domains, then filter the ecommerce column for Shopify (or WooCommerce, BigCommerce, Magento). The matching domains go straight into Shopify Store Products' storeUrls input to pull their catalogues.

{
"domains": [
"allbirds.com",
"davidstea.com",
"webflow.com"
]
}

Segment accounts by email provider

For email, security and IT vendors. Run your account list and group rows by email_provider (Google Workspace, Microsoft 365, Zoho...). email_security shows a gateway such as Mimecast or Proofpoint, email_sender lists sending services named in SPF, and dmarc_policy shows none, quarantine or reject.

{
"domains": [
"allbirds.com",
"hubspot.com",
"mcgill.ca"
]
}

Check a prospect's marketing stack before a pitch

For agencies. Look at analytics, tag_manager, advertising and consent for each prospect. An empty advertising list means no ad pixel was found on the homepage, which is a different conversation from a site already running Meta, Google Ads and LinkedIn pixels. Remember that tags loaded later by a tag manager may not show.

{
"domains": [
"mcgill.ca",
"davidstea.com",
"allbirds.com"
]
}

From a local business list to their websites' technology

Run Google Maps Businesses for a category and city first; its website column is this Actor's domains input. Filter by cms to find businesses on Wix, Squarespace or WordPress, then run Company Contact Finder on those domains for the company's published contact details.

{
"domains": [
"webflow.com",
"wordpress.org"
]
}

Input

FieldTypeWhat it doesDefault
domains (Domains)arrayDomains or URLs to analyse, e.g. ['allbirds.com', 'https://www.apify.com'].["allbirds.com", "apify.com"]

All 1 fields, with examples: see the Input tab.

Switching from builtwith/builtwith-official-technology-scraper

Already running builtwith/builtwith-official-technology-scraper? Map its input fields to this Actor's like this:

builtwith/builtwith-official-technology-scraper inputThis Actor's inputNotes
startDomainsdomainsThe same list of domains. Ours also accepts full URLs and uses only the host; a domain repeated in the list is analysed once.
maxRequestsPerCrawlnot neededEach domain costs one homepage request plus a few DNS lookups. To cap spend, set the run's maximum charge in Apify; the run stops there and says so.
  • The source changes: theirs reads builtwith.com, BuiltWith's stored database; ours reads each homepage live and the domain's DNS records. There is no history, first-seen date or spend estimate.
  • Each row is one domain, with one list column per category (cms, ecommerce, analytics, advertising, chat, crm_marketing and more) plus the full technologies list of name and category. Names come from our own rules, so filters written for BuiltWith's names may need re-mapping.
  • Email fields are new: email_provider, email_security, email_sender, mx, spf and dmarc_policy.
  • Billing is per domain analysed plus a small start fee per run. Domains that neither resolve in DNS nor answer over HTTP are not charged.

Use with AI agents (Apify MCP server, Claude, ChatGPT, n8n AI agent)

Tech Stack API is a ready-made tool for AI agents. Through the Apify MCP server an agent reads this Actor's input schema, fills in the input from your request, starts the run and reads the domains back. You pay the same per-result price as a run started by hand, from your own Apify account.

Example prompts

  • "Check which of these 30 online stores run on Shopify and which use WooCommerce, and give me a table with each domain and its platform"
  • "Find out whether stripe.com, github.com and patagonia.com use Google Workspace or Microsoft 365 for email, and show each one's DMARC policy"
  • "List the analytics tools and ad pixels on each of these competitor websites and tell me which ones run the Meta Pixel"

Claude (claude.ai and Claude Desktop)

Open Settings > Connectors, choose Add custom connector, paste https://mcp.apify.com/?tools=aurelix/tech-stack-detector and sign in to Apify when asked. Then ask Claude one of the prompts above.

Claude Code, Cursor, VS Code and other MCP clients

$claude mcp add --transport http apify "https://mcp.apify.com/?tools=aurelix/tech-stack-detector"

Clients configured with JSON take the same URL:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=aurelix/tech-stack-detector"
}
}
}

A client without Apify sign-in sends the header Authorization: Bearer <YOUR_APIFY_TOKEN>; to run the server locally instead, use npx -y @apify/actors-mcp-server --actors aurelix/tech-stack-detector with APIFY_TOKEN set.

ChatGPT

Where your ChatGPT plan offers custom connectors (developer mode), add https://mcp.apify.com/?tools=aurelix/tech-stack-detector as a connector, sign in to Apify, and ask for the data in plain words.

n8n AI agent

Give an AI Agent node an MCP Client Tool with the endpoint https://mcp.apify.com/?tools=aurelix/tech-stack-detector and a Bearer credential holding your Apify token. The agent can then call Tech Stack API whenever a workflow step needs domains; for a fixed, non-agent workflow use Apify's n8n node with Run Actor instead.

Use it from AI agents (MCP), the API or no-code

Copy this to your AI assistant

Use the Apify Actor aurelix/tech-stack-detector (Tech Stack API) through Apify's MCP server or API. Main input: domains (Domains). Example input: {"domains": ["allbirds.com", "apify.com", "hubspot.com"]}. Each result is one domain with fields such as domain, url, http_status, title, technologies, cms, ecommerce, analytics. It costs $1.50 per 1,000 domains on Apify's free plan plus a $0.001 start fee per run, and needs no login.

MCP server URL for this Actor: https://mcp.apify.com/?tools=aurelix/tech-stack-detector (setup for each client in the section above).

API

Start a run and read the dataset with Apify's REST API or the Python and JavaScript clients:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("aurelix/tech-stack-detector").call(run_input={'domains': ['allbirds.com', 'apify.com', 'hubspot.com']})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

No-code: schedule it in 3 clicks

Send the results to Google Sheets, Zapier, Make, n8n, Slack or any webhook URL.

  1. Fill in the input, then click Save as a new task.
  2. In the task, click Schedule and pick daily or weekly (Apify Schedules).
  3. Open the task's Integrations tab to send every run's results to Slack, Google Sheets, email or any webhook.

Prefer n8n or Make? Ask in the Issues tab and we will share a ready-made workflow for it.

FAQ

Can I detect a website's tech stack without login?

Yes. It never logs in, so you need no website account, password or cookies; only a free Apify account to run it.

Is there a tech stack detection API?

You can use this Actor as one. Start it with Apify's REST API or the Python and JavaScript clients and read the results as JSON (see the code above), or call it from an AI agent through MCP.

How much does it cost to detect a website's tech stack?

About $1.50 for 1,000 domains on Apify's free plan and $1.05 on paid plans, start fee included. The free $5 monthly credit covers about 3,300 domains.

Can I export tech stack data to Excel or Google Sheets?

Yes. Download the results as Excel, CSV, JSON, XML or HTML from the run's Storage tab, or send them to Google Sheets with Apify's Google Sheets integration or the API.

It reads only public data any logged-out visitor can see: the homepage of each domain you enter and its public DNS records (analyse only sites you have a legitimate reason to look at). It goes at a polite pace, respects robots.txt, never logs in and never solves CAPTCHAs. It returns the technologies a site uses and its mail and DNS providers; no personal data is extracted. To have a record removed, open an issue on this Actor's Issues tab; if a site owner formally asks us to stop, this Actor will stop. You are responsible for using the data lawfully, incl. anti-spam and privacy laws; this is not legal advice.

How does detection work?

By matching our own rules against the homepage HTML (script URLs, page markers, the meta generator tag), the HTTP response headers and cookie names, and against the domain's MX, SPF (TXT) and NS records. A technology is listed when at least one of its rules matches.

Do you use Wappalyzer or BuiltWith data?

No. The fingerprint rules are written by us for this Actor. Wappalyzer's data is no longer open and its community forks are GPL-licensed, so none of it is copied.

Why is a technology missing?

Only the homepage is read, without running JavaScript: tools loaded later by a tag manager, only on inner pages or only after cookie consent may not appear. Tag managers themselves are detected.

How is the email provider found?

From the MX records (Google Workspace, Microsoft 365, Zoho, Proton...). When the MX points to a security gateway such as Mimecast or Proofpoint, the SPF record is used to name the provider behind it. SPF also lists email-sending services.

Does it respect robots.txt?

Always. The homepage is fetched only where robots.txt allows it, checked on every redirect hop; a robots.txt that answers a server error counts as disallowed. DNS records are public and are still read.

How are duplicates and www versions handled?

Only the host is used, lowercased, so apify.com, https://apify.com/store and APIFY.COM are one domain, analysed and charged once. www.example.com and example.com are different hosts and give two rows; for both, the MX, SPF, DMARC and NS records are read from the name without www.

Am I charged when a homepage is blocked or down?

Yes, one charge, because the row still carries the DNS fields: email provider, MX, SPF, DMARC and DNS provider. Only domains that neither resolve in DNS nor answer over HTTP, and domains with no answer within 45 s, are free. The status message counts both groups.

What do homepage_checked and note mean?

homepage_checked is true when the homepage HTML was read. When it is false, note says why, for example robots.txt disallows the page, the homepage is unreachable, or it answered HTTP 403 or 429. The technology lists then hold only what DNS shows.

Why is email_provider empty when mx is filled?

The MX hosts did not match a provider in our rules (for example a self-hosted or less common mail service), and SPF named none either. The raw mx and spf values are always returned, so you can classify them yourself.

What does dmarc_policy mean?

It is the p= value of the domain's DMARC record: none (monitor only), quarantine or reject. It is null when the domain publishes no DMARC record.

How many domains can one run take, and how fast is it?

Ten domains are analysed at a time; in our test run 49 domains took 68 s. The default run timeout is 1 hour, so for lists above about 2,500 domains raise it. Near the timeout the Actor starts no new domains and keeps the rows it has, and the status message says it stopped early.

Does it use proxies or a browser?

No. It sends plain HTTPS requests, falling back to http when https fails, with an honest bot user agent, no proxy and no browser, so JavaScript is not run. Sites that block bots still get their DNS-based fields.

Can I re-check the same list on a schedule?

Yes, with an Apify schedule or the API. Each run reads the sites live and returns a full row for every domain, so every domain is charged again. There is no change-only mode; compare the technologies column between runs to spot changes.

Limits (stated honestly)

  • Homepage only, no JavaScript rendering: technologies loaded only by JavaScript, only on inner pages or only after cookie consent can be missed.
  • No history or first-seen dates and no technology spend estimates (BuiltWith-style history is not available).
  • SPF is read one level deep: includes are matched by name, redirects and nested includes are not followed.
  • Sites that block bots or answer with a challenge page get DNS fields only (homepage_checked is false and the note says why).
  • Detection is rule-based; a rare false match or miss is possible, and versions are not reported.
  • At most ten domains are analysed at a time, about 40 to 60 domains a minute; a homepage over 2 MB is read up to 2 MB, and a domain that takes over 45 s is skipped without charge.

Works great with

Public Aurelix Actors, grouped by the data they collect. All are pay-per-result and need no login.

Leads and company data

  • Funded Companies Hiring: Companies that just raised money (SEC Form D), with their open roles and business contacts, as a new-only monitor.
  • Google Maps Phone Scraper: Local business lists from Google Maps: phones, websites, ratings, hours, coordinates; optional website emails and socials.
  • Recently Funded Companies API: US companies that just filed an SEC Form D: amount raised, industry, state, executives, confirmed website.

Jobs and hiring data

  • Greenhouse Jobs Scraper: Live jobs from a company's Greenhouse, Lever, Ashby or SmartRecruiters board, with salary and Canadian province tags.
  • LinkedIn Jobs Country Filter Scraper: Public LinkedIn job postings by keyword and country: title, company, location, seniority, job type, salary text, description.
  • Multi Job Board Scraper: LinkedIn, about 50 company career sites, Remote OK and We Work Remotely jobs in one deduplicated list.

E-commerce and product data

Ad intelligence

  • Competitor Watch: One report per competitor with only what is new: Meta and TikTok ads, page changes, Shopify products and prices, jobs.
  • Facebook Ad Library Search & API: Facebook and Instagram business ads from the Meta Ad Library: copy, creatives, landing pages, dates, optional EU reach.

Canada and government data

  • Canada Building Permits: Building permits and development applications from 7 Canadian cities: address, type, status, dates, value, contractor company.

AI, content and SEO

Recent changes

  • 0.1: Retitled as a BuiltWith and Wappalyzer alternative; comparison with the two most-used tech-stack Actors.

The full history is on the Changelog tab.

Tested daily

An automated health check runs this Actor every day on a fixed input and checks that at least 3 domains come back with domain, technologies, mx, source_url, scraped_at filled in; a failed check alerts the maintainer straight away.

Your feedback

Missing a field, found a bug or need another filter? Open an issue on the Issues tab; we aim to answer within a day. If this Actor saved you time, a short review helps other people find it.