Domain RDAP Lookup & Expiry Watch avatar

Domain RDAP Lookup & Expiry Watch

Pricing

from $1.50 / 1,000 domain lookups

Go to Apify Store
Domain RDAP Lookup & Expiry Watch

Domain RDAP Lookup & Expiry Watch

Monitor your own domain portfolio: registrar, status, dates, and nameservers, plus expiry and registration changes. Hard cap of 5,000 domains. Not a lead list.

Pricing

from $1.50 / 1,000 domain lookups

Rating

0.0

(0)

Developer

Mike Berckmoes

Mike Berckmoes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 days ago

Last modified

Categories

Share

What does Domain RDAP Lookup & Expiry Watch do?

Look up domains you operate and, when you want, watch them for expiry and registration changes. Each name is read from the registry's RDAP service (the Registration Data Access Protocol), using the IANA RDAP bootstrap plus hand-added servers for .de, .ch, .us and .co.

This is a portfolio monitor. It is not a lead list, not a bulk availability checker, and not a source of registrant contacts. Registrant and contact entities are dropped and are never written to the dataset or to the saved snapshot.

Why use an RDAP lookup for your own domains?

  • One row per domain: registrar, IANA registrar id when published, created / updated / expiry times, EPP statuses, nameservers and whether DNSSEC delegation is signed.
  • An honest supportLevel (full, limited or unsupported) instead of a silent empty date.
  • Watch mode stores one snapshot per watchlist and emits a typed change alert: expiry soon, registrar, nameservers, status, DNSSEC, dropped, or newly registered.
  • Scheduling, dataset export and the Apify API are available on the platform. The Actor does not use proxies.

What data can you extract?

FieldMeaning
domain, tld, registeredName, registry suffix, and whether RDAP returned 200 (true) or 404 (false). Null if the name is unsupported or the registry was blocked.
registrar, registrarIanaIdRegistrar only. No registrant, admin or tech contacts.
createdAt, expiresAt, updatedAt, daysToExpiry, domainAgeDaysRegistry events. .nl and .de do not publish an expiry date.
statuses, nameservers, dnssecSignedEPP statuses and nameservers (lower case, no trailing dot).
supportLevel, errorfull, limited (.de, .ch) or unsupported. source_unavailable means this run could not use that registry.
changeType, field, before, afterWatch alert. Only the field that changed is included.

A 404 means the RDAP server has no registration record. It does not mean the name is available to register. Reserved and premium names can also 404.

How to look up your domains

  1. Open the Actor and add the domain names you administer under Domains you operate (maximum 5,000 per run).
  2. Leave Mode on Lookup for a one-off check, or switch to Watch and set a Watchlist ID you will reuse.
  3. For watch runs, keep Expiry window at 30 days (or widen it) and choose the alert types you want. Schedule the same input daily or weekly.
  4. Run the Actor. Download the dataset as JSON, CSV, Excel or via the API. The key RUN_SUMMARY in the default key-value store has the counts.

The first watch run stores a baseline and emits no alerts. Later runs emit one alert per change. EXPIRY_SOON fires once per domain per expiry date.

How much will it cost to look up domains?

Pay per event, with no start fee. Runs use 128 MB of memory and no proxies.

EventWhen it is chargedPrice
domain-lookupRDAP answered HTTP 200 or 404$0.0015
change-alertOne watch-mode alert row$0.003

Invalid names, unsupported endings and blocked registries are not lookup events. A charge limit stops the run cleanly: rows that were not stored are not marked as seen, so the next run can deliver them instead of charging them twice or dropping them. Do not also price the default dataset-item event, or error rows would be billed as well.

A lookup of 100 of your domains is about two minutes at the default one-request-per-second pace per registry, plus a few seconds of compute at 128 MB. The IANA bootstrap file is cached for 24 hours, so repeat runs do not download it again the same day.

Input

See the input tab for every field. domains is the list of names you operate. mode is lookup or watch. watchlistId selects the saved snapshot. delayMsPerRegistry defaults to 1000 ms and cannot go below 200 ms. maxConcurrencyPerRegistry is fixed at 1.

Output

You can download the dataset in JSON, HTML, CSV or Excel.

Lookup row:

{
"kind": "lookup",
"domain": "example.com",
"tld": "com",
"registered": true,
"rdapServer": "https://rdap.verisign.com/com/v1/",
"registrar": "Example Registrar",
"registrarIanaId": "292",
"createdAt": "1997-09-15T04:00:00Z",
"expiresAt": "2028-09-14T04:00:00Z",
"updatedAt": "2019-09-09T15:39:04Z",
"daysToExpiry": 700,
"statuses": ["client transfer prohibited"],
"nameservers": ["ns1.example.com", "ns2.example.com"],
"dnssecSigned": false,
"supportLevel": "full",
"error": null
}

Watch alert (only the changed field):

{
"kind": "change",
"domain": "example.com",
"changeType": "NAMESERVER_CHANGE",
"field": "nameservers",
"before": ["ns1.example.com"],
"after": ["ns1.example.net", "ns2.example.net"]
}

Watch state is a single gzipped record per watchlist in the named store rdap-watch-state. Each domain is stored as a hash of the watched fields. The record also keeps those compact fields so the next run can show before and after. The changed object in that record lists full values only for fields that changed on the last run. The bootstrap file is the other record in that store and is refreshed at most once a day.

Registry support

EndingSupportServer
.com, .netfullVerisign, from the IANA bootstrap
.orgfullPublic Interest Registry
.uk (including example.co.uk)fullNominet
.nlfull, but expiresAt is nullSIDN
.co, .usfullHand-added (rdap.registry.co, rdap.nic.us)
.de, .chlimitedHand-added. .de has no registrar or expiry. .ch publishes a registration date.
.eu, .io, .me, .be, .it, .es, .at, .se, .dk, .jp, .cn, .ruunsupported in v1No request is sent

Other endings that are absent from the bootstrap and from the hand-added list are also unsupported.

Terms, rate limits and blocked registries

Use this Actor to monitor names you administer. Verisign's RDAP terms say: "under no circumstances will you use the data to: (1) allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising … or (2) enable high volume, automated, electronic processes that send queries or data to the systems of Verisign or an ICANN-accredited registrar" (Verisign RDAP terms). Public Interest Registry (.org) publishes the same restrictions in its RDAP notice. DENIC (.de) says the data "may only be used within the scope of technical or administrative necessities of Internet operation or to remedy legal problems. The use for other purposes, in particular for advertising, is not permitted."

The Actor caps a run at 5,000 names, sends one request at a time per registry, and waits at least one second between those requests. It honours Retry-After up to 120 seconds (a 62 second wait is waited out). A longer block, including a multi-hour Retry-After, marks that registry source_unavailable for the rest of the run. The run still finishes successfully. There is no proxy and no attempt to route around a block.

FAQ, disclaimers and support

This Actor is not affiliated with IANA, ICANN, Verisign, PIR, DENIC, SWITCH, SIDN or any other registry. It reads public RDAP only.

Questions and bugs: use the Issues tab on the Actor page. Programmatic runs use the API tab.

Do I need an API key? No. RDAP servers used here are public. Bring the domain names yourself.

Will it tell me a name is free to register? No. registered: false is only an RDAP 404.

What if a registry rate-limits the platform IP? That registry's rows come back as source_unavailable and are not charged (once pricing exists). Run again later. The Actor will not try to evade the block.