Bulk domain WHOIS, DNS, SSL, and tech stack in one call
Pricing
from $0.50 / 1,000 domain processeds
Bulk domain WHOIS, DNS, SSL, and tech stack in one call
Point it at a list of domains. Get registrar/age, DNS, a real TLS handshake, and detectable tech — pay only for modules that return. No browser, no proxy bill.
Pricing
from $0.50 / 1,000 domain processeds
Rating
0.0
(0)
Developer
Donovan
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
13 days ago
Last modified
Categories
Share
Domain Intelligence Suite
A domain intelligence API: WHOIS lookup, DNS records, SSL certificate checks, subdomain finder, tech stack detector, Wayback Machine history, domain age checker, HTTP headers, and social links — all nine modules in one call, priced per module used.
Built for sales teams enriching leads, security researchers, competitive intel, domain investors, and brand-protection teams.
Free-plan sample limit
Free Apify plans receive up to 5 domains per run. Paid Apify plans receive full bulk output. Free-plan runs never unlock the full list.
What sets this apart
There are several domain-enrichment actors on the store — this isn't an uncontested category. Most cover WHOIS + DNS, a couple add SSL or tech-stack detection. None combine all nine modules in one call with per-module pricing, so you pay only for what you actually use:
- Nine modules, one request per domain. WHOIS, DNS, SSL, tech stack, HTTP headers, subdomains, Wayback history, email deliverability, and social links — pick any subset per run.
- Pure HTTP/DNS, no headless browser. Every module is a protocol-level call (RDAP, DNS-over-HTTPS, a raw TLS handshake, certificate-transparency search) — no Playwright, no proxy costs, low compute, high margin, and nothing that breaks when a site changes its frontend markup.
- Modules fail independently. If one module can't complete for a domain (a flaky upstream service, a blocked port), that domain's report still ships with every other module's data intact and the failure listed in
modules_failed— one bad module never blanks the whole record. - Honest about what's actually free. Some competing tools and research docs describe a "favicon → company name" enrichment step; that's a commercial product (Clearbit and similar), not something derivable for free. This actor doesn't claim it. The social-links module is scoped to what it actually does: reading known link patterns off the domain's own homepage.
Modules
| Module | What it returns | Notes |
|---|---|---|
whois | WHOIS/RDAP lookup: registrar, creation/expiry dates, domain age, nameservers, status codes | Via RDAP, the modern JSON/HTTP standard — not raw WHOIS-over-port-43. Also functions as a domain age checker via age_days |
dns | A, AAAA, MX, TXT, NS, CNAME records | Via DNS-over-HTTPS |
ssl | Certificate issuer, validity window, SAN entries (reveals related domains), wildcard flag | Real TLS handshake, not a third-party lookup API |
tech_stack | Tech stack detector: CDN, analytics tools, and frameworks detected | Pattern-matched from the page already fetched for http_headers/social. Covers common, high-confidence signals — not a claim of full Wappalyzer-level fingerprint coverage |
http_headers | Status code, server header, HSTS presence, response time | |
email_check | Whether MX records exist, and whether the top mail host accepts an SMTP connection | Never sends mail. Confirmed on Apify's own platform: outbound port 25 is blocked, so smtp_connectable will always be null in production — this module currently only delivers mx_found there. Kept in because MX presence is still real signal, and the code fails soft rather than misreporting false. |
subdomains | Subdomain finder: subdomains found via certificate-transparency (crt.sh) logs | Best-effort. The underlying free service (crt.sh) is community-run and occasionally overloaded; a degraded run returns source_degraded: true with an empty list rather than failing the domain |
wayback | Wayback Machine history: earliest known snapshot date | Via the Internet Archive's CDX API |
social | Twitter/X, LinkedIn, and GitHub links found on the homepage | Only what's actually linked from the page — not a brand-matching guess |
Input
{"domains": ["stripe.com", "ramp.com"],"modules": ["whois", "dns", "ssl", "tech_stack", "http_headers"]}
| Field | Type | Default | What it does |
|---|---|---|---|
domains | string[] | required | Bare hostnames or full URLs (path ignored). Free plans receive up to 5 domains; paid plans receive full bulk output. Duplicates removed automatically. |
modules | string[] | ["whois","dns","ssl","tech_stack","http_headers"] | Which modules to run. Omit a module to skip its cost entirely. |
Output
One record per domain in the default dataset:
{"domain": "stripe.com","resolved_at": "2026-08-03T20:00:00.000Z","whois": { "registrar": "SafeNames Ltd.", "created_at": "1995-09-12T04:00:00.000Z", "age_days": 11283, "expires_at": "2027-09-11T04:00:00.000Z", "nameservers": ["ns-1087.awsdns-07.org"], "status": ["clientTransferProhibited"] },"dns": { "a": ["198.202.176.231"], "aaaa": [], "mx": [{ "priority": 10, "host": "aspmx.l.google.com" }], "txt": ["v=spf1 include:_spf.google.com ~all"], "ns": ["ns-1087.awsdns-07.org"], "cname": [] },"ssl": { "issuer": "DigiCert Inc DigiCert Global G3 TLS ECC SHA384 2020 CA1", "valid_from": "2026-07-28T00:00:00.000Z", "valid_to": "2026-11-12T23:59:59.000Z", "san": ["stripe.com", "www.stripe.com"], "wildcard": false },"tech_stack": { "cdn": [], "analytics": ["Google Analytics"], "frameworks": ["React"], "server": null },"http_headers": { "status": 200, "server": null, "x_powered_by": null, "strict_transport_security": true, "response_time_ms": 142 },"modules_failed": []}
A run-level summary (domains processed, module charges issued, per-domain failures, whether the run stopped early on a spending cap) is written to the key-value store under RUN_SUMMARY.
Pricing
Pay-per-event: $0.00005 actor start, $0.0005 per domain attempted, $0.001 per module that successfully completes. A 5-module default run costs about $0.0056/domain; the full 9-module set costs about $0.0096/domain. You're only charged for modules that actually returned data — a module that fails for a given domain isn't billed.
Status
Built, pushed, monetized, and published to the Apify Store.