WHOIS Domain Lookup — Bulk Expiry & Registrar Check (RDAP)
Pricing
from $2.00 / 1,000 verifieds
WHOIS Domain Lookup — Bulk Expiry & Registrar Check (RDAP)
WHOIS domain lookup at scale: expiration date, registrar, nameservers and lock status read from the registry that owns each extension, over RDAP. You are only charged for domains whose expiry the registry actually returned.
Pricing
from $2.00 / 1,000 verifieds
Rating
0.0
(0)
Developer
Kevin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
RDAP Domain Intelligence — verified expiry, registrar and lock status
An independent tool. It is not affiliated with, endorsed by, or operated by ICANN, IANA, Verisign, Nominet, CIRA, DENIC, SWITCH, auDA, SIDN, Norid, Traficom or any registry or registrar. It queries their public RDAP services and reports what they return.
You are only charged for domains the registry actually answered for. No expiration date returned, no charge. That is the whole idea.
This Actor reads domain records over RDAP, the official successor to WHOIS
(RFC 7483/9083), straight from the registry that owns the extension — Verisign
for .com, Nominet for .uk, AFNIC for .fr, and so on. No scraping, no
HTML parsing, no third-party middleman who might be a week out of date.
What you get per domain
| Field | Meaning |
|---|---|
expiration | Expiry date, ISO-8601 with timezone |
days_until_expiration | Negative when the domain has already expired |
created | Registration date |
last_changed | Last update recorded by the registry |
registrar | Registrar name, read from the nested vCard |
registrar_iana_id | Its IANA registrar id, when published |
nameservers | Sorted, lowercased, deduplicated |
nameserver_count | |
status | EPP status codes as published |
transfer_locked | true when a client or server transfer lock is set |
unknown_fields | Fields the registry did not supply — named, never guessed |
charged | Whether this row cost you anything |
not_charged_reason | Why it did not, in plain English |
source | The exact registry URL the answer came from, so you can verify it yourself |
Add includeRaw to attach the registry's own JSON to every row, for auditing.
It does not change the price. Entities carrying personal contact details —
registrant, administrative, technical, billing — are removed before delivery.
Several country registries publish names, postal addresses, telephone numbers
and email addresses with no redaction of their own; this Actor does not pass
that on, and says so in the row with _redacted_by_actor.
The billing rule, stated plainly
Two events:
- Actor start — $0.0005, once per run. The competitors that lead this category charge no start fee at all; this one covers the container and the IANA bootstrap read, measured at about $0.00016.
- Verified domain record — $0.002, charged only when the registry returned a usable expiration date. That is below the category median and below the market leader, who charges for every lookup whether it answered or not.
You are not charged when:
- the domain does not exist at the registry,
- the registry returned no expiration date,
- the date came back in a format we refuse to guess at,
- the extension is not covered (see below),
- the registry timed out or errored.
Every one of those still lands in your dataset, with charged: false and a
not_charged_reason saying exactly what happened. A run that finds nothing
costs you $0.0005.
Coverage, measured rather than claimed
Servers come from the official IANA bootstrap registry, re-read at the start
of every run — currently 1 198 extensions, plus four additions probed and
verified individually that IANA does not list (.io, .me, .sh, .us).
On a 102-domain sample spanning eleven extensions, 94 returned a verified
expiration date and were billable. The eight that did not are all explained
below, and each came back free with that exact sentence in
not_charged_reason.
Registries that serve RDAP but never publish an expiry date. Local policy, not an outage. Each was confirmed on five or six separate domains before being listed:
| Extension | Operator |
|---|---|
.de | DENIC |
.ch, .li | SWITCH |
.nl | SIDN |
.no | Norid |
.fi | Traficom |
.au | auDA |
No request is even sent for these, and the row names the operator so you can confirm it yourself in ten seconds.
Namespaces administered apart from their parent registry. .ac.uk,
.gov.uk, .nhs.uk, .mod.uk, .police.uk and .sch.uk are not run by
Nominet and publish no RDAP service of their own. Ordinary .uk and .co.uk
domains are fully supported — bbc.co.uk returns its expiry normally.
Excluded by registry terms. .ca — CIRA's RDAP terms forbid this kind of
batch, commercial lookup (see "Registry terms" below). No request is ever sent
for a .ca domain; the row comes back free, naming CIRA and the clause.
Extensions with no public RDAP at all: .co, .jp, .cn, .ru, .es,
.it, .se, .dk, .at, .be, .nz, .za and others. Probed one by one on
2026-08-18 against every published operator address; none answered.
This is a property of the RDAP ecosystem, not of this Actor. It is stated here rather than discovered on your invoice.
Typical uses
- Portfolio monitoring — check the domains you own or manage and alert on
days_until_expiration < 30. - Acquisition — find out when a name you want actually drops.
- Due diligence — confirm a counterparty's domains are locked and not about to lapse.
- Security review — spot nameserver changes and missing transfer locks across an estate.
Input
{"domains": ["google.com", "lemonde.fr", "bbc.co.uk", "github.io"],"includeRaw": false}
Give registrable domains: google.com, bbc.co.uk. A URL is reduced to
its host, but the host is then queried as written — www.google.com is not the
same name as google.com, and no registry holds a record for it. Strip the
www. yourself.
Duplicates, casing and trailing dots are normalised, so Google.COM,
google.com. and google.com count as one domain and are charged once. A run
is capped at 5000 domains; beyond that the first 5000 are kept and the log
says so.
Set a maximum cost per run in the Actor's settings and the run stops cleanly when it is reached, telling you how many domains were left untouched. Your list order is preserved, so put what matters first.
Output
{"domain": "google.com","expiration": "2028-09-14T04:00:00+00:00","days_until_expiration": 757,"created": "1997-09-15T04:00:00+00:00","last_changed": "2019-09-09T15:39:04+00:00","registrar": "MarkMonitor Inc.","registrar_iana_id": "292","nameservers": ["ns1.google.com", "ns2.google.com", "ns3.google.com", "ns4.google.com"],"nameserver_count": 4,"status": ["client delete prohibited", "client transfer prohibited"],"transfer_locked": true,"unknown_fields": [],"charged": true,"not_charged_reason": "","source": "https://rdap.verisign.com/com/v1"}
A SUMMARY.json lands in the key-value store with the counts and a breakdown
of every reason a domain was not charged — so a registry outage looks like a
registry outage, not like a quiet drop in your results.
Rate limits and politeness
Requests are spaced per registry, not globally. A hundred .com domains
are a hundred requests to one registry and are paced accordingly; a hundred
domains spread over twenty extensions are only five per registry and run at
full speed. Transient 429/5xx responses are retried.
A registry that answers 429 gets more room, and only that registry — the
delay for it doubles and stays doubled for the rest of the run, while every
other registry keeps running at full speed.
A 404 is taken as that registry's final answer, and the message says which
registry answered — because "not found" is only ever a fact about one server,
never about the world. Measured throughput: 102 domains across eleven
extensions in 36.7 seconds.
Registry terms — read this before you scale
Registry RDAP services are published so that people can look up domains, and
several registries put limits in writing on what may be done with the answers.
.ca is excluded entirely as of 2026-08-19: CIRA permits RDAP use only to
identify or contact a domain holder and prohibits aggregation, commercial and
market-research use, and automated multi-query access — exactly what a batch
lookup tool does, regardless of how the customer intends to use one row of it.
A .ca domain in your input list comes back free, with that reason, and no
request is ever sent to CIRA's registry. The .us registry prohibits
high-volume automated processes. Verisign reserves the right to restrict
access at its sole discretion.
Checking domains you own or administer is the use this Actor is built for. Compiling registrant data across domains you have no relationship with is not, and this Actor is not sold for it. The practical consequence of ignoring that is not a courtroom — it is an IP block, which is a reliability problem for everyone using the tool.
Why trust the numbers
Every row that got an answer names the registry URL it came from in source.
Rows that got no answer carry the reason instead. Check any of them yourself:
$curl -H 'Accept: application/rdap+json' https://rdap.verisign.com/com/v1/domain/google.com
You should get the same expiration date this Actor reported.