Accuracy notes
-
RDAP is authoritative:
404means the name is not registered. -
“Not registered” and “you can register it” are not the same claim. In a brand or reserved TLD every lookup comes back unregistered forever, so those are reported
PRIVATE— see Brand and reserved TLDs. Only Specification 13 brands and RFC-reserved names are called that; nothing else is assumed either way. -
WHOIS is text matching. The per-registry needle from
whois.jsonis tried first, then generic markers. Anything unrecognised isUNKNOWNrather than a guess. -
Needle matching is negation-aware. auDA’s availability service answers
AvailableorNot Availableand the bundled needle for.auis “Available”, so a plain substring test reports every taken.audomain as free. Matches preceded by “not”/“no”, or attached as in “unavailable”, do not count. -
Four registry quirks are handled explicitly, because each one otherwise reads as a registration: answers that echo the queried name back before saying “no object found” (
.sr,.fj), answers for a TLD the server does not serve (.tattoo,.photo), non-RDAP error bodies returned with HTTP 200 (.sn), and answers describing the parent zone instead of the name asked about (foo.ernet.in->ernet.in). -
Some registries answer nobody:
.liand.qarefuse public WHOIS and have no RDAP, and a few bundled WHOIS hosts no longer exist. Those come backUNKNOWNwith the reason attached. -
Most of the bundled table is harvested from IANA and tested against the registry before being written — see The bundled WHOIS table. The older hand-written entries have not been through that mill.
-
--wherereports registrars from published prices, so it under-claims rather than over-claims: a registrar missing from the bundledpricing.jsonmay well sell the TLD anyway.eligibility.jsonis the same shape of promise in the other direction — the restrictions and requirements it lists are sourced, but a TLD it does not list is neither unrestricted nor free of obligations. -
Large sweeps get rate-limited.
dspaces itself per host, backs off on 403/429, and stops querying a server that has refused it six times in a row (retrying it after 30s). Identity Digital runs ~250 gTLDs behind one RDAP endpoint with a strict quota, so a single--tld allsweep will leave some of those unresolved; re-run just those later:ds apple --tld "$(sed 's/^apple\.//' unknown.txt | paste -sd, -)"
These pages are generated from the docs in the repo, so they never drift from what ships with the binary.