Bulk WHOIS & Domain Lookup: DNS Lookup and Domain Availability avatar

Bulk WHOIS & Domain Lookup: DNS Lookup and Domain Availability

Pricing

from $1.40 / 1,000 domains

Go to Apify Store
Bulk WHOIS & Domain Lookup: DNS Lookup and Domain Availability

Bulk WHOIS & Domain Lookup: DNS Lookup and Domain Availability

Bulk WHOIS and domain lookup: check domain availability, domain age, registrar and expiration dates, status and nameservers from the registries' RDAP (WHOIS where a TLD has none), plus DNS records with MX, SPF and DMARC. A domain checker at $0.002 per domain.

Pricing

from $1.40 / 1,000 domains

Rating

0.0

(0)

Developer

Nebula Colors LLC

Nebula Colors LLC

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Bulk WHOIS & Domain Lookup: WHOIS via RDAP, DNS Records and Availability

Give it a list of domains and get back, for each one, who it's registered with, when it was created and when it expires, its status and nameservers, and whether it's available to register. The data comes from each registry's official RDAP server, the modern replacement for WHOIS, and from WHOIS for the TLDs whose registry has no RDAP yet (like .jp, .cn, .it and .se). It also reads the DNS records, with the SPF and DMARC policies. $0.002 per domain, and domains where nothing answered are free. It works for people and for AI agents through Apify's MCP server.

What it's for

  • Check a list of name ideas for which ones are available. Available means the registry has no record of the name. A registrar can still hold it as reserved or sell it at a premium price, so check the price there before you plan on it.
  • Some registries give less: .de shows no creation or expiry date, and .es answers only approved addresses, so .es rows have DNS records only, free.
  • Research companies and leads: how old a domain is, who hosts its DNS, whether it receives email.
  • Watch expiry dates: run it on an Apify schedule and sort by expiresInDays.
  • Check email setup in bulk: MX, SPF and DMARC.

Input

FieldWhat to put
DomainsOne per line, like example.com. Required. Website and email addresses work too: https://www.example.co.uk/page is looked up as example.co.uk. Subdomains are looked up as the domain they belong to: blog.example.com as example.com, and user.github.io as github.io.
Registration dataOn by default: registrar, dates, status, nameservers, and whether the domain is registered.
DNS recordsOn by default: A, AAAA, MX, NS, TXT, CNAME, CAA and SOA, plus SPF and DMARC.

With Registration data off, registered and available are null. With DNS records off, the DNS fields are left out. Both off is an error.

Example:

{
"domains": ["apify.com", "github.io", "bbc.co.uk"]
}

Output

One row per domain. This one came from a test run on October 16, 2026 (DNS records cut short here):

{
"input": "github.io",
"domain": "github.io",
"tld": "io",
"registered": true,
"available": false,
"source": "rdap",
"rdapServer": "https://rdap.identitydigital.services/rdap/",
"registrar": "MarkMonitor Inc.",
"registrarIanaId": "292",
"registrarUrl": "https://www.markmonitor.com/about-us/",
"createdAt": "2013-03-08T19:12:48.000Z",
"updatedAt": "2026-08-12T09:08:04.273Z",
"expiresAt": "2027-03-08T19:12:48.000Z",
"status": [
"client delete prohibited",
"client transfer prohibited",
"client update prohibited"
],
"nameservers": [
"ns-692.awsdns-22.net",
"ns-1622.awsdns-10.co.uk",
"dns1.p05.nsone.net",
"dns2.p05.nsone.net",
"dns3.p05.nsone.net"
],
"dnssec": false,
"registrantOrganization": "GitHub, Inc.",
"registrantCountry": "US",
"abuseEmail": "abusecomplaints@markmonitor.com",
"ageDays": 4969,
"expiresInDays": 143,
"dns": {
"a": [
"185.199.109.153",
"185.199.110.153"
],
"aaaa": [],
"mx": [],
"ns": [
"dns1.p05.nsone.net",
"dns2.p05.nsone.net"
],
"txt": [
"v=spf1 a -all"
],
"cname": [],
"caa": [
"0 issue \"sectigo.com\""
],
"soa": {
"primaryNs": "ns-1622.awsdns-10.co.uk",
"hostmaster": "awsdns-hostmaster.amazon.com",
"serial": 1
}
},
"spf": "v=spf1 a -all",
"dmarc": null,
"hasEmail": false,
"resolves": true,
"nxdomain": false,
"checkedAt": "2026-10-16T08:34:03.342Z"
}
  • registered is true or false from the registry, or null if it couldn't say. available is its opposite. A name the registry doesn't have can still be reserved or premium-priced at the registrar.
  • Dates are ISO 8601 in UTC. ageDays and expiresInDays count from the time of the lookup.
  • registrantOrganization and registrantCountry are filled only when public. Behind a privacy service, both are null.
  • source is rdap or whois. With WHOIS, whoisServer names the server asked and whoisText has its answer.
  • hasEmail is true when the domain has MX records, resolves when it has an A or AAAA record, and nxdomain when the name doesn't exist in DNS at all.
  • warning says which part didn't answer, like registration data from a registry that refused.
  • A domain where nothing answered has an error instead, and isn't charged.

The run's SUMMARY record says how many domains were looked up, registered, not registered and unknown, how many came from RDAP and from WHOIS, and how many failed.

Price

  • $0.002 per domain looked up, so $2 per 1,000.
  • That's the price on Apify's free plan. On a paid Apify plan it's less: $1.80 per 1,000 domains on Starter, $1.60 on Scale and $1.40 on Business, the "from" price at the top of this page.
  • Registration data asked for but missing (like most .es): the row keeps its DNS records and isn't charged (charged is false). With Registration data off, a DNS result is charged.
  • Free: entries that aren't domains, duplicates (the same domain twice, or two addresses on one domain, get one row), and domains where nothing answered.
  • You can set a maximum charge for a run. It stops when it's reached and keeps what it already looked up.

Good to know

  • Official sources. RDAP servers are the ones IANA lists for each TLD, and WHOIS servers the ones IANA names. Thin registries like .com point to the registrar's own RDAP, which it also reads for the owner's details.
  • Polite. Requests to the same registry wait their turn, and a rate-limited server is asked again after a pause.
  • Some registries say little. DENIC (.de) gives only the status, nameservers and last change.
  • Some registries can't be read. .es answers only approved addresses, and .cn's WHOIS sometimes times out. Those domains still get their DNS records, free, with a warning.
  • Speed. Each registry is asked about twice a second, so a list that mixes TLDs goes faster. In test runs, 1,000 .com domains took 8.5 minutes and a mixed list of 60 took 41 seconds.

Use it from an AI agent

The Actor works through Apify's MCP server like any Store Actor. An agent can find it, read its input and call it. The MCP call waits 30 seconds by default (45 at most), and a few domains finish in that time. A bigger list takes longer, so the call returns the run's status and dataset ID, and the agent reads the rows with get-dataset-items.

Questions or problems

Open an issue on this Actor's Issues tab. I read them. If it saves you time, a short review helps others find it.