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
  1. What is RDAP?
  2. RDAP vs. WHOIS
  3. Check if a domain is available with one command
  4. A free domain availability API in five lines of code
  5. Caveats: when "404" doesn’t mean you can buy it
  6. Rate limits and being a good citizen
  7. Finding the right domain for a business name
  8. Frequently asked questions

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

WHOISRDAP
Response formatFree-form text, different per registryStructured JSON
TransportPort 43, plain textHTTPS
“Not found” signalA text string that varies by registryHTTP 404
Finding the right serverKnow which server to askIANA bootstrap file, or a redirector like rdap.org
Status for gTLDsBeing phased outThe 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:

Terminal
# 404 = no registration found (likely available)
# 200 = registered (taken)
curl -s -o /dev/null -w "%{http_code}\n" -L https://rdap.org/domain/smithplumbing.com

Drop 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:

JavaScript / TypeScript
// 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:

  1. Lowercase the name and strip accents and punctuation (“Café Élise” becomes cafeelise).
  2. Turn & into “and”.
  3. Drop trailing legal suffixes such as Inc, LLC, Ltd, Corp or GmbH.
  4. Try both the full form and a compact one without stop words (“the”, “and”, “of”).
  5. Check .com first, 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 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.

Run this on your own city.

PresenceZero is free and open source. Start with OpenStreetMap: no API key, no account, a scored list in minutes. Or click through a real result set first.