Tech Stack Detector & Technology Lookup + WHOIS — DomainDNA avatar

Tech Stack Detector & Technology Lookup + WHOIS — DomainDNA

Pricing

$4.00 / 1,000 domain analyzeds

Go to Apify Store
Tech Stack Detector & Technology Lookup + WHOIS — DomainDNA

Tech Stack Detector & Technology Lookup + WHOIS — DomainDNA

Know what any website runs on in seconds. Tech stack detector (a Wappalyzer and BuiltWith alternative) plus WHOIS/RDAP domain age, DNS, MX provider, SPF/DMARC, TLS expiry and security headers in one JSON record. Monitor mode flags changes. $0.004 per domain.

Pricing

$4.00 / 1,000 domain analyzeds

Rating

0.0

(0)

Developer

CyberMax

CyberMax

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

DomainDNA — website tech stack detector, WHOIS & domain age API

Know what any website runs on, in seconds

Give it domains; get the tech stack with evidence, email provider, SPF/DMARC, domain age, TLS expiry and security headers in one record each, for $0.004 per domain.

▶ Try it now with a prefilled input · $0.004 per domain, domains that don't resolve are free (1,000 domains = $4) · Apify's free plan includes $5 of credit a month, enough for up to about 1,250 domains

Built for: Sales teams qualifying leads by stack · Agencies pitching migrations · Security and email-deliverability checks · AI agents asking "what does acme.com use?"

Real output (real run on Apify, 23 Sep 2026):

DomainTech found (first 3)Email onDMARCDomain age
shopify.comShopify, Tailwind CSS, CloudflareGoogle Workspacereject21 years
hubspot.comHubSpot CMS, Cloudflare, Google Tag ManagerGoogle Workspacereject21 years
docker.comWordPress, Fastly, NginxGoogle Workspacequarantine31 years
github.comContentful, GitHub PagesMicrosoft 365quarantine18 years
mailchimp.comAkamai, FullStory, OneTrustCisco Secure Emailreject25 years

Why DomainDNA

  • One call instead of five lookups. Tech stack, MX/SPF/DMARC, RDAP registration (the successor to WHOIS) and domain age, TLS certificate and security headers come back together, plus a one-line summary an LLM can quote.
  • Evidence you can check. Every detected technology shows the header, cookie or script that triggered it, so you're not relying on a guess.
  • Fast and cheap at scale. There's no browser and no proxy, so most domains finish in about 1 second. Domains that don't resolve are not charged.

Example summary (real, 2026-09-23):

stripe.com: email on Google Workspace, DMARC p=reject, domain 31y old, TLS expires in 50d.

What you get

Give it a list of domains. For each one you get one compact JSON record with:

  • Tech stack (100+ fingerprints): CMS and site builders (WordPress, Webflow, Wix, Framer…), e-commerce (Shopify, WooCommerce, Magento…), JS frameworks (Next.js, Nuxt, Astro…), CDN and hosting (Cloudflare, Vercel, CloudFront…), analytics, ad pixels, marketing automation, live chat, payments (Stripe, PayPal, Paddle…), consent tools and monitoring. Every detection includes the evidence that triggered it.
  • Email setup and security: MX provider (Google Workspace, Microsoft 365, Proofpoint…), SPF record and all qualifier, DMARC policy (none / quarantine / reject), pct and reporting.
  • Domain registration (RDAP / WHOIS): registrar, creation and expiry dates, domain age in days.
  • TLS certificate: issuer, expiry and days left.
  • Security headers (HSTS, CSP, X-Frame-Options…) with a simple score.
  • Well-known files: robots.txt, sitemap.xml, llms.txt, security.txt.
  • DNS basics (A, AAAA, NS), third-party verification tokens (which SaaS tools the domain has verified with), page title, description and language.
  • A one-line summary an LLM can quote directly.

Who it's for

  • AI agents and MCP clients answering "what does acme.com run on?", "is this domain legit / how old is it?" or "can we email them safely?"
  • Sales and lead-gen: qualify leads by stack ("Shopify stores using Klaviyo", "sites on WordPress without Cloudflare").
  • Security and deliverability checks: find domains with no DMARC or an expiring certificate.
  • Market research: stack share across a list of competitors.

How to use

  1. Paste domains (bare domains or full URLs; paths are ignored) and run.
  2. Read one record per domain in the dataset, or download it as JSON, CSV or Excel.

Input (copy-paste):

{ "domains": ["apify.com", "https://www.shopify.com/pricing", "wordpress.org"] }

First try: the prefilled input (apify.com, stripe.com) runs in about 10 s including start-up and costs about $0.008.

Optional switches (all on by default): includeTech, includeDns, includeTls, includeRdap, includeFiles. timeoutSecs (default 15) and maxConcurrency (default 10) control speed. Turn off what you don't need for even faster runs.

Ready-made inputs (first try in one click)

Paste one into the JSON tab of the input form (or send it to the API) and press Start. Each is sized so the first run is quick and cheap; you pay only for results (Apify's compute is included in the price).

PresetWhat you getCost
Tech stack of 2 sitesCMS, analytics, CDN, payments, each with evidence$0.008
Email security check (SPF/DMARC + mail provider)MX provider, SPF/DMARC policy, TLS expiry, domain age$0.008
Domain age / WHOIS onlyregistration date, age in days, registrar (RDAP)$0.008

Tech stack of 2 sites

{"domains": ["shopify.com", "notion.so"], "includeDns": false, "includeTls": false, "includeRdap": false, "includeFiles": false}

Email security check (SPF/DMARC + mail provider)

{"domains": ["stripe.com", "linear.app"], "includeTech": false, "includeFiles": false}

Domain age / WHOIS only

{"domains": ["openai.com", "anthropic.com"], "includeTech": false, "includeDns": false, "includeTls": false, "includeFiles": false}

Same thing from a script (returns the results directly):

curl -s -X POST "https://api.apify.com/v2/acts/cybermax~domain-intel/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'content-type: application/json' -d '{"domains": ["shopify.com", "notion.so"], "includeDns": false, "includeTls": false, "includeRdap": false, "includeFiles": false}'

Output (one item per domain)

A real record from a run on 2026-09-23, with long lists trimmed:

{
"domain": "stripe.com",
"exists": true,
"summary": "stripe.com: email on Google Workspace, DMARC p=reject, domain 31y old, TLS expires in 50d.",
"reachable": true, "statusCode": 200, "blocked": false,
"url": "https://stripe.com/", "finalUrl": "https://stripe.com/",
"title": "Stripe | Financial Infrastructure to Grow Your Revenue",
"language": "en-US",
"technologies": [
{ "name": "Next.js", "category": "JS framework", "evidence": "html: /_next/static/" },
{ "name": "Nginx", "category": "Web server", "evidence": "header server" }
],
"email": {
"mxProvider": "Google Workspace",
"mx": ["aspmx.l.google.com", "alt1.aspmx.l.google.com"],
"spf": { "present": true, "allQualifier": "softfail", "includes": ["spf1.stripe.com", "greenhouse-outbound-mail.stripe.com", "_spf.qualtrics.com"], "multipleRecords": false },
"dmarc": { "present": true, "policy": "reject", "subdomainPolicy": null, "pct": 100, "rua": true }
},
"registration": { "registrar": "SafeNames Ltd.", "createdAt": "1995-09-12T04:00:00Z", "expiresAt": "2027-09-11T04:00:00Z", "ageDays": 11334 },
"tls": { "issuer": "DigiCert Inc", "validTo": "2026-11-12T23:59:59.000Z", "daysLeft": 50, "trusted": true, "protocol": "TLSv1.3" },
"dns": { "a": ["198.137.150.111", "198.202.176.111"], "aaaa": [], "ns": ["ns-1087.awsdns-07.org", "ns-423.awsdns-52.com"] },
"securityHeaders": { "strictTransportSecurity": true, "contentSecurityPolicy": true, "xFrameOptions": true,
"xContentTypeOptions": true, "referrerPolicy": true, "permissionsPolicy": false, "score": "5/6" },
"verifications": ["apple", "atlassian", "canva", "docker", "facebook", "google", "linear", "openai", "postman", "stripe"],
"files": { "robotsTxt": true, "sitemapXml": false, "llmsTxt": true, "securityTxt": true },
"errors": [],
"analyzedAt": "2026-09-23T16:05:15.054Z"
}

blocked: true means the homepage answered with a bot wall (403/429 or a challenge page), so the tech list may be partial. The DNS, email, TLS and registration data are still complete.

Monitor mode: only what changed

Set "monitor": true to watch a list over time. Each run compares every domain with the previous run of the same watchlist and returns only domains that are new or changed; unchanged domains are skipped and not charged. A change is any of:

  • a technology added or removed (e.g. moved from WooCommerce to Shopify, added Intercom, dropped Cloudflare);
  • a new MX provider (e.g. Google Workspace → Microsoft 365);
  • a different SPF all qualifier or DMARC policy (none → reject);
  • the TLS certificate entering the expiry window (tlsExpiryWarnDays, default 14) or being renewed out of it;
  • security headers added or removed;
  • the domain no longer resolving.

Check timestamps, TLS days-left counting down, URLs and page text are ignored. If a homepage is behind a bot wall or times out on one run, its tech list is not compared (no false "everything removed" alerts). Use monitorKey to keep several watchlists apart (e.g. "leads-eu"); state is kept in your account's named key-value store domain-intel-monitor. The first run returns everything as new. Counts go to the log and the MONITOR_SUMMARY record.

{ "domains": ["stripe.com", "acme.com"], "monitor": true, "monitorKey": "competitors" }

A changed row is the normal record plus (shape only; values illustrative):

{ "domain": "acme.com", "change": "changed", "changedFields": ["technologies", "dmarcPolicy"],
"changes": { "technologies": { "added": ["Shopify"], "removed": ["WooCommerce"] },
"dmarcPolicy": { "from": "none", "to": "reject" } } }

Why it pays for itself

  • By hand: about 3 minutes per domain for a tech-lookup extension, a WHOIS search, an MX/DMARC lookup and a certificate check (estimate), so 500 domains ≈ 25 hours; here 500 domains cost $2.
  • Most-used Store tech-stack rival nexgendata/wappalyzer-replacement (1,466 users) charges $0.10 per domain (Apify Store pricing, checked 25 Sep 2026), so 1,000 domains cost $100 there and $4 here, with email security, domain age and TLS in the same record.
  • Bulk WHOIS/DNS rival santamaria-automations/domain-whois-dns (86 users) charges $0.001 per run start + $0.003 per result (Apify Store pricing, checked 25 Sep 2026); DomainDNA costs $0.001 more per domain and adds the tech stack.
  • Monitor mode returns and charges only domains whose stack, mail provider, DMARC, certificate or headers changed, so a daily watch on a lead list is cheap.

▶ Run it on your own list: the example input is already filled in, so the first run takes one click.

Pricing

Pay per result: $0.004 per domain (domain-analyzed event). No subscription, no start fee. Invalid inputs and domains that don't resolve (exists: false) are never charged. 1,000 domains cost at most $4. Set a maximum charge per run and the Actor stops cleanly when it's reached.

Run it on a schedule

Console → Schedules → Create new → cron 0 8 * * * (daily 8:00) → Add Actor → pick DomainDNA (or a saved task) with your input and "monitor": true. Or via the API:

POST https://api.apify.com/v2/schedules?token=YOUR_TOKEN
{"name":"domaindna-daily","cronExpression":"0 8 * * *","timezone":"America/New_York","isEnabled":true,
"actions":[{"type":"RUN_ACTOR","actorId":"cybermax/domain-intel",
"runInput":{"body":"{\"domains\":[\"stripe.com\",\"acme.com\"],\"monitor\":true,\"monitorKey\":\"daily\"}","contentType":"application/json"}}]}

With monitor mode a daily run is cheap: you only pay for domains that changed. To get alerted, open the Actor's Integrations tab and add an email, Slack or webhook notification on "Run succeeded".

Integrations

Make: Apify app → "Run an Actor" (Actor cybermax/domain-intel, input {"domains":["stripe.com"]}, run synchronously) → "Get dataset items".

Zapier: Apify app → "Run Actor" action with the input JSON, or the "Finished Actor Run" trigger to push new rows into your CRM.

n8n: Apify node ("Run Actor and get dataset"), or an HTTP Request node:

POST https://api.apify.com/v2/acts/cybermax~domain-intel/run-sync-get-dataset-items?token=YOUR_TOKEN
{"domains": ["stripe.com", "acme.com"]}

Google Sheets: Apify's Google Sheets integration, or pull the latest run into a cell:

=IMPORTDATA("https://api.apify.com/v2/acts/cybermax~domain-intel/runs/last/dataset/items?format=csv&token=YOUR_TOKEN")

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("cybermax/domain-intel").call(run_input={"domains": ["stripe.com", "acme.com"]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["summary"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('cybermax/domain-intel').call({ domains: ['stripe.com', 'acme.com'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

AI agents (MCP): DomainDNA is a tool on Apify's hosted MCP server, https://mcp.apify.com/?tools=cybermax/domain-intel (header Authorization: Bearer <your Apify token>). Claude Desktop / Cursor config:

{ "mcpServers": { "domaindna": { "url": "https://mcp.apify.com/?tools=cybermax/domain-intel",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" } } } }

Typical prompts: "What tech stack does acme.com use?", "How old is this domain and does it have DMARC?", "Which of these 50 leads run Shopify?". Agents can quote the summary field directly.

When NOT to use it

  • Finding every site that uses a technology (reverse lookups like "all Shopify stores"). DomainDNA analyses domains you already have.
  • Technologies that only load after login or user interaction. It reads the homepage HTML, headers, cookies and script URLs, with no browser.
  • Historical tech stacks or WHOIS history. It's a snapshot of today (monitor mode tracks changes from the day you start watching).
  • Registrant contact details. RDAP data for most domains is redacted, and personal data is not collected.

FAQ

Why not a cheaper tech-stack Actor? automation-lab/tech-stack-detector charges $0.035 per run + $0.0023 per URL on the free plan (checked 25 Sep 2026), which is cheaper for large tech-only lists. DomainDNA costs a bit more because it also returns email provider, SPF/DMARC, domain age, TLS expiry and security headers, with evidence for every technology.

Why not BuiltWith or Wappalyzer? They are subscription products with reverse lookups (all sites using X), which DomainDNA doesn't do. If you already have your domain list, you pay here per domain with no plan.

Why not check each site by hand? A browser extension shows one site at a time and not its email security or age. For a lead list or a daily watch, one run replaces a day of lookups.

Can an AI agent use it (MCP)? Yes. Add https://mcp.apify.com/?tools=cybermax/domain-intel as an MCP server in Claude, Cursor, VS Code or any MCP client; the agent sees the input schema and calls DomainDNA directly.

Can I call it from Python, JavaScript or plain HTTP? Yes. POST your input JSON to https://api.apify.com/v2/acts/cybermax~domain-intel/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN and the results come back in the response, or use the apify-client package for Python or JavaScript. Recipes for Make, Zapier, n8n and Google Sheets are in Integrations.

Is it legal to use? DomainDNA reads public DNS, RDAP/WHOIS registration records and each site's public homepage. It returns company-level technical facts; registrant personal details are normally redacted by the registries. This is general information, not legal advice.

Is this a BuiltWith or Wappalyzer alternative? For per-domain lookups, yes: you get the detected stack with evidence, plus email security, domain age and TLS in the same record, paid per domain instead of per month.

Is RDAP the same as WHOIS? RDAP is the registries' official JSON replacement for WHOIS. You get registrar, creation, update and expiry dates and domain age.

How fast is it? Most domains finish in about 1 second; maxConcurrency (default 10) runs domains in parallel.

What if a site blocks bots? You still get DNS, email, TLS and registration data, and blocked: true warns that the tech list may be partial.

Do I pay for domains that don't exist? No. Domains that don't resolve are returned with exists: false and aren't charged.

Notes

  • Detection uses our own fingerprint set, matched against the homepage's HTML, headers, cookies and script URLs. It won't see technologies that only load after user interaction.
  • DNS is resolved over HTTPS (Cloudflare, falling back to Google). Registration data comes from the official RDAP registries (looked up via the IANA bootstrap file, with retries on rate limits).
  • Only public information is collected; no login, no personal data.

Free datasets from the same pipeline

Open data on Hugging Face, built by the same code as this Actor. Download it free; run the Actor when you need your own list, fresh data or alerts.

Start now

▶ Try DomainDNA with a prefilled input · $0.004 per domain, domains that don't resolve are free (1,000 domains = $4). Questions or a missing field? Open an issue on the Store page and it gets answered the same day.

Also from CyberMax

All tools: Insidewell · Swellmeter · Gripeline · Keyfern · HireHeat Jobs · Printwren

Changelog

  • 2026-09-23: Monitor mode (monitor, monitorKey, tlsExpiryWarnDays: only tech, email-security, TLS and header changes are returned and charged), schedule & integration recipes.

Found DomainDNA useful? A quick rating on its Store page helps others find it.