Security

Why a new domain is worth a closer look

When a signup, an invoice or a link points at a domain, one of the cheapest questions to ask is how long that domain has existed. A domain registered last week has no history to check, while one that has been registered for a decade has had time to build a record you can look at. Registration age proves nothing by itself, but it is a useful input to a risk score.

By LookValid data team. Published 2026-10-19.

Where registration age comes from

Registration data is served through the Registration Data Access Protocol. ICANN describes RDAP as the replacement for the WHOIS protocol, delivering WHOIS-like registration data in standardized query and response formats 1. A domain query has the form /domain/XXXX, where XXXX is a fully qualified domain name 2.

The response is a JSON domain object, and its events array carries the dates. Each event has an eventAction and an eventDate. The registered action values include registration, meaning the object was initially registered, last changed, and expiration 3. The age of a domain is the time since its registration event.

Finding the right RDAP server

There is no single RDAP server for the whole internet. Clients ask IANA's bootstrap file which server answers for each top-level domain. The file is a JSON object with a services list that pairs TLD labels with RDAP base URLs, and its entry for com points to the Verisign registry service 4. A client matches the TLD label by label, from right to left, and appends the domain path to the base URL 5.

Two practical consequences follow. A TLD that is missing from the bootstrap file has no RDAP service to ask, so you cannot read an age for it. And a name below the registered domain, such as a mail subdomain, must be reduced to the registered domain before you query.

What the domain-age product returns

The domain-age product runs that lookup for you. It reads the IANA bootstrap file, queries the registry's RDAP server, and returns the registration date, the age in whole days, the last-changed and expiry dates, the registrar, the status values and the server it used. If the registry says the domain does not exist, the answer is not_found; if the registry is rate limited or unreachable, the answer is unavailable, never not_found, so an outage is not mistaken for an unregistered domain. A name that is not a registered domain, or a TLD without an RDAP service, also comes back as not_found with a reason.

curl -X POST https://YOUR_API_HOST/v1/domain-age \
  -H "Authorization: Bearer $LOOKVALID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'

Look up a domain's age

{
  "domain": "example.com",
  "registered": true,
  "created_at": "1995-08-14T04:00:00.000Z",
  "age_days": 11387,
  "expires_at": "2027-08-13T04:00:00.000Z",
  "rdap_server": "https://rdap.verisign.com/com/v1/"
}

Excerpt of a captured example response for example.com

age_days is the number of whole days from created_at to the moment the answer was computed. A cached answer is not recomputed, so the figure can lag by the length of the cache.

Turning age into a decision

The bands below are our suggested starting policy. Tune the cut-offs on your own data, where you can see how often each band later turns out to be a problem.

Suggested age bands and how to treat each
Age in daysSuggested treatment
0 to 6Hold for manual review or step-up verification
7 to 29Allow low-value actions, review high-value ones
30 to 89Add a point to the risk score and combine with other signals
90 to 364Treat as neutral unless other signals disagree
365 and overAge adds no concern; judge on other signals

Suggested age bands and how to treat each

  • Never block on age alone: new businesses and new projects register new domains every day.
  • An old domain is not a clean one. A long-registered domain can be compromised or sold.
  • Combine age with the email domain check and the link safety check for a fuller picture.

Put it in your flow

  1. Extract the domain from the email address or URL you are scoring.
  2. Call domain-age and read age_days.
  3. Map the value to a band and add it to your risk score.
  4. Treat unavailable as "try again", not as "new".

You can try a single lookup in the free domain age checker, then add the check to your own pipeline from the domain age product page.

Sources

  1. ICANN: Registration Data Access Protocol (RDAP), read 2026-10-19
  2. RFC 9082: Registration Data Access Protocol (RDAP) Query Format, read 2026-10-19
  3. RFC 9083: JSON Responses for the Registration Data Access Protocol (RDAP), read 2026-10-19
  4. IANA RDAP bootstrap file for DNS registrations, read 2026-10-19
  5. RFC 9224: Finding the Authoritative Registration Data Access Protocol (RDAP) Service, read 2026-10-19