Bulk Domain Availability Checker (RDAP) avatar

Bulk Domain Availability Checker (RDAP)

Pricing

from $1.50 / 1,000 domain checkeds

Go to Apify Store
Bulk Domain Availability Checker (RDAP)

Bulk Domain Availability Checker (RDAP)

Check if domains are available or registered using official RDAP registry data, with a DNS check as a second signal. Give a list of domains or combine names with TLDs. Returns registrar, creation and expiry dates.

Pricing

from $1.50 / 1,000 domain checkeds

Rating

0.0

(0)

Developer

Matias Isnard

Matias Isnard

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Check a list of domains and find out which are registered and which look available. Give it full domains, or a list of names and a list of TLDs to combine (for example acme, getacme with .com, .io, .com.ar gives six domains).

Each domain is looked up in the official registry data through RDAP, the standard that replaces WHOIS. A DNS nameserver lookup runs alongside as a second signal. For registered domains you also get the registrar, creation date, expiry date and status codes.

No registrar website is scraped. The only hosts contacted are the IANA bootstrap file, the registry RDAP servers it lists, and public DNS resolvers (1.1.1.1 and 8.8.8.8).

Who it is for

  • Naming a product or company: test dozens of name ideas across several extensions in one run.
  • Domain investors: check expiry dates and registrars of a portfolio or a watch list.
  • Brand protection: see which variations of your brand under other TLDs are already taken.
  • Agencies: check client domains for upcoming expiry.

How the answer is decided

  1. The TLD is looked up in the IANA RDAP bootstrap file (https://data.iana.org/rdap/dns.json), which lists the RDAP server of each registry. The longest matching suffix wins, so .com.ar uses its own entry when one exists.
  2. The Actor asks that server for the domain.
    • HTTP 200: the domain is registered. Dates, registrar and status come from this answer.
    • HTTP 404: the registry has no record of it. The domain is reported as available, unless DNS shows nameservers for it (then it is reported as registered, because the name is clearly in use).
    • HTTP 429 (rate limited): the Actor waits (using the Retry-After header when the server sends one, otherwise 2, 4, 8 seconds) and tries again, up to 4 attempts.
    • Anything else, a timeout or no RDAP server for the TLD: the answer comes from DNS only.
  3. DNS only: nameservers or any record mean registered. No record at all (NXDOMAIN) means available, but with lower confidence, because a registered domain without nameservers looks the same.

Every result has a confidence field:

confidencemeaning
rdapThe registry RDAP server answered. This is the strongest signal available without a registrar account.
dns-onlyNo usable RDAP answer. Decided from DNS. Reliable for "registered", weak for "available".
noneNeither source answered. Status is unknown.

"Available" is never a guarantee

RDAP tells you whether a registration record exists. It does not tell you whether the registry will sell the name to you, or at what price. Premium names, names reserved by the registry, blocked trademarks and names in a grace or redemption period can show as available here and still not be purchasable at the normal price. Always confirm at a registrar before you buy. Every available result carries a note saying this.

Input

{
"domains": ["google.com", "mercadolibre.com.ar"],
"names": ["acme", "getacme"],
"tlds": [".com", ".io", ".com.ar"],
"concurrency": 10
}
  • domains: full domains or URLs. URLs are reduced to the hostname and a leading www. is removed.
  • names and tlds: every name is combined with every TLD. The leading dot is optional.
  • concurrency (default 10, max 50): domains checked in parallel. Independently of this, at most 2 requests run at the same time against any one RDAP server, so a large .com list does not hammer Verisign.

You can use domains, names + tlds, or both. Duplicates are checked once. Invalid entries are skipped with a warning in the log and are not charged. Up to 10,000 domains per run.

Output

One dataset item per domain. Real output for 10 domains is in ejemplos/salida.json in the source.

{
"input": "google.com",
"domain": "google.com",
"status": "registered",
"confidence": "rdap",
"note": null,
"registered_at": "1997-09-15T04:00:00Z",
"expires_at": "2028-09-14T04:00:00Z",
"last_changed_at": "2019-09-09T15:39:04Z",
"registrar": "MarkMonitor Inc.",
"rdap_status": ["client delete prohibited", "client transfer prohibited", "..."],
"dns_nameservers": ["ns1.google.com", "ns2.google.com", "ns3.google.com", "ns4.google.com"],
"dns_result": "delegated",
"rdap_server": "https://rdap.verisign.com/com/v1/",
"rdap_http_status": 200,
"checked_at": "2026-10-29T09:25:38+00:00",
"errors": []
}

An available domain:

{
"domain": "qzvx7plmk.com",
"status": "available",
"confidence": "rdap",
"note": "Not found in the registry. Premium, reserved or blocked names can still look available. Confirm at a registrar before buying.",
"registrar": null,
"dns_result": "nxdomain",
"rdap_http_status": 404,
"errors": []
}

dns_result is delegated (NS records found), exists (the name exists but has no NS records, typical for a subdomain), nxdomain or error. Problems are listed in errors for that domain instead of failing the run.

Pricing

Pay per event: you pay for each domain that got a definitive answer (domain-checked event), that is every available or registered result, from RDAP or from DNS. Domains with status unknown and invalid input lines are not charged. You can cap the cost of a run with the "Maximum cost per run" setting; the Actor stops cleanly when the cap is reached.

Limitations

  • Some TLDs have no RDAP server in the IANA bootstrap file (at the time of writing this includes .io, .co and .de and many other country codes). Those are checked with DNS only, see confidence.
  • Some RDAP servers are slow or time out (15 seconds per request). Those domains fall back to DNS only.
  • Registries limit how fast one IP can query them. Very large runs against a single TLD can still hit limits; the Actor slows down and retries, and reports unknown if the server keeps refusing.
  • For .com and .net the registry answer contains the registrar and dates but not the registrant. Registrant data is not collected.
  • Internationalized domain names must be given in punycode form (xn--...).
  • Results are a snapshot at the time of the run. A domain can be registered by someone else a minute later.

Run locally

python -m venv .venv
.venv/Scripts/pip install -r requirements.txt # on Linux/macOS: .venv/bin/pip
# put input in storage/key_value_stores/default/INPUT.json
.venv/Scripts/python -m my_actor
python -m unittest discover -s tests -t .

Author: Matias Isnard.