Bulk WHOIS and DNS Lookup for a List of Domains
You have a list of domains from a CRM export, a brand-protection watchlist or a client network, and you need to know who registered them, when they expire, where the mail goes and whether email spoofing protection is set up. The NanoScrape Domain WHOIS & DNS Lookup on Apify returns that for each domain in one flat row, without API keys. We ran it on 50 European SaaS domains: it took about a minute and cost $0.151.
In this tutorial
What you get
The Domain WHOIS & DNS Lookup takes a list of domains and returns one record per domain. It queries the registry's RDAP service and WHOIS together and merges them, then asks a DNS resolver (Google Public DNS by default) for the records.
- Registration data: registrar, creation, update and expiry dates, plus
age_daysanddays_until_expiryalready calculated, name servers, status codes and the DNSSEC flag. - DNS records: A, AAAA, MX, TXT, NS, CNAME and SOA.
- Email setup:
email_providerdetected from the MX records, SPF and DMARC present or not (with the raw record and the DMARC policy), and a DKIM check on common selector names. - Clean input: URLs,
www.prefixes and duplicates are normalised. A subdomain is looked up in DNS as given, and WHOIS uses its registrable domain.
Paste your domains
- Open the actor page on Apify and click Try for free. A free account includes $5 of credit every month.
- In the Domains field, enter one domain per line.
https://www.example.com/pricingbecomesexample.com.
{
"domains": [
"spotify.com",
"sap.com",
"mollie.com"
]
}Choose what to fetch
includeWhois(defaulttrue): registrar, dates, name servers.includeDNS(defaulttrue): DNS records, SPF, DMARC, DKIM and the email provider.dnsRecordTypes: the record types to query. The default asks for all seven.useDNSServer: the resolver, default8.8.8.8:53. Try1.1.1.1:53or9.9.9.9:53if one is rate-limited.timeoutSeconds: per-query timeout, default 10.
Run and export
- Click Start. The log shows one line per domain; domains are processed six at a time.
- Open the Dataset tab when the status reads SUCCEEDED.
- Use Export to download JSON, CSV or Excel, or fetch
/items?format=jsonover the Apify API.
Key output fields
domain,registrable_domain,registered: the normalised name, the name used for WHOIS, and whether the registry knows it (falsemeans not registered).whois.registrar,whois.created_date,whois.expires_date,whois.age_days,whois.days_until_expiry,whois.name_servers,whois.status,whois.dnssec.dns.a,dns.aaaa,dns.mx,dns.txt,dns.ns,dns.cname,dns.soa.email_provider,has_spf,spf_record,has_dmarc,dmarc_record,dmarc_policy,has_dkim,dkim_selectors.error,scraped_at: set when a lookup failed, and the time of the lookup.
Connect to AI agents via MCP
The actor is available as an MCP tool. Paste this server URL into any MCP-compatible client such as Claude Desktop, Claude.ai, Cursor or VS Code:
https://mcp.apify.com?tools=santamaria-automations/domain-whois-dnsThen ask in plain English, for example: "Check these 20 domains and tell me which ones have no DMARC record." The example below has a longer prompt that asks for the cost first.
Example: 50 European SaaS domains
Situation: you sell email security or deliverability services and want to know how well a sector protects its mail, which mail platform it runs on and which domains are up for renewal, before you write to anyone.
We looked up the homepages of 50 SaaS and tech companies with European roots on 2026-10-21, with WHOIS and DNS both on and the default resolver. The run used the actor's own local run mode on one machine, not an Apify cloud run. It took about a minute, all 50 lookups returned a record, and none had an error. Registrant details are not shown here, only counts.
- Email provider (from MX): 40 use Google Workspace, 5 Microsoft 365, 1 OVH Mail and 4 show as "Other / Self-hosted". Two of those four (atlassian.com, contentful.com) point their MX at Proofpoint, a mail filter, so the mailbox platform behind it is not visible.
- Email authentication: all 50 have an SPF record and all 50 have a DMARC record. The DMARC policies split into 28
reject, 19quarantineand 3none, so 3 of 50 publish a record that only monitors. DKIM selectors were found for 48 of 50. - Registrars: of the 48 domains that returned a registrar name, MarkMonitor holds 9, Amazon Registrar 8, Gandi 7 and OVH 5. The other 19 are spread over 13 more registrars (one of them comes back under two spellings). The two .de domains returned no registrar.
- Domain age: the median is 19.7 years (7,202 days), based on the 47 domains with a creation date. The youngest are n8n.io and lemlist.com, both under 10 years old. personio.de, taxfix.de and bolt.eu returned no creation date and were left out of the median.
- Expiry: 27 of the 47 domains with an expiry date are due within 12 months, and 5 within 90 days. This is the end of the current registration term. Most companies renew automatically, so treat it as a renewal calendar, not a warning.
- Other: 8 of 50 have DNSSEC switched on.
Cost: 1 actor start at $0.001 + 50 domains × $0.003 = $0.151 on the Apify Free plan, at the Store price on 2026-10-21. We ran it locally, so we paid nothing for this run.
Show the exact input with all 50 domains
{
"domains": [
"spotify.com",
"sap.com",
"atlassian.com",
"mollie.com",
"adyen.com",
"messagebird.com",
"bird.com",
"typeform.com",
"personio.de",
"celonis.com",
"n8n.io",
"contentful.com",
"mambu.com",
"deepl.com",
"trustpilot.com",
"elastic.co",
"zendesk.com",
"intercom.com",
"pipedrive.com",
"hotjar.com",
"paddle.com",
"sendinblue.com",
"brevo.com",
"sennder.com",
"taxfix.de",
"lemlist.com",
"payfit.com",
"alan.com",
"qonto.com",
"algolia.com",
"doctolib.fr",
"mirakl.com",
"contentsquare.com",
"dataiku.com",
"ovhcloud.com",
"sumup.com",
"bolt.eu",
"pleo.io",
"unity.com",
"klarna.com",
"tink.com",
"vinted.com",
"miro.com",
"productboard.com",
"cleverreach.com",
"userlike.com",
"wefox.com",
"awin.com",
"zalando.com",
"tomtom.com"
],
"includeWhois": true,
"includeDNS": true,
"dnsRecordTypes": [
"A",
"AAAA",
"MX",
"TXT",
"NS",
"CNAME",
"SOA"
],
"useDNSServer": "8.8.8.8:53",
"timeoutSeconds": 10
}Claude prompt:
Use the Apify MCP server. Run the actor santamaria-automations/domain-whois-dns with includeWhois and includeDNS on, and these 50 domains: spotify.com, sap.com, atlassian.com, mollie.com, adyen.com, messagebird.com, bird.com, typeform.com, personio.de, celonis.com, n8n.io, contentful.com, mambu.com, deepl.com, trustpilot.com, elastic.co, zendesk.com, intercom.com, pipedrive.com, hotjar.com, paddle.com, sendinblue.com, brevo.com, sennder.com, taxfix.de, lemlist.com, payfit.com, alan.com, qonto.com, algolia.com, doctolib.fr, mirakl.com, contentsquare.com, dataiku.com, ovhcloud.com, sumup.com, bolt.eu, pleo.io, unity.com, klarna.com, tink.com, vinted.com, miro.com, productboard.com, cleverreach.com, userlike.com, wefox.com, awin.com, zalando.com, tomtom.com.
Before you start the run, tell me what it will cost and wait for my OK.
When it's done, tell me: how many domains use Google Workspace, Microsoft 365 or another email provider (email_provider); how many have a DMARC record and how the policies split into reject, quarantine and none (dmarc_policy); the registrars used, most common first; the median domain age in years from whois.age_days, ignoring domains without a creation date; and which domains expire within 365 days (whois.days_until_expiry). List the domains with no WHOIS dates separately.Lead qualification, brand protection, IT audits
- Lead qualification: filter a prospect list by
email_providerto tailor the pitch, or byhas_dmarcanddmarc_policyto find companies that publish no enforcement policy. Domain age separates new startups from old companies. - Brand protection: look up look-alike domains you already found and sort by
age_days. A domain a few weeks old with an MX record is worth a closer look.registered: falsetells you which spellings are still free. - IT audits: list every domain your company or client holds with registrar, expiry date and name servers, and flag those with no SPF or DMARC. Run it monthly and compare the datasets.
Data protection note
WHOIS and DNS data about a company's domain is public technical data. Registrant fields can contain personal data when the holder is a private person or sole trader. Under the GDPR you need a legal basis to store or use it, and in most cases you will not need those fields at all. Using the results for unsolicited marketing is governed by local rules on top of that, such as the UWG in Germany and Austria and the TKG in Austria. Check them before you contact anyone. This is not legal advice.
What it costs
The actor uses pay-per-event billing on Apify. There are two events:
- Actor start (
enrichment-start): $0.001, charged once per run. - Domain lookup completed (
enrichment-result): $0.003 per domain.
The two add up: 100 domains cost $0.001 + 100 × $0.003 = $0.301, and 1,000 domains cost $3.001. The free Apify tier includes $5 each month, enough for about 1,600 domains. There is no subscription.
FAQ
Which domain endings work?
Any ending that a public RDAP server or WHOIS server answers for. In our 50-domain run, .com, .io, .de, .fr, .eu and others returned a registrar. The two .de domains returned no registrar and no dates because the registry shows less data, and one .eu domain returned no dates. The DNS side works for every domain.
Do I get the owner's name and email?
Mostly not. Most registrars hide private contact data. The registrant fields in the output are filled when the registry publishes them, and often contain only a note such as "redacted for privacy" or a link to a contact form. Do not plan around personal contact data from WHOIS. For business contacts use a website crawl, such as the Website Email Scraper.
How does it know the email provider?
It reads the MX records and matches the host names against a list of providers such as Google Workspace and Microsoft 365. If a company puts a mail filter in front of its mailbox, the MX points to the filter, and the result is "Other / Self-hosted". In our run, two domains were filtered through Proofpoint and showed as Other for that reason.
Does has_dkim prove DKIM is set up?
It means at least one common selector name (for example google or selector1) resolves, or a DKIM text record sits at the domain. A company with a custom selector name can show false. In our run, 48 of 50 showed true.
How current is the expiry date?
It is the date the registry reports for the current registration term, calculated against the day of the run in days_until_expiry. A domain that expires in 40 days is not necessarily at risk, because most companies renew automatically. Use the field to spot unusual ones, not to predict lapses.
Can I run it on a schedule or on thousands of domains?
Yes. Domains are processed six at a time, which keeps the load on registries low. Set a schedule in Apify Console or call the actor over the API, and compare the datasets from two runs to see changes in registrar, name servers or email provider.
Related resources
- Domain WHOIS & DNS Lookup actor page: specs and pricing.
- Website Tech Detector: find the CMS, analytics and frameworks on the same domains.
- Website Email Scraper: pull business email addresses from the websites on your list.
- Extract emails from websites in bulk: the next step after the domain check.
- Email Verifier: check addresses before you send.
- All NanoScrape tutorials