Bulk WHOIS and Domain Availability Checker (RDAP) avatar

Bulk WHOIS and Domain Availability Checker (RDAP)

Pricing

from $1.50 / 1,000 domain checkeds

Go to Apify Store
Bulk WHOIS and Domain Availability Checker (RDAP)

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

Baptiste Bouton

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

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) or unknown (DNS and the registry could not tell; not charged). available is true, false or null for 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 as client 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: dns or rdap) 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

FieldDescriptionDefault
domainsDomain names, up to 10,000 per run. URLs and subdomains are reduced to the registrable domain
namesNames without extension, combined with every extension in tlds
tldsExtensions for names, such as com, io, fr
includeDatesAsk the registry RDAP server for the dates, status and registrar of taken domainsfalse
confirmWithRdapAsk the registry RDAP server about the domains DNS shows as free. Off: those rows stay likely-availabletrue

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 rdapStatus no-rdap-server: free-looking names there stay likely-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 rdapStatus cap-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 unknown unless 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 rdapStatus rate-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.