Bulk Domain Availability Checker avatar

Bulk Domain Availability Checker

Pricing

from $1.00 / 1,000 domain checkeds

Go to Apify Store
Bulk Domain Availability Checker

Bulk Domain Availability Checker

Check domain names you may want to register. DNS first, then a throttled RDAP lookup only for names that do not resolve. No registrant data.

Pricing

from $1.00 / 1,000 domain checkeds

Rating

0.0

(0)

Developer

Olalekan Johnson

Olalekan Johnson

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Check whether domain names are already registered, for people comparing names they might register.

Paste a list of domains, or give keywords and TLDs and the Actor builds the combinations. A name that has DNS NS or SOA records is reported as registered. Names that do not resolve are sent, one at a time, to the TLD registry's RDAP server (found through the IANA bootstrap file) to tell available from registered. Each row is domain, status, method, and checked_at.

This Actor is unofficial and is not affiliated with Verisign, IANA, ICANN, Cloudflare, or Google.

It is for registration intent: short lists of names you are considering. It is not a WHOIS harvester. Registrant, contact, and nameserver data is never stored or returned. Verisign's RDAP terms forbid high-volume automated queries except as reasonably necessary to register domain names or modify existing registrations (Verisign RDAP terms). The Actor keeps RDAP traffic inside that limit: DNS first, at most 40 registry lookups per run, and at least one second between them.

Available means the registry RDAP server returned no registration record. It does not mean a registrar will sell the name, or sell it at the standard price. Premium, reserved, and restricted names can still be unavailable at retail.

Input

FieldDefaultWhat it does
Domain namesgoogle.com, wikipedia.org, example.com, qx7vk2m9-unlikely-register-2026.comNames to check. URLs are reduced to the host.
KeywordsemptyName ideas. Combined with every TLD.
TLDsemptycom, .net, co.uk. Required together with keywords.
Maximum domains per run25Hard ceiling 100. Extra names are ignored.
Maximum RDAP lookups per run20Hard ceiling 40. Further unresolved names come back as unknown.
Delay between RDAP requests1.5 secondsMinimum 1 second. DNS is not delayed.

The default list is small on purpose so a run finishes in well under a minute. google.com is registered. qx7vk2m9-unlikely-register-2026.com is a long label that is very unlikely to be registered, so the run exercises one RDAP confirmation.

Keywords are a single label. Bright Kettle with com and net becomes bright-kettle.com and bright-kettle.net. Put a finished name such as example.co.uk in the domain list.

Output

[
{
"domain": "google.com",
"status": "registered",
"method": "dns",
"checked_at": "2026-10-23T03:00:00+00:00"
},
{
"domain": "qx7vk2m9-unlikely-register-2026.com",
"status": "available",
"method": "rdap",
"checked_at": "2026-10-23T03:00:02+00:00"
}
]
FieldMeaning
domainName that was checked, in ASCII.
statusavailable, registered, or unknown.
methoddns, rdap, or none.
checked_atUTC time of the conclusion, ISO 8601.
detailOnly when status is unknown. A cap, a TLD with no RDAP server, or a failed lookup. No personal data.

method: dns means the name has NS or SOA records at a public resolver, so it was not sent to RDAP. A registered name with no delegation does not resolve; that name is confirmed with RDAP instead.

Pricing

Pay per event. One event, charged once per domain that is written to the dataset.

EventPriceWhen it is charged
apify-actor-start$0.005Once per run, by the platform (memory is capped at 512 MB, so once). The Actor does not call Actor.charge for it.
domain-checked$0.001One domain name checked and stored

There is no separate charge for DNS queries or RDAP lookups, and no per-dataset-item event. A run of the four default names costs $0.005 + 4 × $0.001 = $0.009. Platform compute is not billed to you.

Set the run's maximum charge high enough for the number of names you want. The Actor stops cleanly when that limit is reached and keeps the rows already stored.

The Actor runs with limited permissions. It only reads its own input and writes its default dataset.

Limits

  • 100 domain names per run, 40 RDAP lookups per run, at least 1 second between RDAP requests.
  • One registry query at a time. Temporary RDAP failures are retried with backoff.
  • TLDs with no server in the IANA RDAP bootstrap come back as unknown.
  • A name can be registered and still have no DNS. Those are the names RDAP is for.
  • A name with NS or SOA records is reported registered without asking the registry. That matches almost every delegated domain. It is not a receipt from the registry.
  • Availability can change between this check and an attempt to register the name.
  • RDAP does not tell you the registrar's price.

Sources and terms

  • DNS answers come from Cloudflare's and Google's public resolvers over DNS-over-HTTPS. The Actor stores the conclusion (delegated or not), not the record contents.
  • RDAP base URLs come from the IANA bootstrap registry for the domain name space, published so clients can find the authoritative RDAP server (RFC 9224).
  • The registration answer comes from the TLD registry that IANA lists. For .com and .net that server is operated by Verisign. Use of those responses is subject to the registry's RDAP terms. Verisign's terms are quoted in intent above; read them before you rely on the data: https://www.verisign.com/legal-center/rdap-terms/.
  • Nothing in this Actor is a copy of a registrar's database. No registrant record is redistributed.

Run locally

Python 3.12.

python -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
pytest
python -m src

With no input file, the Actor checks the four default domains. To pass the same input the Store test uses, write it to the local key-value store before starting:

$mkdir -p storage/key_value_stores/default

Then save this as storage/key_value_stores/default/INPUT.json:

{
"domains": [
"google.com",
"wikipedia.org",
"example.com",
"qx7vk2m9-unlikely-register-2026.com"
]
}

Results land in storage/datasets/default/.

On Apify, configure pay-per-event pricing with domain-checked as the only event, at $0.001, and leave the Actor on limited permissions. Do not add apify-default-dataset-item, or a domain would be billed twice. The source is ready for apify push.