Domain Portfolio RDAP Expiry, Status-Flag avatar

Domain Portfolio RDAP Expiry, Status-Flag

Pricing

$2.00 / 1,000 domain checkeds

Go to Apify Store
Domain Portfolio RDAP Expiry, Status-Flag

Domain Portfolio RDAP Expiry, Status-Flag

Checks 1 to 500 domains through public RDAP. Reports expiry, missing locks, risk status, and changes since the last run.

Pricing

$2.00 / 1,000 domain checkeds

Rating

0.0

(0)

Developer

kingii98

kingii98

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Categories

Share

Domain Portfolio RDAP Expiry, Status-Flag, and Registrar-Change Ledger

This Actor checks 1 to 500 domains through public RDAP (Registration Data Access Protocol). It is for agencies, IT teams, and brand owners. Run it each week, or after a transfer or renewal batch.

What it reports

One dataset row for each domain (row_type: "domain"):

FieldMeaning
rdap_source_urlRegistry RDAP URL that the Actor queried.
expiry_date, days_leftExpiry date and whole days left. The value is negative after expiry.
expiring_soontrue when days_left is at or below warningDays.
status_codesEPP (Extensible Provisioning Protocol) status codes, in camelCase.
missing_locktrue when the domain lacks clientTransferProhibited or clientDeleteProhibited. Server locks do not count.
risk_status, risk_statusestrue and the list when a status is redemptionPeriod, pendingDelete, serverHold, or clientHold.
registrar, nameserversCurrent registrar name and sorted nameservers.
delegation_signedDNSSEC (DNS Security Extensions) delegationSigned value.
first_seentrue when no previous state exists.
changesList of {field, previous, current} for registrar, nameservers, statuses, or expiry.
expectation_mismatchesFields that differ from your optional expected registrar or nameservers.
rdap_unavailabletrue when the TLD (top-level domain) has no RDAP service in the IANA bootstrap file.
lookup_errorError code when the lookup failed, for example timeout or http_404.

One summary row (row_type: "summary") gives the counts.

A bad result is data. The run ends SUCCEEDED for unavailable RDAP, lookup errors, and invalid names.

Input

FieldDefaultNote
domains["example.com"]1 to 500 names. The Actor removes duplicates. Invalid names become rows with lookup_error: "invalid_domain".
warningDays300 to 365.
expectations[]Objects: {"domain": "a.com", "registrar": "Acme", "nameservers": ["ns1.a.com"]}.
stateStoreNamedomain-rdap-ledger-stateNamed key-value store. Key STATE keeps the previous registrar, nameservers, status codes, and expiry.

An empty input {} runs with the defaults.

State

The Actor reads STATE once at the start and writes it once at the end. It updates a domain only when the lookup succeeded. A failed lookup keeps the old record. The IANA bootstrap file (https://data.iana.org/rdap/dns.json) is fetched once for each run.

Billing (pay-per-event)

EventPriceWhen the Actor charges
domain-checked$0.002One call for each domain that RDAP resolved and the Actor compared to the previous run.

The Actor does not charge for unavailable TLDs, invalid names, or failed lookups. The Actor stops early if the charge limit is reached. The proposed default cap is $1.00 (500 domains). This README does not change pricing. Set pricing in Apify Console.

Limits and safety

  • HTTP only. No browser, proxy, LLM, paid API, or secret.
  • HTTPS targets only. The Actor rejects private, loopback, link-local, and reserved addresses, for every redirect hop.
  • At most 3 redirects, 10 s timeout, 1 MB for each response.
  • One request each second for each RDAP host. Domains run one at a time.
  • The Actor follows the registrar related link once, when the registry gives it. Registrar values win.
  • The Actor does not use port-43 WHOIS. Some ccTLDs have no RDAP. They show rdap_unavailable.
  • Known gap: a DNS answer can change between the address check and the connection.

Development

uv run pytest
uv run ruff check .