Domain search API
Last updated November 8, 2026
Show your users whether a domain name is available and what it costs at CertPing, from your own website or app. The API is read-only: it never registers or reserves a name.
Getting started
- Create a CertPing account for your company.
- In the CertPing app, open Domains, then Developer API keys, and create a key. Copy the key when it is shown: it starts with
cpk_live_and is shown only once. - Optional: when you create the key, list the IP addresses your servers call from in its IP allowlist. We then refuse the key from any other address, so a leaked key cannot be used elsewhere.
- Call the endpoints below from your servers, never a browser.
Authentication
Send the key in the Authorization header of every request. Keep it on your servers: anyone holding it spends your quota.
Authorization: Bearer cpk_live_...Every endpoint is under https://dns-api.certping.com/api/v1/domains/token-api.
GET /domains/availability
Whether names can be registered, with what each costs to register, renew and transfer in.
domain- A full name such as example.com. Checks that one name. Takes precedence over name.
name- A name without an ending, such as example. Checks it under the popular endings we sell.
curl -H "Authorization: Bearer $CERTPING_API_KEY" \
"https://dns-api.certping.com/api/v1/domains/token-api/domains/availability?domain=example.com"{
"query": "example.com",
"currency": "USD",
"results": [
{
"domain": "example.com",
"tld": "com",
"availability": "AVAILABLE",
"purchasable": true,
"premium": false,
"registrationPrice": 13.00,
"renewalPrice": 14.95,
"transferPrice": 13.40,
"registrationTerms": [
{ "years": 1, "total": 13.00 },
{ "years": 2, "total": 27.95 }
]
}
]
}GET /domains/prices
Our one-year prices for the popular endings, and the shortest term each is sold for.
curl -H "Authorization: Bearer $CERTPING_API_KEY" \
"https://dns-api.certping.com/api/v1/domains/token-api/domains/prices"{
"currency": "USD",
"prices": [
{
"tld": "com",
"registrationPrice": 13.00,
"renewalPrice": 14.95,
"transferPrice": 13.40,
"registrationTerm": { "years": 1, "total": 13.00 },
"renewalTerm": { "years": 1, "total": 14.95 }
}
]
}Reading the results
availabilityisAVAILABLE,TAKENorUNKNOWN.UNKNOWNmeans the registry could not be asked just then; it is never a guess either way. When a registry was busy, the response also carriesretryAfterSeconds: ask again after it.- Prices are in the response’s
currency, as numbers with two decimals. A price isnullwhere we do not sell that term, such as one year of .ai, or where it cannot be quoted right now; never show anullprice as free. purchasableis false for a name that cannot be bought online, such as some premium names.- Some endings, such as .ai, are sold for two years at least:
registrationTermslists each term with its total. - Answers can be up to a minute old. New fields may be added to any response, so ignore fields you do not know.
Rate limits
Your organization may make 60 availability checks a minute across all its keys. A check counts even when the registrar then fails to answer; a malformed name or an ending we do not sell does not. A successful or quota-refused availability answer carries RateLimit-Limit and RateLimit-Remaining for those checks, and RateLimit-Reset: the window’s length in seconds, or on a refusal the seconds until it ends. Other answers may carry RateLimit-Limit and RateLimit-Remaining for the key’s overall request rate instead. A refused request carries Retry-After, the seconds to wait.
Prices change rarely: fetch /domains/prices once and keep it for a few minutes rather than on every page view. If you need a higher limit, contact us.
Errors
An error answers with a JSON body whose message says what went wrong.
- 400
- The name is not a valid domain name, or we do not sell its ending. A malformed name or an ending we do not sell costs no quota.
- 401
- The key is missing, unknown, revoked or expired.
- 403
- The key lacks the Domain search permission, or is used from an address outside its IP allowlist.
- 423
- Domain search is switched off for maintenance. Try again later.
- 429
- A rate limit or your organization's availability quota is spent. Wait the seconds in Retry-After.
- 500
- Something failed on our side. Try again in a moment.
- 502
- The registrar answered with an error. Try again shortly; contact us if it lasts.
- 503
- The registrar is busy or prices are briefly unavailable. Wait the seconds in Retry-After, or a few seconds.
- 504
- The registrar did not answer in time. Try again in a moment.
OpenAPI
The OpenAPI description describes both endpoints for code generators and API tools.