search string Case-insensitive substring search against the ASCII/punycode label; an optional leading dot is ignored.
The current IANA delegated TLD ASCII list — search all labels, filter punycode IDNs, or look up one TLD with an honest 404.
Authoritative reference data or standards computation
With no filters, returns the complete pinned delegated list. Search matches the ASCII/punycode label and ignores an optional leading dot; zero matches return an empty list plus a warning.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
search | string | allowed: ≤ 64 example: museum | Case-insensitive substring search against the ASCII/punycode label; an optional leading dot is ignored. |
isIdn | boolean | example: true | Keep only IDN A-labels (true) or non-IDN ASCII labels (false). |
search string Case-insensitive substring search against the ASCII/punycode label; an optional leading dot is ignored.
isIdn boolean Keep only IDN A-labels (true) or non-IDN ASCII labels (false).
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: all matches allowed: 1 – 100 example: 3 | Limit the number of returned records (1–100). Defaults to all matches. |
fields | list | example: tld,ascii | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: isIdn | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int Limit the number of returned records (1–100). Defaults to all matches.
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
tld | string | Canonical lower-case delegated ASCII label with a leading dot. | .com |
ascii | string | Canonical lower-case ASCII label without the leading dot; IDNs remain punycode A-labels. | com |
isIdn | boolean | True when the delegated ASCII label starts with the IDNA A-label prefix xn--. | false |
tld string Canonical lower-case delegated ASCII label with a leading dot.
example: .com
ascii string Canonical lower-case ASCII label without the leading dot; IDNs remain punycode A-labels.
example: com
isIdn boolean True when the delegated ASCII label starts with the IDNA A-label prefix xn--.
example: false
/api/tlds?search=dk {
"data": [
{
"tld": ".dk",
"ascii": "dk",
"isIdn": false
},
{
"tld": ".tdk",
"ascii": "tdk",
"isIdn": false
},
{
"tld": ".vodka",
"ascii": "vodka",
"isIdn": false
}
],
"meta": {
"endpoint": "tlds",
"count": 3,
"params": {
"search": "dk"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/tlds?isIdn=true&count=10 {
"data": [
{
"tld": ".xn--11b4c3d",
"ascii": "xn--11b4c3d",
"isIdn": true
},
{
"tld": ".xn--1ck2e1b",
"ascii": "xn--1ck2e1b",
"isIdn": true
},
{
"tld": ".xn--1qqw23a",
"ascii": "xn--1qqw23a",
"isIdn": true
},
{
"tld": ".xn--2scrj9c",
"ascii": "xn--2scrj9c",
"isIdn": true
},
{
"tld": ".xn--30rr7y",
"ascii": "xn--30rr7y",
"isIdn": true
},
{
"tld": ".xn--3bst00m",
"ascii": "xn--3bst00m",
"isIdn": true
},
{
"tld": ".xn--3ds443g",
"ascii": "xn--3ds443g",
"isIdn": true
},
{
"tld": ".xn--3e0b707e",
"ascii": "xn--3e0b707e",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/tlds?search=.museum {
"data": [
{
"tld": ".museum",
"ascii": "museum",
"isIdn": false
}
],
"meta": {
"endpoint": "tlds",
"count": 1,
"params": {
"search": ".museum"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Accepts one ASCII or punycode label, case-insensitively, with or without a leading dot. Unicode display labels are deliberately not accepted or guessed.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
tld
required
| string | allowed: 1 – 64 example: .com | Delegated ASCII/punycode TLD label, with or without a leading dot (for example .com, dk or xn--p1ai). |
tld string required Delegated ASCII/punycode TLD label, with or without a leading dot (for example .com, dk or xn--p1ai).
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: tld,ascii | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: isIdn | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
tld | string | Canonical lower-case delegated ASCII label with a leading dot. | .com |
ascii | string | Canonical lower-case ASCII label without the leading dot; IDNs remain punycode A-labels. | com |
isIdn | boolean | True when the delegated ASCII label starts with the IDNA A-label prefix xn--. | false |
tld string Canonical lower-case delegated ASCII label with a leading dot.
example: .com
ascii string Canonical lower-case ASCII label without the leading dot; IDNs remain punycode A-labels.
example: com
isIdn boolean True when the delegated ASCII label starts with the IDNA A-label prefix xn--.
example: false
/api/tlds/lookup?tld=.com {
"data": {
"tld": ".com",
"ascii": "com",
"isIdn": false
},
"meta": {
"endpoint": "tlds",
"route": "/lookup",
"params": {
"tld": ".com"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/tlds/lookup?tld=XN--P1AI&fields=tld,ascii,isIdn {
"data": {
"tld": ".xn--p1ai",
"ascii": "xn--p1ai",
"isIdn": true
},
"meta": {
"endpoint": "tlds",
"route": "/lookup",
"params": {
"tld": ".xn--p1ai"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} All 1437 delegated top-level-domain labels in IANA's tlds-alpha-by-domain.txt snapshot, version 2026062302. Results are canonical lower-case ASCII: .com, .dk, and IDN A-labels such as .xn--p1ai.
The scope is intentionally narrow and verifiable: this is the delegated-name list, not a domain availability service. It does not infer country-code versus generic type from label length, does not bundle manager metadata from another source, and does not invent Unicode display forms. The isIdn flag only reports IANA labels carrying the standards-defined xn-- A-label prefix; the authoritative punycode is preserved unchanged.
/api/tlds supports case-insensitive ASCII/punycode search and an isIdn filter (151 snapshot rows are IDN A-labels)./api/tlds/lookup?tld=.com accepts a leading dot optionally and is case-insensitive. It echoes the canonical dotted form; a syntactically valid but undelegated label returns 404.The data is bundled, so requests never depend on DNS or an upstream IANA fetch.
Yes — it contains all 1437 ASCII labels in the pinned IANA delegated-TLD snapshot, including country-code, generic and punycode IDN labels. It does not claim that every listed domain accepts public registrations.
Yes. .com, COM and com all resolve to the canonical .com record; an undelegated but well-formed label returns 404.
No. It preserves IANA's authoritative xn-- A-label and exposes isIdn=true, avoiding an unverified or display-context-dependent Unicode conversion.
Random internet building blocks — valid IPv4/IPv6 addresses, locally-administered MACs, non-resolvable .test domains and URLs, slugs, ports and TLDs.
All 249 ISO 3166-1 countries and territories with codes, regions, capitals, currencies, languages, calling codes, flags and label-safe land points.
All 183 active ISO 639 two-letter language codes with matching terminology and bibliographic three-letter codes, searchable with exact lookups.
Canonicalize BCP 47 language tags and run RFC 4647 lookup or basic filtering with bounded, deterministic matching.
Convert internationalized domains to punycode and back, and get the exact IDNA rule that rejected a label — length, hyphens, combining marks or the bidi rule.