Moorfox
Illustration of an hourglass and a calendar on a moorland background

How to check when a domain expires (and never let one lapse)

Moorfox team · 2026-08-01 · 5 min read

Quick answer

The reliable way is RDAP, the JSON successor to WHOIS: request https://rdap.org/domain/example.com and read the expiration entry in the events list. Or use our free domain expiry checker, which does exactly that in your browser.

After expiry most registrars give roughly 30 to 45 days of grace when renewal costs nothing extra, then around 30 days of redemption at a fee of £80 or more, then the domain drops and anyone can register it. Do not plan around those windows: monitor at 60, 30 and 7 days out instead.

Domains lapse for boring reasons: the card on file expired, auto-renew was switched off during a transfer, or the one person with registrar access left the company. For an MSP the embarrassing part is that the client's email and website go down over a weekend for something a cron job could have caught a month earlier.

Checking expiry from the command line

Classic WHOIS still works for many TLDs, but its output format varies by registry and gTLD registries have been allowed to retire their port 43 WHOIS service since January 2025. RDAP is the replacement: same data, JSON, consistent field names.

# RDAP, works for com/net/org and most gTLDs
curl -s https://rdap.org/domain/example.com |
  jq -r '.events[] | select(.eventAction=="expiration") | .eventDate'

# classic whois, format varies by TLD
whois example.com | grep -i expir

rdap.org is a bootstrap service that redirects to the right registry. Some ccTLDs (notably .de) do not publish expiry dates at all; for those, only the registrar account knows.

What actually happens when a domain expires

PhaseTypical lengthWhat it means
Expired, grace0 to 45 daysServices usually stop resolving. Renew at the normal price.
Redemptionabout 30 daysRenewal possible but with a recovery fee, often £80 to £150.
Pending delete5 daysNobody can renew it now. The drop is scheduled.
DroppedOpen to anyone, including drop-catchers who registered it seconds after release.

The lengths are registry and registrar dependent, which is exactly why relying on them is a gamble. A domain with any resale value will be drop-caught the moment it releases.

Monitoring instead of remembering

A daily check across every client domain is a few lines:

#!/bin/sh
# alert when a domain is inside 30 days of expiry
for d in $(cat domains.txt); do
  exp=$(curl -s "https://rdap.org/domain/$d" |
    jq -r '.events[] | select(.eventAction=="expiration") | .eventDate')
  days=$(( ($(date -d "$exp" +%s) - $(date +%s)) / 86400 ))
  [ "$days" -lt 30 ] && echo "$d expires in $days days"
done

Check the domains your clients registered themselves, not just the ones you manage. Those are the ones nobody is watching.

The same idea, applied to machines.

Moorfox watches every managed machine the way that script watches domains: agent version, disk encryption, AV state and patch age, scored per device, so the quiet failures surface before a client notices.

Request an invite

Frequently asked questions

Can I still renew a domain after it expires?

Usually yes. Most registrars offer a grace period of 30 to 45 days at the normal price, then a redemption period of about 30 days with an extra fee. After that the domain is deleted and anyone can register it.

Why do WHOIS websites show different expiry dates for the same domain?

Some show cached data, and some show the registrar’s date while others show the registry’s. The registry’s RDAP record is authoritative for gTLDs; when in doubt, trust it over a lookup site.

What is RDAP?

RDAP (Registration Data Access Protocol) is the standardised JSON replacement for WHOIS, served over HTTPS by registries and registrars. It returns the same registration data with consistent field names, which makes it scriptable.