Skip to content

WHOIS Lookup

The WHOIS endpoint allows you to retrieve registration and ownership information for a domain name using RDAP (Registration Data Access Protocol). This is useful for checking domain availability, expiry dates, registrar details, and more.

Endpoint: HEAD GET https://api.teamtbm.org/v1/whois

Authentication: Public (None)

Rate Limits

Limit Value
Requests 15 per minute
Scope Per IP address

Query Parameters

Parameter Type Required Description
domain string ✅ Yes A valid domain name to look up (e.g. teamtbm.org). Also accepted as d.

Note

Both d and domain are accepted as the query parameter name. If both are provided, domain takes precedence.

Exceeding the rate limit will return a 429 Too Many Requests response.

Response Format

    {
        "success": true,
        "code": 200,
        "cached": false,
        "domain": "example.com",
        "registered": true,
        "result": {
            "domainName": "example.com",
            "domainStatus": [
                "clientDeleteProhibited",
                "clientTransferProhibited"
            ],
            "expiryDate": "2027-01-15T10:00:00.000Z",
            "creationDate": "2020-01-15T10:00:00.000Z",
            "updatedDate": "2025-11-03T08:22:11.000Z",
            "nameServers": [
                "ns1.exampleregistrar.com",
                "ns2.exampleregistrar.com"
            ],
            "dnssec": "signed",
            "registrar": "Example Registrar LLC",
            "abuseEmail": "abuse@exampleregistrar.com",
            "registrarIanaId": "0000"
        }
        }

Fields:

  • cached (boolean) — Whether the result was served from cache
  • domain (string) — The domain that was looked up
  • registered (boolean) — Whether the domain is currently registered
  • result (object) — Mixed registration data from the RDAP server. Fields may vary depending on the TLD and registrar.

result Common Fields:

Field Type Description
domainName string Registered domain name
domainStatus string[] List of EPP status codes
expiryDate string ISO 8601 expiry timestamp
creationDate string ISO 8601 creation timestamp
updatedDate string ISO 8601 last updated timestamp
nameServers string[] List of authoritative name servers
dnssec string DNSSEC signing status
registrar string Registrar name
abuseEmail string Registrar abuse contact email
registrarIanaId string Registrar IANA ID

Returned when the d (or domain) parameter is missing or is not a valid domain.

{
    "success": false,
    "code": 400,
    "message": "Bad Request",
    "error": "A valid domain name is required."
}

Returned when the domain is not registered or no RDAP information is available for it.

{
    "success": false,
    "code": 404,
    "message": "Not Found",
    "error": "The domain is not registered or no information is available."
}

Returned when no RDAP server is available for the domain's TLD, which typically indicates an invalid or unsupported TLD.

{
    "success": false,
    "code": 422,
    "message": "Unprocessable Entity",
    "error": "No RDAP server is available for this domain's TLD."
}
{
    "success": false,
    "code": 500,
    "message": "Internal Server Error",
    "error": "An unexpected error occurred. Please try again later."
}

Additional Error Fields

Some error responses may include extra fields beyond the standard message and error properties, depending on the specific nature of the failure.

HTTP Status Codes

Code Meaning
200 Success — WHOIS data returned
400 Bad Request — missing or invalid d parameter
404 Not Found — domain not registered or no info available
422 Unprocessable Entity — no RDAP server available for TLD
500 Internal Server Error

Example Requests

curl -X GET "https://api.teamtbm.org/v1/whois?d=teamtbm.org" \
     -H "Accept: application/json"
const response = await fetch("https://api.teamtbm.org/v1/whois?d=teamtbm.org", {
    headers: { "Accept": "application/json" }
});
const data = await response.json();
import requests

response = requests.get("https://api.teamtbm.org/v1/whois", params={"d": "teamtbm.org"})
data = response.json()
<?php
$ch = curl_init("https://api.teamtbm.org/v1/whois?d=teamtbm.org");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Accept: application/json"]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
?>