FreeTLD Intelligence API
Get TLD stats
GET/tlds/{tld}/statsNo key
The ending's latest market figures, and with history its last daily rows.
Free for a public-set TLD (the website page carries these aggregates), keyed outside it.
AccessNo key. Limited per address; a key adds the paid fields.
BillingOne call.
FormatsJSON
Request
tldstringRequiredPathThe ending without the dot (ai), ASCII or xn-- form; lowercased, a leading dot stripped.
historyintegerOptionalQueryDays of daily rows, newest first; absent = the latest row only.
fieldsstringOptionalQueryComma-separated top-level keys to keep; an unknown key answers 400 unsupported_field.
curl -X GET "https://api.unique.domains/v1/tlds/ai/stats"
const response = await fetch("https://api.unique.domains/v1/tlds/ai/stats", {
method: "GET",
});
const data = await response.json();
console.log(data);import requests
response = requests.get(
"https://api.unique.domains/v1/tlds/ai/stats",
)
print(response.json())req, err := http.NewRequest("GET", "https://api.unique.domains/v1/tlds/ai/stats", nil)
if err != nil {
panic(err)
}
res, err := http.DefaultClient.Do(req)$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://api.unique.domains/v1/tlds/ai/stats",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($ch);uri = URI("https://api.unique.domains/v1/tlds/ai/stats")
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }Response
tldstringBare ending.
daystringThe day of these figures.
computedAtstringtrackedintegeravailableintegeravailableOneWordintegerresellintegerexpiring90dintegerregistrations90dintegermedianBuynumbermedianRenewnumbercheapestRegistrarstringsales12mintegerUsable sales, 365 days.
salesPrev12mintegerThe 365 days before.
salesMedian12mintegersalesTrendsalesMonthlyobjectsales30dintegerUsable sales, 30 days.
salesMedian30dintegersalesMedianPrev12mintegerpanelobjecthistoryobject[]Errors
{
"data": {
"tld": "ai",
"day": "2026-11-05",
"computedAt": "2026-11-05T03:12:00.000Z",
"tracked": 241300,
"available": 88200,
"availableOneWord": 1840,
"resell": 31400,
"expiring90d": 9100,
"registrations90d": 5210,
"medianBuy": 79.98,
"medianRenew": 79.98,
"cheapestRegistrar": "porkbun",
"sales12m": 2312,
"salesPrev12m": 1870,
"salesMedian12m": 2500,
"salesTrend": "up",
"salesMonthly": {
"from": "2025-11",
"counts": [
170,
182,
190,
175,
201,
188,
196,
205,
199,
210,
198,
197
]
},
"sales30d": 201,
"salesMedian30d": 2400,
"salesMedianPrev12m": 2200,
"panel": {
"names": 20000,
"available": 6120,
"resell": 2210,
"expiring90d": 410
}
},
"meta": {
"asOf": "2026-11-05T08:00:00Z",
"cursor": null,
"limit": null
},
"links": {
"self": "https://api.unique.domains/v1/tlds/ai/stats",
"next": null,
"register": null,
"product": null,
"dataset": null
}
}