How to check when a domain expires (and never let one lapse)
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
| Phase | Typical length | What it means |
|---|---|---|
| Expired, grace | 0 to 45 days | Services usually stop resolving. Renew at the normal price. |
| Redemption | about 30 days | Renewal possible but with a recovery fee, often £80 to £150. |
| Pending delete | 5 days | Nobody can renew it now. The drop is scheduled. |
| Dropped | Open 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.
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.