At a glance
What the Tech Stack API does
- Input
- A 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)
- Detects
- 200+ technologies in 17 categories, from our own fingerprint rules
- Mailbox provider (MX), security gateway, SPF senders, DMARC policy
- Output
- 30 fields per domain; JSON, CSV, Excel, API
- Automate
- Schedules, webhooks, Zapier, Make, n8n, Google Sheets, MCP for AI agents
Who it is for
- 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
Output
What you get
- 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
Example
Input and output
Input
{
"domains": [
"allbirds.com",
"apify.com",
"hubspot.com"
]
}One output record
{
"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"
}From a real run of this tool; long text and lists shortened here.
How to use it
Three steps
- Paste your domains or website URLs, one per line, e.g. allbirds.com.
- Click Start; each domain takes a few seconds, ten at a time (about 40 to 60 domains a minute).
- 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.
API
Call it from Python
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)pip install apify-client. The same input works from the Apify console, a schedule, Make, n8n, Zapier or an AI agent through the Apify MCP server.
Pricing
Pay per result
| Per 1,000 domains, free plan | $1.50 |
| Per 1,000 domains, paid plans | $1.05 |
| Start fee per run | $0.001 |
Live prices from the Apify Store; no subscription and no platform usage billed on top. See the Store page.
Honest limits
What it does not do
- 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.
- 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.
FAQ
Questions buyers ask
How much does the Tech Stack API cost?
$1.50 per 1,000 domains ($1.05 on paid Apify plans), billed through your Apify account; you pay only for results. Apify's free plan includes $5 of credit a month, enough for about 3,333 domains.
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.
Where do the fingerprint rules come from?
The fingerprint rules are written by us for this Actor; no third-party technology database 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.
Can I use it from an AI assistant?
Yes. Give 'domains'. It works through Apify's MCP server and API.
Is this legal?
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 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.
How do I export domains to Google Sheets?
Download the run's results as CSV or Excel and open them in Google Sheets, or add Apify's Google Sheets integration to the run or a schedule so every run's results land in a sheet.
Guides
Tutorials using this tool
Related
Related tools
Google Maps Phone Scraper
Local business lists from Google Maps: phones, websites, ratings, hours, coordinates; optional website emails and socials.
Recently Funded Companies
US companies that just filed an SEC Form D: amount raised, industry, state, executives, confirmed website.
Newly Funded Companies Hiring
Companies that just raised money (SEC Form D), with their open roles and business contacts, as a new-only monitor.
Try the Tech Stack API
Open it on the Apify Store, paste the example input above and click Start. Results download as CSV, Excel or JSON.