Domain availability API
Ask whether a domain name is free and read its status, drop day, price today and registry facts as JSON. The free call reads the stored answer; a key adds a live check, and lists of up to 100 names need a paid RapidAPI subscription or the Investor plan.
- Without a key: the stored status, drop day, price today and registry facts of one name.
- With a key: a live check with the registry and a registrar. Up to 100 names in one call need a paid RapidAPI subscription or the Investor plan.
- Free calls need no key: 60 calls an hour and 100 a day from one address.
Try it
curl -X GET "https://api.unique.domains/v1/names/get.plumbing"
const response = await fetch("https://api.unique.domains/v1/names/get.plumbing", {
method: "GET",
});
const data = await response.json();
console.log(data);import requests
response = requests.get(
"https://api.unique.domains/v1/names/get.plumbing",
)
print(response.json())req, err := http.NewRequest("GET", "https://api.unique.domains/v1/names/get.plumbing", 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/names/get.plumbing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($ch);uri = URI("https://api.unique.domains/v1/names/get.plumbing")
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }{
"data": {
"id": "dom_4efccac7-d9df-4c96-a076-3e0cc64220ec",
"name": "get.plumbing",
"ending": "plumbing",
"tracked": true,
"status": "for_sale",
"lifecycle": "active",
"drop": {
"kind": "none"
},
"ownableNow": false,
"price": {
"kind": "aftermarket",
"firstYear": null,
"registrar": null,
"renewal": null,
"transfer": null,
"isPromo": null,
"renewalTrap": false
},
"registry": {
"createdAt": "2020-06-03T08:30:53.000Z",
"updatedAt": "2026-08-12T04:41:40.000Z",
"expiresAt": "2027-06-03T08:30:53.000Z",
"registryUpdatedAt": "2026-10-22T13:39:28.000Z",
"registrar": {
"name": "GoDaddy.com, LLC",
"ianaId": 146,
"url": null
}
},
"parking": "afternic",
"length": 3,
"format": null,
"shape": "single",
"word": {
"id": "wrd_23922",
"word": "get",
"slug": "get"
},
"rating": {
"band": "prime"
},
"comps": {
"tier": "same_word",
"count": 10,
"medianUsd": 2677,
"endingsSoldOn": 0
}
},
"meta": {
"asOf": null,
"cursor": null,
"limit": null
},
"links": {
"self": "https://api.unique.domains/v1/names/get.plumbing",
"next": null,
"register": null,
"product": null,
"dataset": null
}
}Endpoints
/names/{name}The stored answer for one domain name: status, drop day, price today, registry facts, word facts and similar sales.FreePOST/names/{name}/checkReads one name live from its registry and a registrar, stores the answer and returns the keyed name resource.PaidPOST/names/batchThe keyed name resource for up to 100 names in one call.PaidWays to call it
npm install @uniquedomains/domain-availabilitynpx @uniquedomains/domain-availability get.plumbingDomain availability API questions
Contact meIs the availability check live?
The free call reads the stored answer, never live. POST /names/{name}/check reads the name live from its registryRegistryThe organisation that runs an ending, like the company behind .com. It sets the rules and the price registrars pay.Read the definition and a registrarRegistrarThe company you buy and renew a domain through, such as Namecheap or GoDaddy. It does not own the name, it only registers it for you.Read the definition; it needs a key and counts one live check when the live read runs, within the key's monthly live checks and at most 200 a day per account.
How many calls are free?
One name at a time is free: no key, 60 calls an hour and 100 a day from one address. Up to 100 names in one call needs a paid RapidAPI subscription to the Domain Availability API, or a member key on the Investor plan.
What does a name nobody has checked return?
A name the catalog has not stored answers 200 with empty facts and tracked set to false, never a 404. The live check stores it.