Domain WHOIS (RDAP) & DNS Lookup avatar

Domain WHOIS (RDAP) & DNS Lookup

Pricing

from $0.90 / 1,000 domain checkeds

Go to Apify Store
Domain WHOIS (RDAP) & DNS Lookup

Domain WHOIS (RDAP) & DNS Lookup

Bulk domain WHOIS & DNS: registrar, created/expiry dates, age, availability, owner organization and country, MX, email provider, SPF, DMARC, DKIM. Covers .com and country domains (.de, .io, .jp, .ru, .cn...). Built to beat santamaria's domain-whois-dns: more found, half the price.

Pricing

from $0.90 / 1,000 domain checkeds

Rating

0.0

(0)

Developer

TidyHarvest

TidyHarvest

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Share

Domain WHOIS & DNS Lookup: Bulk Registrar, Expiry, Owner, MX, SPF, DMARC

Check a list of domains in one run and get one clean row per domain: registrar, creation and expiry dates, domain age, days until expiry, status codes, nameservers, DNSSEC, registered or available, and the registrant organization and country, plus live DNS records (A, AAAA, MX, NS, TXT, CNAME, SOA, CAA), the email provider behind the domain (Google Workspace, Microsoft 365, Zoho...), SPF, DMARC policy and DKIM. Works for generic and country-code domains (.com, .io, .ai, .de, .uk, .fr, .jp, .ru, .cn, .it, .eu, .nl, .se, .pl and more). $1.50 per 1,000 domains, no start fee, cheaper on paid Apify plans.

Built to beat santamaria-automations/domain-whois-dns (the most-used domain WHOIS actor) at half its price. Tested on the same 20 domains across 15 TLDs (2026-10-17):

This actorsantamaria-automations/domain-whois-dns
Price per 1,000 domains$1.50, no start fee$3.00 + $0.001 per run
Registrar or registration date found (19 registered domains)1615
Registered / available answered (20 domains)2014 (6 left blank)
Registrant organization found87
DKIMcounts only selectors with a real keyreported 18 "selectors" on example.com, which publishes only empty (revoked) keys
Where they still winfull raw WHOIS text; registrant org for some registrars that hide it from us (e.g. apple.com)

What you can do with it

  • Domain portfolio monitoring: catch domains that are about to expire, changed registrar or lost DNSSEC.
  • Domain availability checks: bulk-check name ideas; unregistered domains come back with available: true.
  • Email deliverability and security audits: see which domains lack MX, SPF, DKIM or an enforcing DMARC policy (dmarcPolicy: none / quarantine / reject).
  • Lead enrichment and market research: tag company websites with the owning organization, its country, email provider (Google Workspace vs Microsoft 365), DNS host and domain age.
  • Brand protection and fraud checks: spot newly registered look-alike domains (low domainAgeDays), see who owns them, and find the registrar's abuse contact to report them.

Input

FieldWhat it does
domainsDomains or URLs, one per line. https://www.shop.example.co.uk/page becomes example.co.uk. Duplicates are removed.
includeRdapRegistration (WHOIS) data. On by default.
includeRegistrantRegistrant organization and country. On by default.
includeDnsDNS records, email provider, SPF, DNS host. On by default.
recordTypesDNS types to fetch (default A, AAAA, MX, NS, TXT).
checkDmarcAlso read the DMARC policy. On by default.
checkDkimLook for DKIM keys under 28 common selectors. Off by default (adds a few seconds per domain).
maxItemsHard cap on domains per run (and on cost). Up to 10,000.

Example:

{ "domains": ["apify.com", "https://www.github.com/about", "my-new-idea-2026.com"], "recordTypes": ["A", "MX", "TXT"] }

Output

One item per domain:

{
"input": "https://www.github.com/about", "domain": "github.com", "tld": "com",
"registered": true, "available": false, "registeredSource": "rdap",
"registrar": "MarkMonitor Inc.", "registrarIanaId": "292", "registrarUrl": "http://www.markmonitor.com",
"registrarAbuseEmail": "abusecomplaints@markmonitor.com", "registrarAbusePhone": "+1.2086851750",
"status": ["client delete prohibited", "client transfer prohibited", "client update prohibited"],
"createdDate": "2007-10-09T18:20:50Z", "updatedDate": "2026-09-07T09:22:52Z", "expiresDate": "2028-10-09T18:20:50Z",
"domainAgeDays": 6942, "daysUntilExpiry": 728,
"nameservers": ["dns1.p08.nsone.net", "ns-1283.awsdns-32.org", "..."], "dnssec": false,
"registrantOrganization": "GitHub, Inc.", "registrantCountry": "US", "registrantRedacted": false,
"rdapServer": "rdap.verisign.com", "rdapError": null,
"dnsResolves": true,
"dns": {
"A": ["172.182.252.133"], "AAAA": [],
"MX": [{"priority": 0, "host": "github-com.mail.protection.outlook.com"}],
"NS": ["dns1.p08.nsone.net", "..."], "TXT": ["v=spf1 ip4:192.30.252.0/22 include:spf.protection.outlook.com ...", "..."]
},
"hasMx": true, "emailProvider": "Microsoft 365",
"spf": "v=spf1 ip4:192.30.252.0/22 include:spf.protection.outlook.com ... ~all", "hasSpf": true,
"dmarc": "v=DMARC1; p=quarantine; sp=reject; pct=100; ...", "hasDmarc": true, "dmarcPolicy": "quarantine",
"dnsProvider": "NS1", "dnsError": null,
"checkedAt": "2026-10-17T07:04:17Z"
}

With checkDkim on, rows also carry dkimSelectors (e.g. ["google", "s1", "s2"]) and hasDkim.

registeredSource says how registered was decided: rdap or whois (the registry's own record) or dns (the registry publishes no record, but the domain is live in DNS). An unregistered domain returns registered: false, available: true. That is a valid result and is charged like any other.

How to use

  1. Paste your domains or URLs into Domains or URLs.
  2. Pick the DNS record types you need, or turn registration data, owner or DNS off.
  3. Run, then download the table as CSV, Excel or JSON, or connect it to Sheets, Slack or Zapier with Apify integrations.

Pricing

$1.50 per 1,000 domains on the Free plan (domain-checked event), $1.40 on Bronze, $1.10 on Silver and $0.90 on Gold and above. No start fee. Invalid inputs and domains where every lookup failed are not pushed and not charged; they are listed in the run's SUMMARY record. maxItems and your run's maximum charge are applied before any lookup.

  • Registrant data: only the registrant organization and country are returned, and only when the registry or registrar publishes them. Names, emails, phone numbers and street addresses of people are never returned, and redacted data is never unmasked. Privacy-protected domains show registrantRedacted: true, including domains registered through a privacy service (Domains By Proxy, DNStination, Withheld for Privacy...): the service's name and country are not reported as the owner's. Turn includeRegistrant off to skip owner data entirely.
  • Registry terms of use (for example Verisign's for .com/.net) allow lawful use only and forbid using the data for unsolicited bulk email, phone or fax marketing. By running this actor you agree to follow the terms of the registries you query.
  • Some registries publish less: .de and .ch give no creation or expiry dates, .es and some others publish nothing to the public. For those, registered comes from DNS (registeredSource: "dns") and the date fields are empty.
  • Some registries and registrars rate-limit lookups. When a lookup is still refused after a pause, the row comes back with rdapError set, plus the DNS data.
  • Hosting-platform subdomains (myapp.vercel.app, user.github.io) are looked up at the platform's registered domain (vercel.app), since that is what the registry knows.
  • registered: false comes from the registry's "not found" answer. Premium, reserved or blocked names can still be unavailable to register.
  • Speed: about 1 second per domain, five at a time, so roughly 1,000 domains in 5-15 minutes depending on how many share one registry.
  • Not affiliated with IANA, ICANN, any domain registry or registrar, or santamaria-automations.