TLD Intelligence API
Get detailed intelligence about a TLD including pricing, restrictions, registrar support, and usage statistics. Use this reference to choose an operation and integrate its documented response contract.
Operations
GET /v1/tlds
GET
/v1/tlds
Credits: 0
Query parameters
| Parameter | Type | required |
|---|---|---|
| type |
string
Allowed values
gtldcctldnew-gtldidn
|
optional |
| trust_tier |
string
Allowed values
premiumstandardeconomysuspicious
|
optional |
| use_case | string | optional |
Response fields
| Field | Type |
|---|---|
tlds[] |
object[] |
tlds[] |
object |
tlds[].tld |
string |
tlds[].type |
string |
tlds[].name |
string |
tlds[].rdap_supported |
boolean |
tlds[].trust_tier |
string |
tlds[].popularity_rank |
integer |
tlds[].registration_usd |
number |
total |
integer |
by_type |
object |
by_type.gTLD |
integer |
by_type.ccTLD |
integer |
by_type.newTLD |
integer |
by_type.idn |
integer |
by_trust_tier |
object |
by_trust_tier.premium |
integer |
by_trust_tier.standard |
integer |
by_trust_tier.economy |
integer |
use_case |
string |
meta |
object |
Example request
curl "https://domscan.net/v1/tlds?type=gtld&trust_tier=premium&use_case=startup"const response = await fetch("https://domscan.net/v1/tlds?type=gtld&trust_tier=premium&use_case=startup");
const data = await response.json();
console.log(data);import requests
response = requests.get(
"https://domscan.net/v1/tlds?type=gtld&trust_tier=premium&use_case=startup",
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/tlds?type=gtld&trust_tier=premium&use_case=startup", nil)
if err != nil {
panic(err)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.Status, string(data))
}require "json"
require "net/http"
uri = URI("https://domscan.net/v1/tlds?type=gtld&trust_tier=premium&use_case=startup")
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))Example response
{
"tlds": [
{
"tld": "com",
"type": "gTLD",
"name": "example",
"rdap_supported": false,
"trust_tier": "premium",
"popularity_rank": 1,
"registration_usd": 0.5
}
],
"total": 1,
"by_type": {
"gTLD": 1,
"ccTLD": 1,
"newTLD": 1,
"idn": 1
},
"by_trust_tier": {
"premium": 1,
"standard": 1,
"economy": 1
},
"use_case": "example",
"meta": {}
}
HTTP status codes
200OK429Too Many Requests
GET /v1/tlds/:tld
GET
/v1/tlds/:tld
Credits: 1
Query parameters
| Parameter | Type | required |
|---|---|---|
| tld | string | required |
Response fields
| Field | Type |
|---|---|
tld |
string |
type |
string |
name |
string |
description |
string |
introduced |
integer |
operator |
string | null |
country |
string | null |
restrictions |
string |
rdap_supported |
boolean |
rdap_endpoint |
string | null |
idn_supported |
boolean |
dnssec_supported |
boolean |
pricing |
object |
pricing.registration_usd |
number |
pricing.renewal_usd |
number |
pricing.transfer_usd |
number |
pricing.currency |
string |
pricing.source |
string |
popularity |
object |
popularity.rank |
integer |
popularity.tier |
string |
popularity.use_cases[] |
string[] |
trust |
object |
trust.score |
number |
trust.tier |
string |
trust.notes |
string | null |
meta |
object |
Example request
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/tlds/com"const response = await fetch("https://domscan.net/v1/tlds/com", {
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.get(
"https://domscan.net/v1/tlds/com",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/tlds/com", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.Status, string(data))
}require "json"
require "net/http"
uri = URI("https://domscan.net/v1/tlds/com")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))Example response
{
"tld": "com",
"type": "gTLD",
"name": "Commercial",
"description": "The most popular and trusted domain extension worldwide",
"introduced": 1985,
"operator": "Verisign",
"restrictions": "None - open registration",
"rdap_supported": true,
"rdap_endpoint": "https://rdap.verisign.com/com/v1/",
"idn_supported": true,
"dnssec_supported": true,
"pricing": {
"registration_usd": 12,
"renewal_usd": 12,
"transfer_usd": 12,
"currency": "USD",
"source": "market_average"
},
"popularity": {
"rank": 1,
"tier": "top10",
"use_cases": [
"business",
"personal",
"startup",
"enterprise",
"tech",
"e-commerce",
"blog",
"portfolio"
]
},
"trust": {
"score": 100,
"tier": "premium",
"notes": "Most trusted TLD globally"
},
"meta": {
"served_by": "pop=MAD country=ES"
}
}
HTTP status codes
200OK401Unauthorized402Payment Required404Not Found429Too Many Requests