Skip to content
ssldays

Guide

WHOIS expiration date alternatives (RDAP)

When WHOIS throttles or redacts data, use RDAP and registrar portals for domain expiration dates alongside TLS certificate notAfter monitoring.

Updated Apr 10, 2026 1,180 words

Reliable whois expiration date answers now come from RDAP and registrar APIs more often than classic port-43 WHOIS—pair domain events with TLS notAfter so renewals do not stall.

Certificate teams obsess over notAfter while domain admins ignore registrar billing until ACME DNS-01 fails. Traditional WHOIS queries were the old standard, but rate limits, GDPR redaction, and deprecated formats make them brittle for automation.

The mistake is assuming a green TLS monitor means the domain is safe for another year. Another is scraping WHOIS from a single registry mirror and caching an expiration date that lagged behind a stealth renewal.

You will query RDAP for authoritative expiration events, fall back to registrar consoles when needed, and relate domain lifetime to certificate monitoring without confusing the two clocks.

What to check

Domain registration expiry (registrar renewal date) lives in RDAP/WHOIS events, often labeled expiration or registrar expiration. It governs whether the name resolves and whether you can validate control for the next cert.

TLS certificate expiry (notAfter on the leaf) is independent. A domain can be paid through 2027 while the cert expires next Tuesday, and the opposite failure mode also happens.

WHOIS on port 43 may still work for some TLDs, but responses can be truncated, throttled, or missing dates after privacy redaction. RDAP (JSON over HTTPS) is the modern replacement defined for most gTLDs and many ccTLDs.

Check status flags (clientHold, pendingDelete) in RDAP—these can break HTTPS before the printed expiration date.

For multi-part estates, track registrar, nameservers, and DNSSEC status alongside expiration; they affect renewal workflows even when dates look distant.

Classic WHOIS output varied by registry text templates, making parsers fragile. RDAP JSON uses predictable keys, which is why new monitoring tools standardize on HTTPS queries even when port 43 still answers for legacy scripts.

Finance teams care about auto-renew flags at the registrar, which neither WHOIS nor RDAP always exposes. After you pull RDAP expiration, log into the registrar portal quarterly to confirm billing instruments and auto-renew toggles—do not treat public protocol data as a full subscription record.

Transfers reset sponsorship and can shift which RDAP server is authoritative. Re-query expiration after every transfer and keep the prior registrar’s confirmation emails attached to the asset record.

Step-by-step

1. RDAP lookup via curl (preferred)

Replace example.com with your domain. Many registries respond at a bootstrap URL; the IANA RDAP bootstrap redirects you to the correct server.

DOMAIN=example.com
curl -sS "https://rdap.verisign.com/com/v1/domain/${DOMAIN}" | jq '.events[] | select(.eventAction|test("expiration"))'

TLD determines which RDAP server answers first.

If jq is unavailable, read the raw JSON for an events array entry with eventAction expiration and note eventDate.

For other TLDs, discover the RDAP base URL:

curl -sS "https://data.iana.org/rdap/dns.json" | grep -i "\".${DOMAIN##*.}\"" | head -n 3

TLD determines which RDAP server answers first.

Then call the listed url pattern for your domain’s suffix.

2. WHOIS fallback (when RDAP is unavailable)

whois example.com | grep -iE 'expir|paid|renew'

TLD determines which RDAP server answers first.

Port-43 WHOIS may rate-limit automated runs—space queries and respect registry AUP.

3. PowerShell (Windows)

$Domain = "example.com"
Invoke-RestMethod -Uri "https://rdap.verisign.com/com/v1/domain/$Domain" |
  Select-Object -ExpandProperty events |
  Where-Object { $_.eventAction -match 'expiration' }

TLD determines which RDAP server answers first.

4. Correlate with TLS

echo | openssl s_client -connect "www.${DOMAIN}:443" -servername "www.${DOMAIN}" 2>/dev/null \
  | openssl x509 -noout -dates

SNI must match the public hostname you test.

Document both domain expiration eventDate and certificate notAfter in the same inventory row.

Registrar RDAP endpoints (GoDaddy, Namecheap, Google Domains successors, etc.) may return richer data than registry-only queries for reseller-managed names. When registry RDAP redacts events, fall back to the sponsoring registrar’s RDAP or API using credentials stored in your secrets manager—never in tickets.

Batch estates with a shell loop only when registry rate limits allow:

while read -r d; do
  echo "=== $d ==="
  curl -sS "https://rdap.verisign.com/com/v1/domain/${d}" | jq -r '.events[] | select(.eventAction|test("expiration")) | .eventDate'
done < domains.txt

TLD determines which RDAP server answers first.

Sleep between iterations if the registry documents throttling thresholds.

How to read the output

RDAP events entries pair eventAction with eventDate in ISO 8601 UTC. expiration (or registry-specific variants) is what finance and infra should track for registrar invoices.

status arrays like clientTransferProhibited are normal; clientHold or pendingDelete mean urgent registrar work even if expiration looks future.

WHOIS text lines such as Registry Expiry Date should match RDAP when both are authoritative. If they diverge, trust the registrar portal or RDAP from the registry operator over cached third-party sites.

OpenSSL notAfter describes TLS material only. Never substitute domain expiration for cert renewal schedules or vice versa.

Redacted WHOIS contacts do not remove expiration events—if dates are missing, your query hit a privacy proxy or wrong WHOIS server for the TLD.

Some ccTLDs publish registration and registry expiry separately for grace/redemption math. RDAP remarks may explain local policy—read them before assuming a single universal expiration event covers redemption deadlines.

last changed events are not expiration. Parsers must filter eventAction carefully instead of grabbing the first date in the JSON array.

Common mistakes

Monitoring only TLS and missing a lapsed domain that removes DNS entirely—users see resolution failures before cert expiry logic even runs.

Hitting WHOIS hundreds of times per hour from one IP and getting empty responses, then assuming the domain has no expiration metadata.

Using aggregator websites with stale caches instead of registry RDAP for contractual renewal dates.

Renewing the certificate while the domain sat in redemption—ACME and OV revalidation fail until registrar billing restores the name.

Confusing registry versus registrar expiry on ccTLDs with special rules; read RDAP remarks when present.

Storing WHOIS scrape results in wikis without refresh dates caused teams to renew TLS while domains quietly entered clientHold—automate RDAP instead of copying static wiki tables.

Legal review sometimes forbids automated registrar API keys; in that case assign a human domain calendar owner who still runs RDAP manually monthly and signs attestations.

When to use automation

Automate RDAP expiration polling per domain with the same discipline as TLS notAfter checks. Alert finance and infra weeks before domain events, not on the last day.

Combine domain and TLS timelines in one dashboard so ACME DNS-01 and email validation do not surprise you after registrar neglect. ssldays emphasizes live certificate checks; extend playbooks to registrar APIs or RDAP for complete coverage.

When WHOIS is blocked, prefer RDAP JSON parsers in monitoring tools over screen-scraping. Re-verify after transfers—RDAP events updates when sponsorship changes.

See test an SSL certificate online for handshake checks after you confirm the domain still resolves post-renewal.

Integrate RDAP polling into the same incident channel as TLS expiry pages but with different runbooks—mixing them confuses responders who try to “renew SSL” when registrar billing is the blocker.

For multinational brands, map each TLD to its bootstrap server once in configuration management rather than hardcoding Verisign queries for every country domain.

After acquiring subsidiaries, run RDAP on their legacy domains before merging certificate monitoring—you may inherit registrar contracts about to lapse.

Align with how to fix an expired SSL certificate only after DNS delegation is healthy; fixing PEM files on a suspended domain wastes engineering hours.

Document privacy proxy services: they mask WHOIS contacts but should not mask expiration—if they do, escalate to the registrar named in RDAP entities.

ICANN RDAP conformance tooling publishes implementation notes per registry—bookmark the page for your largest TLD portfolio segment so engineers know which JSON fields are optional versus guaranteed.

Developers sometimes parse WHOIS with regex from Stack Overflow snippets; replace those cron jobs with RDAP to survive template changes and GDPR field removals without 3 a.m. parser fires.

Internationalized domain names (IDN) require punycode in RDAP URLs (xn-- labels). Queries with Unicode labels in curl paths fail mysteriously when teams skip IDNA conversion.

Separate brand domains from infrastructure domains in monitoring dashboards. Infrastructure names expiring break CI artifact hosting and internal SSO long before customers notice the public storefront cert.

WHOIS referral responses pointing to another server confused legacy scripts; RDAP bootstrap files encode the correct hop—teach engineers to start at IANA data rather than guessing whois.nic.* hosts.

When legal holds freeze domain transfers, expiration still advances—calendar reminders must continue even if M&A pauses registrar projects.

Pair WHOIS alternatives with mailbox alerts from registrars (expiration notices) as a secondary channel; RDAP is authoritative for automation, email is a human backup when API keys rotate.

Frequently asked questions

Why is expiration missing in WHOIS output?

GDPR/privacy redaction, rate limiting, or querying the wrong WHOIS server for the TLD. Switch to registry RDAP or the registrar control panel.

Does domain expiry break existing TLS immediately?

Often DNS and HTTP challenges fail first; already-issued certs may work until notAfter unless registrars pull delegation. Treat domain expiry as equally urgent.

Can I get expiration from DNS?

No. DNS does not publish registrar billing dates. Use RDAP or registrar APIs.

Should ssldays replace RDAP monitoring?

Use both: external TLS for notAfter, RDAP or registrar tools for domain events. They solve different failure modes in the same renewal story.

See what the server presents right now

Free live certificate check — no signup.