Domain Portfolio RDAP Expiry, Status-Flag
Pricing
$2.00 / 1,000 domain checkeds
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
Maintained by CommunityActor 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"):
| Field | Meaning |
|---|---|
rdap_source_url | Registry RDAP URL that the Actor queried. |
expiry_date, days_left | Expiry date and whole days left. The value is negative after expiry. |
expiring_soon | true when days_left is at or below warningDays. |
status_codes | EPP (Extensible Provisioning Protocol) status codes, in camelCase. |
missing_lock | true when the domain lacks clientTransferProhibited or clientDeleteProhibited. Server locks do not count. |
risk_status, risk_statuses | true and the list when a status is redemptionPeriod, pendingDelete, serverHold, or clientHold. |
registrar, nameservers | Current registrar name and sorted nameservers. |
delegation_signed | DNSSEC (DNS Security Extensions) delegationSigned value. |
first_seen | true when no previous state exists. |
changes | List of {field, previous, current} for registrar, nameservers, statuses, or expiry. |
expectation_mismatches | Fields that differ from your optional expected registrar or nameservers. |
rdap_unavailable | true when the TLD (top-level domain) has no RDAP service in the IANA bootstrap file. |
lookup_error | Error 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
| Field | Default | Note |
|---|---|---|
domains | ["example.com"] | 1 to 500 names. The Actor removes duplicates. Invalid names become rows with lookup_error: "invalid_domain". |
warningDays | 30 | 0 to 365. |
expectations | [] | Objects: {"domain": "a.com", "registrar": "Acme", "nameservers": ["ns1.a.com"]}. |
stateStoreName | domain-rdap-ledger-state | Named 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)
| Event | Price | When the Actor charges |
|---|---|---|
domain-checked | $0.002 | One 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
relatedlink 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 pytestuv run ruff check .