Domain Availability Checker: Expiry & Drop Date avatar

Domain Availability Checker: Expiry & Drop Date

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Domain Availability Checker: Expiry & Drop Date

Domain Availability Checker: Expiry & Drop Date

A bulk domain expiry checker and availability checker over RDAP. Free, registered or reserved; where the name sits in the delete lifecycle (grace, redemption, pendingDelete); when it could drop; whether it can be transferred today; and what every EPP status means.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Ai-Q Labs

Ai-Q Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

A bulk domain expiry checker and availability checker built on RDAP. Paste a list of domains — or a list of bare names plus the TLDs to try — and get one row per domain.

Most availability checkers answer one question: taken, or free. That leaves the three questions people actually act on unanswered:

  1. If it's taken, is it on its way out — and when could I register it?
  2. Can it be moved to another registrar today, or is something blocking that?
  3. What do all those status codes on the WHOIS record mean?

This Actor answers all three, and refuses to answer the first one when it cannot do so honestly.

The delete lifecycle, not just a yes/no

A domain does not go from registered to free. For gTLDs it walks a fixed path, and where it currently stands tells you exactly what is possible:

StageWhat it meansCan you register it?
activeNormal serviceNo
auto_renew_graceExpired, in the registrar's grace window (up to 45 days)No — the owner can still renew at the normal price
redemptionDeleted, in the 30-day Redemption Grace PeriodNo — only the owner can restore it, for a large fee
pending_deleteThe final 5 days before releaseNot yet — but this is the window to watch
on_holdSuspended in DNS by the registrar or registryNo
no_nameserversRegistered but not delegated anywhereNo
reservedHeld back by the registryNo
availableNot registeredYes

Every row carries the window: dropWindowEarliest, dropWindowLatest, dropWindowConfidence and — the field that matters — dropWindowBasis, the reasoning in one sentence.

dropping-name.com pending_delete high pendingDelete lasts 5 days for gTLDs,
counted from the last registry change (2026-07-28).
lapsed-name.com redemption medium Redemption started around 2026-07-25: 30 days of
redemption plus 5 days of pendingDelete.
someones-brand.com active low Only reachable if the owner lets it expire on
2027-03-04 and never renews, which is the
exception rather than the rule.

Confidence is high only inside pendingDelete, where the remaining window is a fixed five days. For a domain still in service it is low, and the basis says why — because the overwhelmingly likely outcome is that the owner renews. No single date is ever presented as a fact when it is an inference.

It will not tell you a domain is free unless it knows

This is the failure mode that costs money: a checker reports available, you build a plan around the name, and it was never free at all.

Two guards, both on by default:

1. The TLD must actually have an RDAP service. RDAP signals "not registered" with HTTP 404 — and so does a base URL for a TLD that never had RDAP, or quietly stopped. Those are indistinguishable from the response alone. So the run starts by loading IANA's official RDAP service list and checks the TLD is on it. If it isn't, the verdict is unknown with rdap_not_supported, never available.

That is not a theoretical case. In a live run today, of nine TLDs probed, .mil, .edu, .cu and .bd had no IANA-listed RDAP service — every name under them would 404, and a checker that trusted the 404 would call the entire namespace free.

2. DNS gets a veto. A name that resolves, has name servers, or accepts mail is registered whatever RDAP said. When the two disagree the row comes back unknown with dns_contradicts_rdap and says which signal contradicted which.

If the IANA list itself cannot be fetched, every verdict in that run is downgraded to unknown rather than guessed.

Transfer readiness

Two independent brakes stop a registrar transfer, and both are reported:

  • Lock statusesclientTransferProhibited (the owner can remove this) and serverTransferProhibited (the registry set it).
  • ICANN's 60-day rule — no transfer within 60 days of registration or of a previous transfer. Computed from the RDAP event dates, so you get transferBlockedUntil as a date rather than a rule to remember.

transferable is a plain boolean; transferBlockers explains each reason in a sentence. An ordinary transfer lock is not reported as a problem — nearly every well-run domain carries one — so a clean row stays clean.

Every status explained

RDAP hands back status codes and expects you to know them. statusMeanings gives each one a sentence:

redemption period: Deleted and in the 30-day Redemption Grace Period. Only the current
owner can restore it, for a large fee. It cannot be registered by
anyone else yet.
server hold: The registry itself has suspended the domain in DNS. Nothing resolves.
add period: Registered within the last 5 days. The registrar can still delete it
for a refund.

Both spellings are handled — RDAP's spaced form (client transfer prohibited) and the raw EPP camelCase (clientTransferProhibited) that many servers return.

Input

{
"domains": ["apify.com", "example.com", "myidea"],
"tlds": ["com", "net", "io"],
"crossCheckDns": true,
"onlyAvailable": false
}

Three input shapes, because all three are how people arrive at this problem:

  • A full domainexample.com, used as written
  • A URLhttps://www.example.com/page, reduced to the host
  • A bare namemyidea, expanded across tlds into myidea.com, myidea.net, myidea.io

Internationalised names are converted to punycode, so 日本.jp works. Subdomains climb to the registrable name: www.example.co.uk is answered with example.co.uk, multi-level suffix and all.

A bare name with no tlds list is reported as skipped, not guessed at.

OptionDefaultWhat it does
crossCheckDnstrueLet DNS veto a wrong "available".
onlyAvailablefalseKeep only free names — for screening a long candidate list.
onlyIssuesfalseKeep only warnings and errors: expiring, expired, suspended, in redemption, unverifiable.
maxConcurrency8Lookups in flight. Registry RDAP servers rate-limit; raising this on a long list produces errors, not speed.
requestTimeoutSecs20Per-request timeout.
dnsServers[]Resolve against specific servers, e.g. 1.1.1.1.
maxDomains20000Cap per run, applied after TLD expansion.

Output

FieldMeaning
verdict / verdictBasisavailable, registered, reserved or unknown — and the evidence behind it.
severity / issues / notesok/info/warning/error, the codes, and one sentence each.
lifecycleStage / lifecycleMeaningWhere the name sits in the delete path.
dropWindow*Earliest, latest, confidence and the reasoning.
expiresAt / daysUntilExpiry / registeredAt / domainAgeDays / lastChangedAt / transferredAtThe dates.
registrar / registrarIanaId / registrantOrg / abuseEmailWho holds it and who to contact about abuse.
transferable / transferLocked / transferBlockedUntil / transferBlockersTransfer readiness.
statuses / statusMeaningsRaw codes, and what each one means.
nameservers / dnssec / dnsResolves / dnsHasMxDelegation and DNS reality.
rdapServer / rdapQueried / rdapErrorWhich server answered which question.

Issue codes: available, expired, expires_within_7_days, expires_within_30_days, in_redemption, pending_delete, on_hold, no_nameservers, no_expiry_published, transfer_blocked_60_day_rule, rdap_not_supported, dns_contradicts_rdap, bootstrap_unavailable, rdap_error.

A SUMMARY record in the key-value store holds the totals plus droppingSoonest — the names with a real drop window, sorted by date.

Dataset views: Overview, Drop watch, Transfer readiness, Statuses explained.

How it behaves

  • RDAP over HTTPS, and DNS. Nothing is scraped, no HTML is fetched, no page is rendered. Queries go to the registry servers IANA publishes for that TLD.
  • One RDAP request per domain in the normal case, against the registry's own server. The IANA service list is fetched once per run and cached.
  • A subdomain costs one extra request as it climbs to the registrable name.
  • Concurrency defaults to a deliberately modest 8, because registry RDAP servers rate-limit.
  • An honest user agent that identifies the Actor and links back to this page.

Limits, stated plainly

  • The drop windows are gTLD arithmetic. The 45/30/5-day chain is ICANN policy for gTLDs; ccTLDs set their own rules and some have no redemption period at all. Read dropWindowBasis before acting on a date.
  • Registrars differ on grace periods. The auto-renew window is up to 45 days but many registrars use less, which is why the window has two ends.
  • Not every registry publishes everything. Some omit the expiry date, some omit the registrant, some omit the entry date for a status. Where a fact is missing the field is null and, where it changes the answer, an issue says so — no_expiry_published, or a dropWindowBasis that admits the entry date was not published.
  • available means "free according to the registry and absent from DNS", not "cheap" and not "unclaimed as a trademark". Premium and registry-reserved names can still be refused at checkout.
  • Registry RDAP servers rate-limit. A long list at high concurrency will produce rdap_error rows rather than wrong answers.

Built by Ai-Q Labs. Verified by 49 unit tests and 40 live checks against the real IANA bootstrap and real registry servers before publishing.