Skip to content

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

  1. Create a CertPing account for your company.
  2. 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.
  3. 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.
  4. 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

  • availability is AVAILABLE, TAKEN or UNKNOWN. UNKNOWN means the registry could not be asked just then; it is never a guess either way. When a registry was busy, the response also carries retryAfterSeconds: ask again after it.
  • Prices are in the response’s currency, as numbers with two decimals. A price is null where we do not sell that term, such as one year of .ai, or where it cannot be quoted right now; never show a null price as free.
  • purchasable is 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: registrationTerms lists 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.