TLDs
A curated set of 105 top-level domains from the ICANN root zone, classified as gTLD, ccTLD, or sTLD, with the operating registry, whether registration is restricted to specific entities, and whether the TLD supports internationalised domain names.
Quick fetch
Stable URL. CORS-enabled. No auth.
curl https://staticdata.dev/v1/tlds.json
Or use as a typed import:
import { tlds } from "https://staticdata.dev/v1/tlds.ts"
Formats
- JSON 14.8 KB
/v1/tlds.json
min: 10.5 KB · /v1/tlds.min.json
- CSV 4.1 KB
/v1/tlds.csv
- TypeScript 15.0 KB
/v1/tlds.ts
export const tlds
type Tld = (typeof tlds)[number]
Schema
Each record in the dataset has the following shape.
| Field | Type | Description | Example |
|---|---|---|---|
| tld | string | Top-level domain with leading dot | .com |
| type | "gTLD" | "ccTLD" | "sTLD" | Classification | gTLD |
| country? | string | null | ISO 3166-1 alpha-2 (only for ccTLDs) | |
| registry | string | Operating registry name | VeriSign |
| restricted | boolean | Whether registration is restricted by eligibility rules | false |
| idn | boolean | Whether the TLD supports IDN registrations | false |
Preview
First 10 records.
| tld | type | country | registry | restricted | idn |
|---|---|---|---|---|---|
| .com | gTLD | VeriSign | false | false | |
| .org | gTLD | Public Interest Registry | false | false | |
| .net | gTLD | VeriSign | false | false | |
| .info | gTLD | Identity Digital | false | false | |
| .biz | gTLD | GoDaddy Registry | false | false | |
| .name | gTLD | VeriSign | true | false | |
| .pro | gTLD | Identity Digital | false | false | |
| .dev | gTLD | Charleston Road Registry (Google) | false | false | |
| .app | gTLD | Charleston Road Registry (Google) | false | false | |
| .io | ccTLD | IO | Internet Computer Bureau | false | false |
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/tlds.json | jq '.[0]' import type { Tld } from "https://staticdata.dev/v1/tlds.ts";
const res = await fetch("https://staticdata.dev/v1/tlds.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const tlds: Tld[] = await res.json();
console.log(tlds[0]); import urllib.request, json
with urllib.request.urlopen("https://staticdata.dev/v1/tlds.min.json") as r:
tlds = json.load(r)
print(tlds[0]) package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://staticdata.dev/v1/tlds.min.json")
if err != nil { panic(err) }
defer resp.Body.Close()
var data []map[string]any
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
panic(err)
}
fmt.Println(data[0])
} use serde_json::Value;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let body = ureq::get("https://staticdata.dev/v1/tlds.min.json").call()?.into_string()?;
let data: Vec<Value> = serde_json::from_str(&body)?;
println!("{:?}", data.first());
Ok(())
} Sources and methodology
As of October 2026 the root zone contains 1,437 TLDs, hundreds of which are brand TLDs (.google, .amazon) that are not generally available for registration. This dataset focuses on TLDs developers actually encounter: the original gTLDs (.com, .org, .net), the major ccTLDs, the sponsored TLDs that have meaningful real-world use (.gov, .edu, .aero), and the more popular new gTLDs.
The restricted flag is true when registration is gated on eligibility (e.g., .gov requires a US government entity, .edu requires accreditation, .bank requires being a bank, .aero requires being in the aviation sector). It is false when registration is open to anyone. Registry operators and eligibility rules change over time; the registry, restricted and idn values reflect the situation as of October 2026, and registry names the operator most developers would recognise (which is sometimes the back-end operator rather than the IANA sponsoring organisation).
The idn flag indicates whether the registry accepts internationalised domain name registrations using non-ASCII characters in the second-level domain.
Internationalised TLDs (IDN ccTLDs like .рф, .中国, .한국) are not yet included.
Versioning
URLs under /v1/ are stable: field names and types will not change in a way
that breaks consumers. Values can be corrected or records added when the upstream source
changes; schema-incompatible updates ship under a new version path. See the
tlds changelog for this dataset's history.
Related datasets
More Web datasets
- aria-attributes
- aria-roles
- character-encodings
- csp-directives
- credit-card-types
- dns-record-types
- dom-events
- emoji
- emoji-shortcodes
- html-elements
- html-entities
- html-attributes
- input-types
- http-auth-schemes
- http-cache-directives
- http-content-codings
- http-headers
- http-methods
- http-status-codes
- http-versions
- iframe-sandbox-tokens
- ip-protocol-numbers
- keyboard-event-codes
- link-relations
- media-type-suffixes
- mime-types
- oauth-grant-types
- ports
- referrer-policies
- ip-special-blocks
- svg-elements
- tcp-flags
- tls-cipher-suites
- tls-versions
- uri-schemes
- well-known-uris