{"openapi":"3.1.0","info":{"title":"nTLDData API","version":"1.0.0","summary":"Statistics for the new generic top-level domains.","description":"Free, no key, no accounts. Aggregate figures only — no endpoint returns domain\nnames, because ICANN CZDS terms permit analysis but prohibit redistributing zone data.\n\nTwo independent clocks, and conflating them produces wrong statements:\n\n  * Daily — domain counts, adds and drops, DNSSEC, nameserver and parking share,\n    derived from zone files. Currently as of 2026-08-17.\n  * Monthly, about three months in arrears — anything attributed to a registrar.\n    Zone files carry no registrar information, so ICANN monthly registry reports are\n    the only possible source. Currently 202604.\n\nA TLD with no CZDS zone approval has no daily count, so `domains` is null for it.\nThose TLDs still file monthly reports, and that figure is returned as\n`reported_domains` with its `reported_month` — .com is the obvious case. The two are\nnever merged, so read whichever you want but do not add them together.\n\nCite the reporting month with any registrar figure, not the date you fetched it.\nPer-IP rate limiting applies; it is generous enough that only a full sweep will meet it.","license":{"name":"CC-BY-4.0","url":"https://creativecommons.org/licenses/by/4.0/"},"contact":{"url":"https://ntlddata.com/api"}},"servers":[{"url":"https://ntlddata.com","description":"Production"}],"externalDocs":{"url":"https://ntlddata.com/methodology","description":"How every figure is derived"},"paths":{"/api/v1/overview":{"get":{"operationId":"getOverview","tags":["Totals"],"summary":"Headline totals, the daily series, and both data dates.","responses":{"200":{"description":"Site-wide totals.","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"name":"scope","in":"query","required":false,"description":"Which namespace to report. \"new\" is the new gTLDs delegated from ICANN's 2012 round onward and is the default; \"legacy\" is the pre-2012 generics (.com, .net, .org and the sponsored strings); \"all\" is both. Totals are not comparable across scopes — .com alone is several times every new gTLD combined. Every response repeats the scope it used in meta.scope.","schema":{"type":"string","enum":["new","legacy","all"],"default":"new"}}]}},"/api/v1/tld":{"get":{"operationId":"listTlds","tags":["TLDs"],"summary":"All new gTLDs with domain counts and growth.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per","in":"query","required":false,"description":"Rows per page.","schema":{"type":"integer","minimum":10,"maximum":500,"default":100}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["tld","latest_domains","change_1d","change_7d","change_30d"]}},{"name":"q","in":"query","required":false,"description":"Substring match on the TLD.","schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"description":"Which namespace to report. \"new\" is the new gTLDs delegated from ICANN's 2012 round onward and is the default; \"legacy\" is the pre-2012 generics (.com, .net, .org and the sponsored strings); \"all\" is both. Totals are not comparable across scopes — .com alone is several times every new gTLD combined. Every response repeats the scope it used in meta.scope.","schema":{"type":"string","enum":["new","legacy","all"],"default":"new"}}],"responses":{"200":{"description":"A page of TLDs.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/tld/{tld}":{"get":{"operationId":"getTld","tags":["TLDs"],"summary":"One TLD: counts, registry operator, backend, DNSSEC, delegation.","parameters":[{"name":"tld","in":"path","required":true,"description":"TLD without a leading dot, in ASCII form. IDNs use the A-label, e.g. xn--fiqs8s.","schema":{"type":"string","example":"xyz"}}],"responses":{"200":{"description":"One TLD.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/tld/{tld}/history":{"get":{"operationId":"getTldHistory","tags":["TLDs"],"summary":"Monthly domain history for one TLD, back to delegation.","parameters":[{"name":"tld","in":"path","required":true,"description":"TLD without a leading dot, in ASCII form. IDNs use the A-label, e.g. xn--fiqs8s.","schema":{"type":"string","example":"xyz"}}],"responses":{"200":{"description":"Monthly series.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/tld/{tld}/registrars":{"get":{"operationId":"getTldRegistrars","tags":["TLDs","Registrars"],"summary":"Registrar breakdown for one TLD, for the latest reported month.","parameters":[{"name":"tld","in":"path","required":true,"description":"TLD without a leading dot, in ASCII form. IDNs use the A-label, e.g. xn--fiqs8s.","schema":{"type":"string","example":"xyz"}}],"responses":{"200":{"description":"Registrars in this TLD, with the month they describe.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/registrar":{"get":{"operationId":"listRegistrars","tags":["Registrars"],"summary":"Registrar market share across new gTLDs.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"per","in":"query","required":false,"description":"Rows per page.","schema":{"type":"integer","minimum":10,"maximum":500,"default":100}},{"name":"group","in":"query","required":false,"description":"Set to 1 to combine related accreditations into corporate families. This grouping is inference by this site, not published by ICANN.","schema":{"type":"string","enum":["1"]}},{"name":"scope","in":"query","required":false,"description":"Which namespace to report. \"new\" is the new gTLDs delegated from ICANN's 2012 round onward and is the default; \"legacy\" is the pre-2012 generics (.com, .net, .org and the sponsored strings); \"all\" is both. Totals are not comparable across scopes — .com alone is several times every new gTLD combined. Every response repeats the scope it used in meta.scope.","schema":{"type":"string","enum":["new","legacy","all"],"default":"new"}}],"responses":{"200":{"description":"A page of registrars.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/registrar/{slug}":{"get":{"operationId":"getRegistrar","tags":["Registrars"],"summary":"One registrar, with its TLD portfolio.","parameters":[{"name":"slug","in":"path","required":true,"description":"Registrar slug as returned by listRegistrars, e.g. porkbun-llc-1861.","schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"description":"Which namespace to report. \"new\" is the new gTLDs delegated from ICANN's 2012 round onward and is the default; \"legacy\" is the pre-2012 generics (.com, .net, .org and the sponsored strings); \"all\" is both. Totals are not comparable across scopes — .com alone is several times every new gTLD combined. Every response repeats the scope it used in meta.scope.","schema":{"type":"string","enum":["new","legacy","all"],"default":"new"}}],"responses":{"200":{"description":"One registrar.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/registry":{"get":{"operationId":"listRegistries","tags":["Registries"],"summary":"Registry operators and their portfolios.","responses":{"200":{"description":"Registry operators.","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"name":"scope","in":"query","required":false,"description":"Which namespace to report. \"new\" is the new gTLDs delegated from ICANN's 2012 round onward and is the default; \"legacy\" is the pre-2012 generics (.com, .net, .org and the sponsored strings); \"all\" is both. Totals are not comparable across scopes — .com alone is several times every new gTLD combined. Every response repeats the scope it used in meta.scope.","schema":{"type":"string","enum":["new","legacy","all"],"default":"new"}}]}},"/api/v1/backend":{"get":{"operationId":"listBackends","tags":["Registries"],"summary":"Technical registry backends. Attribution is inferred, and each row says how.","responses":{"200":{"description":"Backends.","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"name":"scope","in":"query","required":false,"description":"Which namespace to report. \"new\" is the new gTLDs delegated from ICANN's 2012 round onward and is the default; \"legacy\" is the pre-2012 generics (.com, .net, .org and the sponsored strings); \"all\" is both. Totals are not comparable across scopes — .com alone is several times every new gTLD combined. Every response repeats the scope it used in meta.scope.","schema":{"type":"string","enum":["new","legacy","all"],"default":"new"}}]}},"/api/v1/dnssec":{"get":{"operationId":"getDnssec","tags":["Totals"],"summary":"Root signing and second-level signing rates.","responses":{"200":{"description":"DNSSEC adoption.","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"name":"scope","in":"query","required":false,"description":"Which namespace to report. \"new\" is the new gTLDs delegated from ICANN's 2012 round onward and is the default; \"legacy\" is the pre-2012 generics (.com, .net, .org and the sponsored strings); \"all\" is both. Totals are not comparable across scopes — .com alone is several times every new gTLD combined. Every response repeats the scope it used in meta.scope.","schema":{"type":"string","enum":["new","legacy","all"],"default":"new"}}]}},"/api/v1/parking":{"get":{"operationId":"getParking","tags":["Totals"],"summary":"Nameserver and parking provider share. A lower bound: nothing is resolved.","responses":{"200":{"description":"Provider share.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/calendar":{"get":{"operationId":"getCalendar","tags":["Pipeline"],"summary":"Delegation and launch events.","responses":{"200":{"description":"Events.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/upcoming":{"get":{"operationId":"getUpcoming","tags":["Pipeline"],"summary":"Strings contracted or in sunrise but not yet delegated.","responses":{"200":{"description":"Upcoming TLDs.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/changes":{"get":{"operationId":"getChanges","tags":["Pipeline"],"summary":"Detected registry and registrar identity changes: renames, operator moves.","responses":{"200":{"description":"Change events.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/status":{"get":{"operationId":"getStatus","tags":["Pipeline"],"summary":"Per-source freshness and data-quality checks. Read this to know how current the figures are.","responses":{"200":{"description":"Pipeline status.","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}