Check Domain Availability: How the Lookup Really Works

Updated: 5 min read Editorial team DomainAvail
Short answer

To check domain availability reliably, ask the registry, not DNS. A registrar search sends an EPP check to the registry and gets a yes or no, plus a price if the name is premium. RDAP or WHOIS show who holds a taken name and its status. A DNS lookup alone can't tell you whether a domain is free.

Most people check domain availability by typing a name into a search box and trusting the green tick. That works most of the time. The trouble starts when two tools give two different answers for the same name, or when a name nobody seems to use is reported as taken. Both cases make sense once you know which question each tool is actually asking.

How to check domain availability properly

There are three kinds of lookup, and they are not equally useful.

MethodWhat it asksAnswers “can I register it?”Blind spots
Registrar searchThe registry, live, via EPPYesDepends on the registrar actually querying live
RDAP / WHOISThe registry’s public recordMostlyShows reserved names as “not found”
DNS (dig, ping)Whether the name resolvesNoRegistered names without nameservers look free

Only the first one is a real availability check. RDAP and WHOIS are good at telling you why a name is taken. DNS tells you whether something is running on a name, which is a different question entirely.

What a registrar search asks the registry

When you search on a registrar, the registrar talks to the registry over EPP, the Extensible Provisioning Protocol (RFC 5730 and RFC 5731). The relevant command is a check:

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <check>
      <domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>example.com</domain:name>
        <domain:name>example-shop.com</domain:name>
      </domain:check>
    </check>
  </command>
</epp>

The registry answers per name with avail="1" or avail="0", and for unavailable names often adds a reason such as “In use” or “Reserved”. Registries that sell premium names also return a price through the fee extension (RFC 8748). That is how a search can say “available, but 2,400 per year” instead of a plain yes.

This check is authoritative at the moment it runs. It is not a reservation. Two people can both see “available”, and whoever completes the registration first gets the name.

Running a WHOIS or RDAP domain lookup yourself

You don’t need a website to check a name. For generic endings like .com, RDAP has replaced WHOIS as the official lookup protocol. ICANN ended the requirement for gTLD registries and registrars to run WHOIS in January 2025, though many servers still answer.

An RDAP lookup is a plain HTTPS request:

curl -s -o /dev/null -w "%{http_code}\n" \
  https://rdap.verisign.com/com/v1/domain/qwxz-nonexist-88211.com
404

A 404 means the .com registry has no record. For a registered name you get JSON back, including the status and dates. Here is the relevant part for google.com:

status: client delete prohibited, client transfer prohibited, client update prohibited,
        server delete prohibited, server transfer prohibited, server update prohibited
registration: 1997-09-15T04:00:00Z
expiration:   2028-09-14T04:00:00Z

Classic WHOIS still works for many endings. Verisign’s server says it bluntly:

whois -h whois.verisign-grs.com qwxz-nonexist-88211.com
No match for domain "QWXZ-NONEXIST-88211.COM".

Country-code registries run their own servers with their own formats. The German registry DENIC answers with a single status line, Status: free for an unregistered .de and Status: connect for one in use. If you don’t know the right RDAP server for an ending, IANA publishes the bootstrap list at data.iana.org/rdap/dns.json.

One catch: a name the registry has reserved or blocked often returns “not found” in RDAP and WHOIS, because no one holds it. The EPP check still says unavailable. That is one of several reasons covered in why a domain shows unavailable when nothing is using it.

Why DNS is the weakest signal

It is tempting to run dig or open the name in a browser and conclude “nothing there, so it’s free”. That conclusion is wrong surprisingly often.

dig nonexist-qwxz-88211.com +noall +comments | grep status
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 31105

NXDOMAIN means the name has no delegation in the zone. A registered domain without nameservers produces exactly the same answer. So does a domain the registry has put on hold, and so does an expired domain sitting in its redemption period. All three are taken, and DNS can’t tell them apart from a free name.

The reverse also happens. A name can resolve and still be heading for deletion, because the registrar is pointing it at a parking page after expiry.

Statuses that look like “available soon”

When a lookup shows a taken name, the status codes tell you whether there is any point in waiting. The EPP statuses from RFC 3915 are the ones to watch:

  • autoRenewPeriod: the name expired and the registry renewed it automatically. The registrar can still delete it.
  • redemptionPeriod: the name was deleted and can only be restored by the previous holder, usually for 30 days.
  • pendingDelete: the restore window is over. The name drops in about five days.
  • clientHold or serverHold: the name is registered but removed from DNS.

Anything else, including the very common clientTransferProhibited, is an ordinary registration. The full timeline is in when a domain becomes available again.

Checking many names and endings at once

If you are naming a product, you rarely check one name. You check ten names in five endings each. Doing that by hand with WHOIS gets you rate-limited quickly, since most public servers cap queries per IP.

A registrar search that covers many endings in a single query is the practical way. On betadomain you can check a name across hundreds of endings and see the yearly price next to each result, which matters because the same name can cost 3 euros in one ending and 200 in another. If you need to run checks from a script or an AI agent, the domain API and MCP server expose the same check programmatically.

For larger naming projects, keep a short spreadsheet: name, ending, available or not, renewal price. Patterns show up fast, for example that every two-word combination you like is free as .io but taken as .com.

When the answer is “taken”

A taken name is not always a dead end. Sometimes it is about to expire, sometimes the holder will sell, and sometimes a different ending or a small change to the name is the better choice anyway. The options are laid out in what to do when your domain is taken. If the search returns a price far above normal, it is likely a registry premium name, explained in registry premium domain prices.

If the name you want comes back available, don’t sit on it. Compare the renewal price in the full price list and register it while it is still free.

Step by step

  1. Enter the full name in a registrar searchType the name with the ending you want. The registrar sends a live check to the registry and shows available, taken or premium.
  2. Look up taken names in RDAP or WHOISQuery the registry's RDAP endpoint or WHOIS server to see the status, the registrar and the expiry date.
  3. Read the status codesStatuses like redemptionPeriod or pendingDelete mean the name is on its way out, not that it is free.
  4. Compare alternative endingsCheck the same name in other endings and note renewal prices, not just the first-year price.
  5. Register the name you want the same dayAvailability is first come, first served. Nothing is reserved until the registration is complete.

Found your domain? You can check and register it directly at betadomain – yearly price from €2.99.

FAQ

Is it safe to search for a domain? Will someone register it before me?

Searching on a registrar's site is a normal registry query and doesn't reserve or publish anything. The worry dates back to 2008, when one large registrar briefly held searched names for itself, and ICANN's security committee looked into so-called front-running. If the name matters to you, the safest move is still to register it the same day.

Why does a domain show as available on one site and taken on another?

Usually one of them is guessing. Some sites check DNS or cached WHOIS data instead of asking the registry live. Others show a name as taken because it sits on a registry's premium or reserved list. The live registry answer wins.

Can I check domain availability without a registrar?

Yes. For most gTLDs you can query the registry's RDAP server directly with curl, and many ccTLDs still run a port-43 WHOIS server. A 404 from RDAP or a 'No match' from WHOIS means the registry has no record.

How do I check many domains at once?

Use a registrar search that checks a name across many endings in one go, or a domain API if you need hundreds of names. Avoid hammering public WHOIS servers in a loop, since most rate-limit or block repeated queries.