Domain Registration (RDAP)
free/v1/domain/whoisRetrieves comprehensive domain registration data via RDAP (Registration Data Access Protocol). As of January 2025, ICANN officially sunsetted WHOIS for gTLDs — RDAP is now the definitive source. Returns registrar details (name, IANA ID, URL), registration dates (created, updated, expires) with computed age and expiry indicators, EPP status codes, authoritative nameservers, DNSSEC signing status, and registrant/admin/tech contacts (name, organization, email, phone, address). Results are cached for 1 hour.
What It Does
Queries RDAP servers (RFC 7480, RFC 9224 bootstrap) to retrieve domain registration metadata including registrar name, IANA accreditation ID, and URL; registration dates (created, updated, expires) with computed domain age in days, newly-registered flag (< 30 days), days until expiry, and expiring-soon flag (< 30 days); EPP status codes (clientTransferProhibited, serverHold, redemptionPeriod, etc.); authoritative nameservers; DNSSEC signing status; and registrant, administrative, and technical contacts. Detects privacy-proxy registrants (WhoisGuard, PrivacyGuardian, Withheld for Privacy, Domains By Proxy, Cloudflare Registrar, etc.) and surfaces a `contacts.redacted` flag with `redaction_reason` when GDPR / ICANN privacy policy suppresses identifying fields, so compliance reports can distinguish "redacted" from "missing data". Enriches the registrar against the IANA registrar registry — `registrar.is_accredited` and `registrar.country` derive from a curated subset of the official IANA Registrar IDs assignment. For ccTLDs without RDAP support, falls back to legacy WHOIS over TCP port 43 (RFC 3912) and surfaces the protocol used via the `protocol` field. Optionally returns the raw upstream response via include_raw.
Why It's Useful
ICANN officially sunsetted WHOIS for gTLDs on 28 January 2025 — RDAP is now the canonical source for gTLD registration data, and EdgeDNS handles bootstrap discovery automatically. Privacy-proxy detection and GDPR-redaction transparency give fraud and threat-intel teams the context they need to triage "newly-registered + privacy-shielded + sketchy nameservers" patterns without writing those heuristics themselves. The port-43 fallback covers the long tail of ccTLDs (.de, .it, .br, .au, .nz, .jp, etc.) where RDAP coverage is partial, so callers don't silently 5xx on otherwise-valid domains.
Use Cases
Due Diligence for Domain Acquisition
Before purchasing a domain, verify ownership history, registration dates, and any existing disputes or holds.
Avoid purchasing domains with legal issues or poor reputation history.
Phishing Domain Detection
Investigate suspicious domains reported by users. RDAP data reveals registration date, registrar, and EPP status — newly registered domains from budget registrars with privacy enabled are strong phishing indicators.
Quickly triage phishing reports by identifying domains registered within the last 30 days with high-risk registration patterns.
Competitive Intelligence
Monitor when competitors register new domains to anticipate product launches or market expansions.
Stay ahead of competitor moves with early visibility into their domain portfolio.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Required | The domain name to lookup (e.g., example.com)Example: example.com |
include_raw | string | Optional | Set to "true" to include the full raw RDAP response in the outputExample: false |
Response Fields
| Field | Type | Description |
|---|---|---|
domain | string | The queried domain |
protocol | string | Source protocol: "rdap" (canonical for gTLDs), "whois43" (port-43 fallback for ccTLDs without RDAP), or "unsupported" |
status | array | EPP status codes (clientTransferProhibited, serverHold, redemptionPeriod, etc.) |
registrar.name | string | Registrar name |
registrar.iana_id | number | Registrar IANA accreditation ID |
registrar.url | string | Registrar URL |
registrar.is_accredited | boolean | True if the IANA ID corresponds to an ICANN-accredited registrar (any non-null IANA ID implies accreditation) |
registrar.country | string | Registrar country code from a curated subset of the IANA Registrar IDs registry; null for registrars not in the curated list |
dates.created | string | Domain registration date (ISO 8601) |
dates.updated | string | Last update date (ISO 8601) |
dates.expires | string | Expiration date (ISO 8601) |
dates.age_days | number | Domain age in days since registration |
dates.is_newly_registered | boolean | True if domain is less than 30 days old |
dates.days_until_expiry | number | Days remaining until expiration |
dates.is_expiring_soon | boolean | True if domain expires within 30 days |
nameservers | array | Authoritative nameservers for the domain |
dnssec | boolean | Whether domain has DNSSEC signing enabled at the registry |
contacts.registrant | object | Registrant contact: name, organization, email, phone, address (street, city, state, postal_code, country). Null when the protocol does not surface contact data. |
contacts.admin | object | Administrative contact: name, organization, email, phone, address |
contacts.tech | object | Technical contact: name, organization, email, phone, address |
contacts.redacted | boolean | True when contact identifying fields are suppressed by registry / registrar privacy policy (per GDPR or ICANN temporary specification) |
contacts.redaction_reason | string | Human-readable reason when redacted=true; null otherwise |
is_privacy_proxy | boolean | True when the registrant organization matches a known privacy-proxy service (WhoisGuard, PrivacyGuardian, Withheld for Privacy, Domains By Proxy, Cloudflare Registrar, etc.) |
privacy_proxy_provider | string | Name of the matched privacy-proxy service when is_privacy_proxy=true; null otherwise |
raw | object | Full raw upstream response (RDAP JSON or WHOIS text), only when include_raw=true |
Code Examples
curl "https://api.edgedns.dev/v1/domain/whois" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d "domain=example.com"const response = await fetch(
'https://api.edgedns.dev/v1/domain/whois?domain=example.com',
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
console.log(data);import requests
response = requests.get(
'https://api.edgedns.dev/v1/domain/whois',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'domain': 'example.com'
}
)
data = response.json()
print(data)Read the full Domain Registration (RDAP) guide
Why it matters, real-world use cases, parameters, response fields, and how to call it from Claude, ChatGPT, or Gemini via MCP.
Read the guide →Related Endpoints
External References
Learn more about the standards and protocols behind this endpoint.
Try This Endpoint
Test the Domain Registration (RDAP) endpoint live in the playground.