WHOIS API — structured JSON, RDAP-first, free tier.
Registrar, registration dates, nameservers, status codes and registry handle for any domain, as clean JSON. RDAP first, with port-43 WHOIS as the last fallback.
// Run a lookup to see the JSON response
Long arrays are shortened here. The API returns them in full.
curl "https://domain-intelligence-api.p.rapidapi.com/domain/example.com/whois" \
-H "X-RapidAPI-Host: domain-intelligence-api.p.rapidapi.com" \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY"
import requests
domain = "example.com"
r = requests.get(
f"https://domain-intelligence-api.p.rapidapi.com/domain/{domain}/whois",
headers={
"X-RapidAPI-Host": "domain-intelligence-api.p.rapidapi.com",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
},
timeout=15,
)
data = r.json()
print(data["registrar"], "- expires", data["expires"])
// Node 18+ (built-in fetch)
const res = await fetch(
"https://domain-intelligence-api.p.rapidapi.com/domain/example.com/whois",
{ headers: {
"X-RapidAPI-Host": "domain-intelligence-api.p.rapidapi.com",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
} }
);
console.log(await res.json());
<?php
$ch = curl_init("https://domain-intelligence-api.p.rapidapi.com/domain/example.com/whois");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-RapidAPI-Host: domain-intelligence-api.p.rapidapi.com",
"X-RapidAPI-Key: YOUR_RAPIDAPI_KEY",
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);
What you get
Four-tier fallback
rdap.org, then the IANA RDAP bootstrap, then 22 fallback RDAP servers, then port-43 WHOIS. The _source field shows which one answered.
ccTLDs without RDAP
Socket WHOIS for 50+ TLDs, including many ccTLDs without RDAP (.fr, .nl, .au, .ca, .jp, .ru, .br, .es, .it, .ch and more). Unknown TLDs are resolved through an IANA referral.
Same keys every time
registrar, created, updated, expires, nameservers, status and handle, whether the answer came from RDAP JSON or port-43 text.
Cached for 1 hour
Repeat lookups within an hour don't hit the registry again.
Response fields
GET/domain/{domain}/whois returns one JSON object. The same object is the whois key of /lookup/{domain}.
| Field | Type | Meaning |
|---|---|---|
| registrar | string | Sponsoring registrar |
| created / updated / expires | string | Dates as the registry gives them, usually ISO 8601 |
| nameservers | string[] | Delegated nameservers |
| status | string[] | EPP status codes, e.g. client transfer prohibited |
| handle | string | Registry handle (ROID) |
| ldhName | string | Domain name as the registry stores it |
| _source | string | Tier that answered, e.g. rdap.org or port43:whois.nic.fr |
| error, attempts | string, string[] | Only when every tier failed |
Example response for stripe.com (arrays shortened)
{
"handle": "891022_DOMAIN_COM-VRSN",
"ldhName": "STRIPE.COM",
"status": [
"client delete prohibited",
"client transfer prohibited",
"client update prohibited",
"server delete prohibited",
"server transfer prohibited",
"server update prohibited"
],
"registrar": "SafeNames Ltd.",
"created": "1995-09-12T04:00:00Z",
"updated": "2025-10-01T01:39:51Z",
"expires": "2027-09-11T04:00:00Z",
"nameservers": [
"NS-1087.AWSDNS-07.ORG",
"NS-1882.AWSDNS-43.CO.UK",
"NS-423.AWSDNS-52.COM",
"NS-705.AWSDNS-24.NET"
],
"_source": "rdap.org"
}
What people build with it
Domain ownership checks
Registrar, nameservers and creation date in one call, for legal, brand or M&A reviews.
Sales lead enrichment
Registration age signals company maturity; nameservers hint at the DNS provider.
Fraud and phishing detection
Flag links to domains registered in the last 30 days.
Brand monitoring
Watch look-alike registrations alongside subdomain data.
Expiry tracking
Alert 30 days before a domain you care about expires.
Abuse reporting
Find the registrar to send an abuse report to.
Pricing
One key covers every endpoint, including /lookup with all five signals in one call. Billed monthly through RapidAPI.
Frequently asked questions
Is your WHOIS API free?
Yes. The free tier includes 1,000 requests a month with no credit card. Paid plans start at $9.99/mo for 50,000 requests.
What is the difference between RDAP and WHOIS?
RDAP (Registration Data Access Protocol) is the modern replacement for WHOIS. It returns structured JSON and is the protocol ICANN now requires registries to support. Legacy WHOIS returns free-form text over port 43. The API uses RDAP first and falls back to port-43 WHOIS for TLDs without RDAP.
Which TLDs are supported?
All gTLDs that publish RDAP (.com, .net, .org, .io, .ai, .dev and so on), plus port-43 WHOIS for 50+ TLDs, including many ccTLDs without RDAP. For a TLD it doesn't know, the API asks IANA which WHOIS server to use.
Can I get the registrant email and phone?
No. The API returns registrar, dates, nameservers, status and handle, not registrant contact details. Since GDPR (2018) most registries redact those from public WHOIS and RDAP anyway.
How fresh is the WHOIS data?
An uncached request queries the registry directly. Successful responses are cached for 1 hour, so the data is at most an hour old.
What's the rate limit?
Limits are monthly, per plan: 1,000 requests on BASIC, 50,000 on PRO, 500,000 on ULTRA and 5,000,000 on MEGA. On paid plans, requests over the quota are billed at the overage rate.
Do I need to parse text responses?
No. The response is always JSON with the same keys, whether the answer came from RDAP or from port-43 text. The _source field shows which tier answered.
How does this compare to WhoisXMLAPI, DomainTools, or JsonWHOIS?
All of them return WHOIS data. This API has a free tier without a card (DomainTools starts at $99/mo and WhoisXMLAPI's free tier is limited), queries RDAP first, and its /lookup endpoint also returns DNS, SSL, subdomains and email security in the same call.