v:verza
verza / docs / domain-check-api

Domain age and registry status API

One call returns when a domain was registered, when it expires, the registry status, and whether an address record and an MX record exist. The dates come from the RDAP server named in the IANA bootstrap.

South African .za names are a free 400. The error is South African .za registry data is not available on this endpoint. A suffix with no RDAP server is a free 400 when that bootstrap list is cached, and HTTP 503 when it is not. An RDAP failure is HTTP 503. None of those responses are settled.

Registrant name, email, phone and address are dropped at parse and are never logged or cached. The check does not say who owns or runs the domain. A domain that is not registered is still a 200, because the lookup ran.

Endpoints

GET /v1/domain-check

Domain age and registry status from RDAP via the IANA bootstrap. A South African .za name is refused. Also reports whether an address record and an MX record exist. Dates and status only. It does not confirm who owns or runs the domain.

$0.01 per call · example: /v1/domain-check?domain=example.com · also callable as /v1/domain-check/{domain}

How you pay

API key. The free tier issues a key at /signup: send it as Authorization: Bearer <key> and calls come off a monthly allowance, no crypto anywhere in that path. Every key comes with a sandbox twin (vz_test_) that never counts against quota and accepts only the documented test inputs, so you can wire up an integration before spending a single call.

Pay per call. Send no key at all and a paid endpoint replies HTTP 402 with the exact payment requirements; an x402 client pays USDC on Base (about two seconds to settle) and retries automatically. No account, no signup, which is what makes it work for autonomous agents.

Either way, invalid input is rejected with a free 400 before any payment is challenged, so you never pay (or spend quota) to learn you made a typo.

Questions

How do I check a domain?
GET /v1/domain-check?domain=example.com, or /v1/domain-check/example.com. A scheme, a path and a leading www. are stripped, and internationalized names are converted to punycode. A bare probe is a 402 at $0.01. A malformed name is a free 400.
What about .co.za?
co.za, org.za, net.za, web.za and any other .za suffix are a free 400 before payment. This endpoint does not query the South African registry.
What if RDAP does not answer?
The response is HTTP 503 and it is not settled. A suffix with no server in the cached IANA bootstrap is a free 400 with status no_public_registry.
Does this confirm who owns the domain?
No. The response carries dates, status and the registrar name only. It does not confirm who owns or runs the domain.
What do the flags mean?
young domain (under 90 days), expires within 30 days, no MX, clientHold, and not registered. no MX is set only when DNS says there is no MX record. A timeout is not treated as no MX.

Related

South African ID number validation API South African VAT number validation API NCA credit agreement lawfulness API South African KYB and onboarding API South African contact validation API CIPC registration number check IP address screening API Business pre-screen API Risk score API Guides: how the interest rate caps work zaref: NCA maximum interest rates