Bulk WHOIS and Domain Availability Checker (RDAP)
Pricing
from $1.50 / 1,000 domain checkeds
Bulk WHOIS and Domain Availability Checker (RDAP)
Check up to 10,000 domains a run: taken or free, plus expiry dates and registrar on request. The registry confirms free names for 100 domains per account a day, not on extensions without RDAP (.io, .co, .de); beyond that a free name is "likely-available", not charged. No contact data. $2 per 1,000.
Pricing
from $1.50 / 1,000 domain checkeds
Rating
0.0
(0)
Developer
Baptiste Bouton
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Bulk Domain Availability Checker with RDAP Expiry Dates
Paste domain names, or a few names plus the extensions you want, and get one row per domain: free or taken, nameservers and, if you ask for it, the registry record with creation and expiry dates, EPP status and registrar. The record comes from RDAP, the official replacement of WHOIS. Holder data is never returned. Up to 10,000 domains per run, $2 per 1,000. No API key, no login.
A domain is marked available only when the registry of its extension confirms it over RDAP. DNS alone is not enough:
many registered names have no nameservers (on hold, parked, expired) and look free in DNS. When the registry cannot
confirm, the row says likely-available and is not charged.
What you get
- Availability:
available(the registry answered "not found"),registered,likely-available(no DNS delegation, registry not asked or could not answer; not charged) orunknown(DNS and the registry could not tell; not charged).availableistrue,falseornullfor the last two. - Nameservers of taken domains, from DNS.
- Registry record (with
includeDates, or when the registry is asked to confirm): creation, expiry and last update dates, EPP status codes such asclient transfer prohibited, DNSSEC, registrar name and IANA ID. The registrar name is given only with a valid IANA registrar ID, so a registry that puts the holder there (Nominet for .uk) gives none. - How the answer was found (
method:dnsorrdap) and why a registry request was skipped (rdapStatus).
The Actor never returns the holder of a domain, contacts, postal addresses or abuse contacts, even when a registry publishes them.
Use cases
- Check a brainstorm of brand or product names on .com, .net, .io and your country extension in one run.
- Find the domain expiration date of your own domains, or of domains you want to buy when they drop.
- Clean a list of websites: find the domains that no longer exist before an outreach or a migration.
- Audit a domain portfolio: registrar, EPP locks and DNSSEC for every name.
Input
| Field | Description | Default |
|---|---|---|
domains | Domain names, up to 10,000 per run. URLs and subdomains are reduced to the registrable domain | |
names | Names without extension, combined with every extension in tlds | |
tlds | Extensions for names, such as com, io, fr | |
includeDates | Ask the registry RDAP server for the dates, status and registrar of taken domains | false |
confirmWithRdap | Ask the registry RDAP server about the domains DNS shows as free. Off: those rows stay likely-available | true |
Example:
{ "names": ["acme", "acmelabs"], "tlds": ["com", "net", "io"] }
Output
Real output of runs on 28 and 29 October 2026 with includeDates on. eager.com has no name servers, so DNS alone would call it free: the registry shows it has been registered since 1996. The .ws row comes from a run on 28 October:
[{"domain": "eager.com","tld": "com","available": false,"availability": "registered","method": "rdap","nameservers": [],"rdapStatus": "ok","status": ["client delete prohibited","client transfer prohibited","client update prohibited"],"createdAt": "1996-08-27T04:00:00Z","expiresAt": "2027-08-26T04:00:00Z","updatedAt": "2026-07-28T03:49:03Z","registrarName": "Tucows Domains Inc.","registrarIanaId": "69","dnssec": false,"rdapServer": "https://rdap.verisign.com/com/v1/","checkedAt": "2026-10-29T00:22:03.409Z","error": null},{"domain": "zz9q-free-test-7k2.com","tld": "com","available": true,"availability": "available","method": "rdap","nameservers": [],"rdapStatus": "ok","status": [],"createdAt": null,"expiresAt": null,"updatedAt": null,"registrarName": null,"registrarIanaId": null,"dnssec": null,"rdapServer": "https://rdap.verisign.com/com/v1/","checkedAt": "2026-10-29T00:22:04.420Z","error": null},{"domain": "zq964e74e2.ws","tld": "ws","available": null,"availability": "unknown","method": null,"nameservers": [],"rdapStatus": "no-rdap-server","status": [],"createdAt": null,"expiresAt": null,"updatedAt": null,"registrarName": null,"registrarIanaId": null,"dnssec": null,"rdapServer": null,"checkedAt": "2026-10-28T08:18:55.931Z","error": ".ws answers every name (wildcard): DNS cannot tell whether this one is registered"}]
Sources, speed and limits
- DNS: a nameserver lookup for every domain, 10 at a time. In a test run, 1,000 domains took 39 seconds.
- RDAP: the official registry server of each extension, taken from the
IANA list. Verisign answers for .com and .net, Public Interest Registry for
.org, and so on. Extensions without an RDAP server (.de, .io, .co, .es, .it, .eu, .ch among others) get the DNS answer
only, with
rdapStatusno-rdap-server: free-looking names there staylikely-available. If the IANA list cannot be loaded, the whole run works that way and says so in the log. - Registry requests go out at most one per second per registry and 100 per account per day (UTC), retries included.
Past this limit the domains keep their DNS answer, with
rdapStatuscap-reached. - Some extensions (.ws, .ph) answer every name in DNS. The Actor tests one random name per extension and run; on such
an extension a name without nameservers is
unknownunless the registry answers. - If a registry answers "too many requests" (HTTP 429 or 403), the run sends it nothing more and the next domains on
it get
rdapStatusrate-limited. The Actor never works around such a limit and never queries registrar servers.
Pricing
$0.002 per domain ($2 per 1,000), with volume discounts for higher Apify plans. The registry options cost nothing
extra. Rows with availability likely-available or unknown are free, and duplicates are removed before checking. Set a maximum cost
per run in the Apify Console to cap the spend.
Integrations
Run it from the Apify API, a schedule, Make, Zapier or n8n and send the rows to Google Sheets, Airtable or a database.
A weekly schedule with includeDates on your own domains is an easy expiry reminder.
FAQ
Is a domain shown as free really free? available means the registry has no record of it. DNS alone is not
reliable: in a test on 1,000 domains (200 common English words on .com, .net, .org, .io and .fr), DNS showed 15 as
free and all 15 were registered. That is why such names are only likely-available until the registry confirms. A
confirmed name can still be reserved or sold at a premium price, so check at your registrar before you buy. Names under
zones kept for eligible bodies (gouv.fr, gov.uk, ac.uk, nhs.uk, .gov, .edu and similar) are never available: at best
likely-available, not charged, with the reason in error.
Why do some rows have no dates? The extension has no RDAP server, the option was off, or the run or daily
registry limit was reached. rdapStatus tells which.
Does it return WHOIS contacts? No. It never outputs holder, contact, address or abuse data.
Can I enter subdomains? Yes, but only the registrable domain is checked, from the Public Suffix List:
blog.example.co.uk gives one row for example.co.uk.
Related Actors
- Tech Stack Detector: the technologies behind the websites of the domains that are taken.
- Broken Links Checker: find dead links on a site, then check whether the linked domains still exist.