BYTETOOLS

RDAP (Domain Lookup) API

Free RDAP API with no key: structured JSON domain registration data — registrar, creation and expiry dates, nameservers and status. The modern WHOIS. Tested.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the RDAP (Domain Lookup) API?

RDAP (Registration Data Access Protocol) is the standardised, free replacement for WHOIS, returning domain registration data as structured JSON — registrar, creation and expiry dates, nameservers and status codes — with no API key.

WHOIS returns unstructured text that differs by registry and has to be scraped. RDAP is the IETF standard that replaced it, returning consistent JSON that you can actually parse reliably.

The rdap.org bootstrap service is the practical entry point: it looks up which registry is authoritative for a domain and redirects you there, so you do not need to maintain a mapping of TLDs to RDAP servers yourself. That redirect is expected behaviour, not an error.

Quick facts

Base URL
https://rdap.org
Authentication
No API key required. Some registries rate-limit by IP.
Rate limit
Varies by registry; the bootstrap service itself does not limit, but destination registries may.
Pricing
Free — it is an open internet standard.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the RDAP (Domain Lookup) API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Look up domain registration data

GET https://rdap.org/domain/example.com

curl
curl 'https://rdap.org/domain/example.com'
JavaScript (fetch)
const res = await fetch("https://rdap.org/domain/example.com");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://rdap.org/domain/example.com", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "objectClassName": "domain",
  "handle": "2336799_DOMAIN_COM-VRSN",
  "ldhName": "EXAMPLE.COM",
  "links": [
    {
      "value": "https://rdap.verisign.com/com/v1/domain/example.com",
      "rel": "self",
      "href": "https://rdap.verisign.com/com/v1/domain/example.com",
      "type": "application/rdap+json"
    }
  ],
  "status": [
    "client delete prohibited",
    "client transfer prohibited",
    "client update prohibited"
  ],
  "entities": [
    {
      "objectClassName": "entity",
      "handle": "376",
      "roles": [
        "registrar"
      ],
      "publicIds": [
        {
          "type": "IANA Registrar ID",
          "identifier": "376"
        }
      ],
      "vcardArray": [
        "vcard",
        [
          [
            "version",
            {},
            "text",
            "4.0"
          ],
          [
            "fn",
            {},
            "text",
            "RESERVED-Internet Assigned Numbers Authority"
          ]
        ]
      ],
      "entities": [
        {
          "objectClassName": "entity",
          "roles": [
            "abuse"
          ],
          "vcardArray": [
            "vcard",
            [
              [
                "version",
                {},
                "text",
                "4.0"
              ],
              [
                "fn",
                {},
                "text",
                ""
              ],
              [
                "tel",
                {
                  "type": "voice"
                },
                "uri",
                ""
              ],

Parameters

ParameterTypeRequiredDescription
domain/<name>pathRequiredDomain to look up. domain/example.com
ip/<address>pathOptionalIP address allocation data. ip/8.8.8.8
autnum/<asn>pathOptionalAutonomous system registration. autnum/15169

Response fields

objectClassNamestring
Type of object returned — `domain`, `ip network` or `autnum`.
ldhNamestring
The domain name in LDH (letter-digit-hyphen) form.
handlestring
Registry's internal identifier for the registration.
statusarray
EPP status codes such as clientTransferProhibited.
eventsarray
Registration, expiry and last-changed dates with event actions.
nameserversarray
Authoritative nameservers for the domain.
entitiesarray
Registrar and contacts, usually redacted for privacy.

What you can build with the RDAP (Domain Lookup) API

  • Check domain expiry dates and set renewal reminders
  • Verify domain ownership signals during onboarding
  • Build a domain research or due-diligence tool
  • Replace fragile WHOIS text scraping with structured data

Common errors and how to fix them

Redirect to a registry host

That is how the bootstrap works.

Fix: rdap.org resolves the authoritative registry and redirects — follow it rather than treating it as an error.

Contact details redacted

GDPR and registry privacy policies redact most personal data.

Fix: Expect registrant details to be withheld; registrar and dates remain available.

404 for some TLDs

Not every ccTLD operates an RDAP service.

Fix: Coverage is complete for gTLDs but patchy for country-code TLDs.

RDAP (Domain Lookup) API — frequently asked questions

What is RDAP and why not just use WHOIS?

RDAP is the IETF standard that replaced WHOIS. WHOIS returns unstructured text that varies by registry and must be scraped; RDAP returns consistent, parseable JSON.

Is RDAP free?

Yes, it is an open internet standard with no API key. Individual registries may rate-limit by IP.

Why can't I see the domain owner's name?

GDPR and registry privacy policies redact registrant contact details for most domains. Registrar, dates, nameservers and status codes remain public.

Why does my request redirect?

rdap.org is a bootstrap service that finds the authoritative registry for the domain and redirects there. Following the redirect is the intended behaviour.

Tools that pair with this API

RDAP (Domain Lookup) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.