JSON API
Read-only and unauthenticated — no key, no signup. Rate limited to roughly 2 requests per second per IP, with a burst allowance, which is far above what any real integration needs. Every response carries the data dates so you can tell how fresh it is.
ETag. Sending
If-None-Match gets you a 304 and does not count meaningfully against
you — please do that rather than re-downloading unchanged data. Exceeding the limit
returns 429 with a Retry-After header; honour it and you
will not be blocked.
If you need the whole dataset regularly, the polite path is one paged sweep per day
against /api/v1/tld?per=500 — that is three requests — rather than
crawling 1,100 pages.
Aggregates only: there is no endpoint that returns domain names, because CZDS terms
prohibit redistributing zone data.
Licence: CC BY 4.0 — attribution required
Free to use, including commercially, with one condition: credit this site. Every response carries a
ready-made line in meta.attribution, so the easiest thing to paste is also the correct
thing.
"meta": {
"license": "CC-BY-4.0",
"license_url": "https://creativecommons.org/licenses/by/4.0/",
"attribution": "Data: nTLDData (ntlddata.com), CC-BY-4.0"
}
Where the medium allows, link to the page or endpoint the figures came from — a reader who wants to check a number should be one click from it. Full terms, including what the licence does not cover, are on the licence page: the upstream sources keep their own terms, and this licence applies to the statistics derived here rather than to ICANN's or IANA's originals.
Not a licence condition but the thing we care about most: state which month you are quoting. Registrar figures are about three months in arrears while zone counts are from yesterday, and a chart that mixes them is wrong in a way no reader can see. Why there are two clocks.
Scope: the API returns everything by default
The site defaults to new gTLDs, because that is what it is for. The API does not —
it returns every gTLD, new and legacy, and labels each row. A default that withheld a third of the
namespace was a trap: /api/v1/tld?q=com used to return seven matches and not
.com, which reads like an answer rather than a filter.
| Value | Returns | TLDs |
|---|---|---|
| (none) | Every gTLD — the default | 1,132 |
| ?scope=new | Delegated from ICANN's 2012 round onward | 1,114 |
| ?scope=legacy | .com, .net, .org and the other pre-2012 generics | 18 |
| ?scope=all | Explicitly both; same as the default | 1,132 |
Every row carries is_new_gtld, so the two populations are separable without a second
request. false means a legacy gTLD rather than "not a gTLD" — ccTLDs and the government
strings are never returned, because no monthly reports exist for them. Aggregates that span TLDs —
registrars, registries, backends — are recomputed per scope rather than filtered, so
?scope=legacy on /api/v1/registrar is a registrar's legacy book, not its whole
book with rows removed. meta.scope always names what was applied.
Changed on 19 August 2026: the default was new gTLDs only. If you relied on that, add
?scope=new and nothing else changes.
Endpoints
| Endpoint | Description |
|---|---|
| GET /api/v1/overview | Headline totals and the two data dates. |
| GET /api/v1/tld | Every gTLD, new and legacy. Supports ?sort=, ?dir=, ?page=, ?per=, ?q=, ?scope=. |
| GET /api/v1/tld/{tld} | One TLD with registry, backend and both domain figures. |
| GET /api/v1/tld/{tld}/history | Daily domain counts. ?days= up to 3650. |
| GET /api/v1/tld/{tld}/registrars | Registrar breakdown for a TLD, with the reporting month. |
| GET /api/v1/renewals | Keep rate per TLD: the share of domains renewed rather than dropped. |
| GET /api/v1/registrar | Registrar market share, latest reported month. ?group=1 combines families. |
| GET /api/v1/registrar/{slug} | One registrar with its TLD portfolio and monthly series. |
| GET /api/v1/registry | Registry operators and their portfolios. |
| GET /api/v1/backend | Registry backends with TLD and domain counts. Attribution is inferred. |
| GET /api/v1/country | Domains by registrar accreditation country — never registrant country. |
| GET /api/v1/country/{code} | Registrars accredited in one country. ISO 3166-1 alpha-2. |
| GET /api/v1/dns | Nameserver and parking provider share. |
| GET /api/v1/dns/{slug} | One provider: its nameserver suffixes, hostnames and TLD spread. |
| GET /api/v1/dnssec | Root signing and second-level signing rates. |
| GET /api/v1/parking | Parking and monetisation platform share. A lower bound. |
| GET /api/v1/calendar | Root-zone delegation events and the full delegation record. |
| GET /api/v1/upcoming | Strings contracted or in sunrise but not yet delegated. |
| GET /api/v1/changes | Detected registry and registrar identity changes. |
| GET /api/v1/status | Pipeline freshness — the same data as /status. |
Example
A legacy TLD, because it shows both clocks at once — and now shows them both populated. .com's zone was approved on 20 August 2026, so it carries a daily count from yesterday's zone and the figure Verisign filed with ICANN for April, 2.7 million apart. Neither is wrong; they are measuring different things on different days.
curl -s https://ntlddata.com/api/v1/tld/com | jq
{
"data": {
"tld": "com",
"type": "generic",
"is_new_gtld": false,
"domains": 165566051,
"stat_date": "2026-08-20",
"reported_domains": 168322419,
"reported_month": 202604,
"registry": "VeriSign Global Registry Services",
"backend": "Verisign",
"root_signed": true
},
"meta": {
"scope": "all",
"zone_data_date": "2026-08-18",
"registrar_month": 202604,
"data_version": 12
}
}
domains is strictly the zone-derived count and stat_date is the day it was
taken; reported_domains is the registry's own figure for reported_month, about
a quarter in arrears. They are never merged, because a caller could not then tell a count taken
yesterday from one filed three months ago. Either can be null: a TLD with no CZDS approval has no daily
count, and a TLD that has not filed has no reported one. Why there are two clocks.
Data currency. Domain counts on this page are from zone files dated and refresh daily. Registrar figures are from ICANN's monthly registry reports for May 2026, which ICANN publishes about three months in arrears; zone files contain no registrar information, so no fresher source exists. Full detail on methodology and live pipeline status.