OPEN DATA. OPEN POSSIBILITIES.

The internet.
In your application.

One endpoint for domains, networks and onchain identities. No API key. Just structured JSON, ready for your next idea.

Start with a single request.

Send a GET request to /api.php with a q parameter. Cross-origin requests are supported.

TERMINAL / cURL
curl 'https://whois.td/api.php?q=example.com&raw=1'

Make it your query.

ParameterTypeDescription
qstring · requiredDomain, IPv4 / IPv6, AS number, ENS, +Realm or UD name. Maximum 255 bytes. query is also accepted.
raw0 | 1Set to 1 to include the original response in data.raw. Omitted by default.
serverstring · optionalAdvanced: specify a domain WHOIS server. Automatic fallback is skipped when overridden.

A response you can work with.

An abbreviated domain response is shown below. Fields depend on what the upstream provider publishes; unpublished fields may be absent.

JSON / STRUCTURE EXAMPLE
{
    "ok": true,
    "code": 200,
    "query": "example.com",
    "normalizedQuery": "example.com",
    "type": "domain",
    "tld": "com",
    "isIDN": false,
    "data": {
        "currSer": "whois.verisign-grs.com",
        "info": {
            "domainName": [
                "EXAMPLE.COM"
            ],
            "registrar": {
                "registrar": "RESERVED-Internet Assigned Numbers Authority"
            },
            "dns": [
                "elliott.ns.cloudflare.com",
                "hera.ns.cloudflare.com"
            ]
        }
    }
}

type can be domain, ip, asn, ens, realm or ud. create, update and expire use Unix timestamps in seconds. data.info holds parsed fields; data.currSer identifies the source.

Some records, including IP / ASN responses, may only contain raw data. Add raw=1 to preserve the complete upstream response.

Take it for a spin.

This playground sends a real API request and displays the actual response and status.

Ready when you are.
LIVE RESPONSE
Your response will appear here.

Keep the flow fair.

Each IP can make up to 30 requests per minute and 240 per hour. X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset describe the current window. When limited, respect Retry-After and use exponential backoff.

HTTPMeaning
200Data retrieved.
400Missing or oversized query.
404No matching registry record.
409Reserved or restricted name.
422No public service for this suffix.
502Upstream unavailable or invalid response.
503Lookup temporarily unavailable.
504Upstream lookup timed out.
405Method not supported. Use GET.
429Local or registry rate limit exceeded.

Domain lookupStatus distinguishes found, not_found, reserved, unsupported, rate_limited, timeout and upstream_error. A 404 does not establish registration availability; confirm with a registry or registrar.

Go beyond the domain.

QueryType
1.1.1.1IPv4
2606:4700:4700::1111IPv6
AS13335Autonomous system
vitalik.ethEthereum Name Service
%2BsatoshiAtomicals Realm · Encode the + sign as %2B
brad.cryptoUnstoppable Domains

Use URLSearchParams in JavaScript to encode query values correctly.

JAVASCRIPT / FETCH
const response = await fetch(
  'https://whois.td/api.php?q=example.com'
);
const result = await response.json();

if (result.ok) {
  console.log(result.data.info);
}