Query domain availability and RDAP data from your own applications. No account required for basic use.
https://api.domain-sentinel.com/v1/lookup/{domain}| Parameter | Location | Description |
|---|---|---|
| domain | path | Full domain name including TLD (e.g. github.com). |
| Authorization | header | Optional. Bearer <api_key> to authenticate and bypass IP rate limits. |
interface DomainLookup {
// Registry-derived fields below are omitted when available is true.
id?: string;
domain: string;
available: boolean;
ldhName?: string | null;
unicodeName?: string | null;
handle?: string | null;
rdapServer?: string | null;
secureDNS?: boolean | null;
delegationSigned?: boolean | null;
lookedUpAt?: string; // ISO 8601
entities: Entity[];
nameservers: Nameserver[];
statuses: string[];
events: Event[];
}
interface Entity {
role: string;
handle: string | null;
name: string | null;
organization: string | null;
ianaId: string | null;
abuseEmail: string | null;
abusePhone: string | null;
}
interface Nameserver {
ldhName: string;
ipv4: string[];
ipv6: string[];
}
interface Event {
eventAction: string;
eventDate: string | null; // ISO 8601
}When available is true (the domain is unregistered), the response contains only domain, available, and the four arrays. The registry-derived fields (id, ldhName, unicodeName, handle, rdapServer, secureDNS, delegationSigned, lookedUpAt) are omitted.
| Field | Type | Description |
|---|---|---|
| available | boolean | true if the domain is not currently registered. |
| ldhName | string | null | Domain name in LDH (letters-digits-hyphens) form. |
| unicodeName | string | null | Domain name in Unicode (IDN) form. |
| handle | string | null | Registry handle (unique identifier at the registry). |
| rdapServer | string | null | RDAP server URL used for this lookup. |
| secureDNS | boolean | null | true if the domain has DNSSEC records. |
| delegationSigned | boolean | null | true if the delegation is signed (subset of secureDNS). |
| lookedUpAt | string | ISO 8601 timestamp of when the data was fetched. |
| entities | Entity[] | Registrar, registrant and contacts. |
| nameservers | Nameserver[] | Name servers with optional IP addresses. |
| statuses | string[] | EPP status codes (e.g. clientTransferProhibited). |
| events | Event[] | Registry events: registration, expiration, last changed, etc. |
# Anonymous (rate-limited)
curl https://api.domain-sentinel.com/v1/lookup/github.com
# With API key (unlimited)
curl -H "Authorization: Bearer ds_your_api_key" \
https://api.domain-sentinel.com/v1/lookup/github.comAnonymous requests are rate-limited by IP address. Authenticate with an API key to remove the limit.
| Mode | Limit | On exceed |
|---|---|---|
| Anonymous (no key) | 5 req/min and 50 req/day per IP | HTTP 429 |
| Authenticated (API key) | Unlimited | N/A |
The 429 response body includes a retryAfter timestamp (Unix ms).
| 200 | Success. Domain object returned. |
| 400 | Bad request: malformed domain name. |
| 401 | API key provided but invalid or revoked. |
| 404 | Unsupported TLD: no RDAP server is listed for this extension in the IANA bootstrap. |
| 429 | Rate limit exceeded. See the retryAfter field in the response. |
| 502 | The TLD's RDAP server is unreachable. |
Create a free API key in your dashboard. Pass it in the Authorization header as a Bearer token. Keys can have an optional expiry date and can be revoked at any time.
Create an API keyWhich TLDs are supported?
Any TLD that has a public RDAP server listed in the IANA bootstrap file. The list is refreshed daily. Browse it on the TLDs page.
How fresh is the data?
Results are cached for up to 7 days. Authenticated users can force a refresh via the dashboard lookup page once per 24 hours.
What does a 502 error mean?
The registry's RDAP server did not respond. This is a temporary issue on the registry side, not a Domain Sentinel outage. Retry after a few minutes.
Is the API free?
Yes. All accounts have unlimited access. Rate limits apply only to anonymous (keyless) requests.
Looking for the list of supported extensions? Browse all TLDs