Agent context packet

Structured metadata, source alternates, graph links, headings, series position, and diagram inventory for crawlers and agent readers.

Table of contents

  1. WHOIS: What It Was
  2. Why It Died
  3. RDAP: What Replaced It
  4. The Comparison
  5. Bootstrap: Finding the Right Server
  6. Quick Examples
  7. What This Means Going Forward
  8. Sources

Series context

How Domain Infrastructure Works

From DNS root servers through WHOIS/RDAP to TLS fingerprinting and bot detection — the full stack.

Audience: Developers building DNS tools, domain scanners, or anti-detection systems

  1. DNS Resolution: The Full Picture
  2. WHOIS Is Dead, Long Live RDAP
  3. How Websites Detect Bots in 2026 — JA4 / JA4T Fingerprints, TLS, and HTTP/2
  4. Domain Registration: From ICANN to Your Browser

Entry facts

Kind
note
Maturity
budding
Confidence
high
Origin
ai-drafted (AI-drafted, human-reviewed)
Author
Agent
Directed by
krow
Published
Words
1,303 (6 min read)
Series
domain-infrastructure #2
Tags
dns, networking
Full corpus
/llms-full.txt
Readable corpus
/source/full-corpus/

Graph links

Prerequisites dns-resolution-full-picture

Related dns-resolution-full-picturebot-detection-2026aimd-rate-limiting

Tagsdns, networking

WHOIS Is Dead, Long Live RDAP

ICANN sunsetted WHOIS in January 2025. RDAP replaced it — structured JSON over HTTPS instead of plaintext over TCP. Here's what changed and why it matters.

/ directed by / / 6 min read
Topics dns networking

In January 2025, ICANN officially sunsetted WHOIS for all gTLD registries and registrars. The protocol that powered domain registration lookups since 1982 is now deprecated. Its replacement — RDAP — has been mandatory since that date.

If you’ve ever parsed a WHOIS response, you know why it had to go. If you haven’t, consider yourself lucky.

WHOIS: What It Was

WHOIS was a plain-text protocol running on TCP port 43, formalized in RFC 3912. The entire exchange looked like this:

Client opens TCP connection to port 43
Client sends: "example.com\r\n"
Server sends: plain text response (no standard format)
Server closes connection

That’s the whole protocol. No encryption. No authentication. No structured format. The server dumps a blob of text and hangs up.

The response was human-readable but machine-hostile. Every registry and registrar formatted theirs differently. Parsing required per-server regex patterns — “No match for” vs “NOT FOUND” vs “Domain not found” vs an empty response all meant the same thing. There was no standard way to know.

The referral system made it worse. Thin registries (like Verisign for .com) only returned basic data and a pointer to the registrar’s own WHOIS server. Getting full registration details required two separate TCP connections: one to the registry, one to the registrar.

Why It Died

Six problems converged:

  1. No standard format — every server formatted differently, requiring per-server parsing logic
  2. No standard errors — “not found” expressed a dozen different ways
  3. Plaintext TCP — anyone on the network path could see what domains you were looking up
  4. No authentication — IP-based rate limiting was the only protection
  5. Referral chains — two TCP connections for one lookup on thin registries
  6. GDPR — the kill shot. WHOIS was designed to publish registrant names, addresses, phone numbers, and emails. The EU’s General Data Protection Regulation (2018) made that illegal for EU data subjects. The response was mass redaction — inconsistent, messy, and legally uncertain.

ICANN had been pushing RDAP since the RFCs landed in 2015. GDPR forced the timeline. By January 2025, all gTLD operators were required to support RDAP. WHOIS port 43 isn’t turned off yet — Verisign still runs whois.verisign-grs.com — but it’s legacy. The ~189 country-code TLDs (.uk, .de, .jp) still rely on WHOIS because ICANN’s mandate doesn’t apply to them. That’s the last holdout.

RDAP: What Replaced It

Registration Data Access Protocol. HTTPS transport, JSON responses. Defined across six RFCs:

RFCWhat it covers
7480HTTP usage in RDAP
7481Security services
7482Query format
9083JSON response format (current)
9224Bootstrap — finding the right server

A query is a single HTTPS GET:

GET https://rdap.verisign.com/com/v1/domain/example.com
Accept: application/rdap+json

The response is structured JSON — dates in ISO 8601, status codes from a defined vocabulary, entities with roles, nameservers as objects. HTTP 404 means the domain isn’t in the registry database (available). HTTP 200 means it’s taken. HTTP 429 means you’re rate-limited. No guessing.

RDAP was designed with GDPR in mind. Privacy is built into the spec through role-based redaction — registries can omit personal data by default and only reveal it to authenticated, authorized parties via OAuth 2.0 or API keys.

The Comparison

This is the table that matters. Three ways to look up domain information, each with different tradeoffs:

AspectRDAPWHOIS (port 43)DNS / DoH
FormatStructured JSON (RFC 9083)Unstructured text, varies by serverWire format / JSON (DoH)
TransportHTTPS (port 443, encrypted)Plaintext TCP (port 43)HTTPS (DoH) or UDP (port 53)
Coverage~77% of TLDs (growing)Being sunsetted, still ~100%All resolvable domains
Rate limitsPer-registry, undocumented, strictPer-server, undocumented, IP-basedVery generous (Cloudflare/Google)
Data richnessFull: registrar, dates, status, NS, DNSSEC, entitiesSame data, harder to parseExistence only (NXDOMAIN / NOERROR)
AuthenticationOptional (OAuth 2.0, API keys, certs)NoneNone
PrivacyGDPR-compliant by design (role-based redaction)Pre-GDPR design, inconsistent redactionN/A (no personal data)
Error handlingHTTP 404 = not found, 429 = rate limitedVaries: “No match”, empty, connection refusedRCODE 3 = NXDOMAIN
Parsingjson.loads()Per-server regexStandard format
Speed (typical)500ms — 3s200ms — 2s30ms — 100ms
Best forAuthoritative confirmation, rich dataccTLD fallback (~189 without RDAP)Fast pre-screening

The takeaway: DNS resolution is fastest but only tells you if something resolves. WHOIS has the widest coverage but is a parsing nightmare. RDAP gives you everything WHOIS did in a format you can actually use — at the cost of being slower and not yet universal.

Bootstrap: Finding the Right Server

RDAP has no single server. Each TLD has its own RDAP endpoint. To find the right one, you consult the IANA bootstrap file:

https://data.iana.org/rdap/dns.json

This JSON file maps TLDs to RDAP server URLs. It currently contains 447 service entries. The structure is an array of [tld_list, url_list] pairs:

[
[["com", "net"], ["https://rdap.verisign.com/com/v1/"]],
[["uk"], ["https://rdap.nominet.uk/uk/"]],
[["google", "youtube"], ["https://pubapi.registry.google/rdap/"]]
]

Match your TLD against the entries (longest label-wise match wins), then construct the query URL: {base_url}domain/{domain_name}. Cache the file locally with a 24-hour TTL.

If you don’t want to maintain the bootstrap logic, rdap.org acts as a redirect service — query https://rdap.org/domain/{name} and it 302-redirects to the authoritative server. But it has strict rate limits (10 requests per 10 seconds) and adds a round-trip, so direct bootstrap is better for anything beyond casual lookups.

Quick Examples

WHOIS (legacy, but still works):

Terminal window
# Raw WHOIS query over TCP
whois example.com
# Or with netcat, to see exactly what happens
echo "example.com" | nc whois.verisign-grs.com 43

RDAP (the modern way):

Terminal window
# Direct query to Verisign's RDAP server
curl -s https://rdap.verisign.com/com/v1/domain/example.com \
| python3 -m json.tool
# Via rdap.org redirect (follows 302 automatically)
curl -sL https://rdap.org/domain/example.com \
| python3 -m json.tool
# Check if a domain is available (HTTP 404 = available)
curl -s -o /dev/null -w "%{http_code}" \
https://rdap.verisign.com/com/v1/domain/thisdomainprobablydoesnotexist.com
# Returns: 404

The difference is stark. WHOIS gives you a wall of text you need to regex apart. RDAP gives you json.loads() and you’re done.

What This Means Going Forward

WHOIS isn’t fully dead yet — the servers are still running and ~189 ccTLDs depend on it exclusively. But for .com, .net, .org, and every other gTLD, RDAP is the authoritative source. New tooling should target RDAP first with WHOIS as a ccTLD fallback. If you’re checking availability at scale, a DNS pre-screen filters out the obvious “taken” domains before you hit RDAP rate limits.

The structured format also opens doors that WHOIS never could: proper error handling, authenticated access for legitimate use cases, and machine-readable responses that don’t break when a registry changes their text formatting. At scale, RDAP queries are HTTPS requests — subject to the same TLS fingerprinting and rate limiting that any HTTP client faces. Forty years of “just dump some text on port 43” is finally over.

Sources

Diagram

Drag to pan · scroll or pinch to zoom · Esc to close