How to Check Domain Availability for Free with RDAP
Check if a domain is available for free with RDAP, the successor to WHOIS. No API key: copy-paste curl and JavaScript examples, caveats and rate limits.
- Updated
- Reading time
- 8 min
On this page
The short answer
Request https://rdap.org/domain/example.com. A 404 means the registry has no record, so the domain is very likely available; a 200 means it is registered. RDAP is free, needs no API key, and returns structured JSON. Treat any other response as "unknown", be polite (about one request per second), and confirm with a registrar before you promise a domain to anyone.
What is RDAP?
The Registration Data Access Protocol (RDAP) is the standard way to look up who has registered a domain name. It’s the official successor to WHOIS, and ICANN requires accredited registries and registrars for generic top-level domains (.com, .net, .org and the newer gTLDs) to support it. Many country-code registries do too.
For our purposes, an RDAP lookup answers one question very cheaply: is this domain registered?
RDAP vs. WHOIS
| WHOIS | RDAP | |
|---|---|---|
| Response format | Free-form text, different per registry | Structured JSON |
| Transport | Port 43, plain text | HTTPS |
| “Not found” signal | A text string that varies by registry | HTTP 404 |
| Finding the right server | Know which server to ask | IANA bootstrap file, or a redirector like rdap.org |
| Status for gTLDs | Being phased out | The required standard |
Check if a domain is available with one command
rdap.org is a free redirector. It looks up which registry runs a TLD and forwards your request there, so you don’t need to know the right server:
# 404 = no registration found (likely available)
# 200 = registered (taken)
curl -s -o /dev/null -w "%{http_code}\n" -L https://rdap.org/domain/smithplumbing.comDrop the -o /dev/null -w … part to see the full JSON for a registered domain: registrar, creation and expiry dates, nameservers and status codes such as client transfer prohibited.
A free domain availability API in five lines of code
Because RDAP is just HTTPS and JSON, you don’t need a paid domain availability API for basic checks:
// Node 18+ / any modern runtime: no key, no SDK
async function isAvailable(domain) {
const res = await fetch(`https://rdap.org/domain/${domain}`, { redirect: 'follow' })
if (res.status === 404) return true // not registered
if (res.ok) return false // registered
return null // rate-limited, unsupported TLD, or error: unknown
}The three-way result is deliberate. A failed check isn’t the same as “taken”, and treating errors as “unavailable” hides good domains from you. PresenceZero stores the same three states: available, taken, and “check failed”.
Caveats: when "404" doesn’t mean you can buy it
- Unsupported TLDs. Some country-code registries don’t offer RDAP yet. Check the IANA RDAP bootstrap file: if a TLD isn’t listed, an error says nothing about availability.
- Reserved and premium names. A registry can withhold a name, or price it far above normal, without it being “registered”. RDAP may report not-found while your registrar shows a premium price.
- Recently dropped domains. Domains in redemption or pending-delete aren’t available to register yet, even though they no longer work.
- Race conditions. Availability can change at any moment. The registrar’s checkout is the final word.
Rate limits and being a good citizen
RDAP servers are public infrastructure, and many rate-limit aggressively. If you check domains in bulk:
- keep to roughly one request per second overall;
- back off exponentially when you get
429 Too Many Requests; - cache results: “taken” rarely changes, so cache it for weeks; “available” can change, so cache it for about a day.
That’s exactly how PresenceZero’s RDAP checker behaves: a global one-per-second throttle, exponential backoff on 429s, and a shared cache (24 hours for available, 30 days for taken), so the same domain is never looked up twice across scans.
Finding the right domain for a business name
When you’re pitching a website, the domain you check should be the one the owner would pick themselves. A simple recipe:
- Lowercase the name and strip accents and punctuation (“Café Élise” becomes
cafeelise). - Turn
&into “and”. - Drop trailing legal suffixes such as Inc, LLC, Ltd, Corp or GmbH.
- Try both the full form and a compact one without stop words (“the”, “and”, “of”).
- Check
.comfirst, then the business’s country domain (.ca,.co.uk…).
An available exact-match .com is one of the strongest openers you can bring to a pitch, which is why it carries its own weight in PresenceZero’s lead score.
Frequently asked questions
Is there a free domain availability API?
Yes. RDAP is free and needs no key: request https://rdap.org/domain/<name> and read the HTTP status (404 means not registered, 200 means registered). Keep to about one request per second and cache results.
Is RDAP replacing WHOIS?
Yes, for generic TLDs. ICANN requires gTLD registries and registrars to support RDAP, and it is the standard going forward. Some country-code registries still offer WHOIS only.
Why does a domain show as available but cost a lot at checkout?
It is likely a registry premium or reserved name. RDAP shows whether a name is registered, not its price, so always confirm with a registrar.
Written by Tahir Nazir
Tahir builds websites and AI call receptionists for local businesses, and wrote PresenceZero to find his own leads. These guides are the playbook he uses with it.