RDAP Bootstrap Coverage and Server Conformance Ledger by TLD avatar

RDAP Bootstrap Coverage and Server Conformance Ledger by TLD

Pricing

$5.00 / 1,000 tld_checks

Go to Apify Store
RDAP Bootstrap Coverage and Server Conformance Ledger by TLD

RDAP Bootstrap Coverage and Server Conformance Ledger by TLD

Check which TLDs have an RDAP server in the IANA bootstrap file, which servers answer correctly, and what a 404 means for each server.

Pricing

$5.00 / 1,000 tld_checks

Rating

0.0

(0)

Developer

kingii98

kingii98

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Categories

Share

This Actor checks RDAP (Registration Data Access Protocol) coverage for each TLD (top-level domain). It helps lookup code avoid one error: a registered domain that the code reports as free.

For each TLD, the Actor answers these questions:

  • Does the IANA bootstrap file (https://data.iana.org/rdap/dns.json) list an RDAP server?
  • Does the server answer 200 for a known-registered name?
  • Does the server answer 404 for a random name?
  • What does a 404 mean for this server?

Input

FieldDefaultMeaning
tlds["com","net","org"]TLDs to check.
domains[]Domains. The Actor reduces each domain to its TLD.
probe_domain_overridesexample.com, example.net, example.orgKnown-registered name for each TLD.
timeout_seconds10Timeout for each request. Range: 1 to 30.
compare_with_previous_runtrueWrite change records against the previous run.

Limits: maximum 300 TLDs for each run. The Actor ignores TLDs above this limit. An invalid TLD gets no row. A run with empty input uses the defaults and succeeds.

Without an override, the probe name is nic.<tld>. This is an assumption. It can be wrong for some TLDs. Set probe_domain_overrides for those TLDs.

Output

The default dataset has one row for each TLD (record_type = tld):

  • tld, bootstrap_present, server_url, probe_domain
  • known_status: HTTP status for the known-registered name
  • random_status: HTTP status for a random name
  • redirect_chain: URLs visited for the known name
  • rate_limit_headers: rate-limit and retry-after headers
  • has_expiration_event, has_registrar_entity
  • response_ms: response time for the known name
  • class: one of the values below
  • error: error text, or null
ClassMeaning
usableKnown name gives 200. Random name gives 404.
ambiguous_not_foundAny other pair of statuses. A 404 for a known name does not prove that the name is free.
no_rdap_serverThe bootstrap file has no entry for the TLD. A 404 from a redirector does not mean "not registered".
unreachableA request failed, timed out, or went to a blocked target.

When a value differs from the previous run, the Actor writes a change record (record_type = change) with tld, field, previous, and current.

A bad verdict never fails the run. If the bootstrap file cannot load, each row has class unreachable and an error that starts with bootstrap:. The Actor does not charge for these rows.

State

The Actor keeps one record for each user in the named key-value store rdap-ledger-state. The record holds the previous row for each TLD. The Actor uses no external database.

Pricing event

Pay-per-event. The Actor makes one Actor.charge call for the event tld_check for each TLD checked (one row written, count 1). The contract proposal is USD 0.005 for each event. The cost estimate is USD 0.0008 for each TLD. This is an estimate, not a measured value. The default maximum charge in the proposal is USD 1.5. The Actor stops when the charge limit is reached. This repository does not set the price. Set it in the Apify Console.

Safety limits

  • HTTP only. No browser, proxy, or paid API.
  • The Actor rejects URLs with a private, loopback, link-local, or reserved address. It also rejects URLs with credentials. It checks each redirect target.
  • Limits: 300 TLDs, 3 redirects, 2 MB for each response, 30 s total deadline for each request (guard, redirects, and body), 10 parallel TLDs.
  • Known limit: the DNS check and the HTTP connection use separate lookups.

Repeat triggers

Use an Apify schedule for a weekly run. Each change of the IANA bootstrap file needs an external trigger. The Actor does not watch the file.

Development

uv run pytest
uv run ruff check .