---
title: Check domain availability
---

[Skip to content](#%5Ftop) 

[API Reference](https://developers.cloudflare.com/api)

[Registrar Sandbox](https://developers.cloudflare.com/api/resources/registrar%5Fsandbox)

Copy Markdown

Open in **Claude**

Open in **ChatGPT**

Open in **Cursor**

---

**Copy Markdown**

**View as Markdown**

# Check domain availability

POST/accounts/{account\_id}/registrar-sandbox/domain-check

Performs real-time, authoritative availability checks directly against domain registries. Use this endpoint to verify a domain is available before attempting registration via `POST /registrations`.

**Important:** Unlike the Search endpoint, these results are authoritative and reflect current registry status. Always check availability immediately before registration as domain status can change rapidly.

**Note:** This endpoint uses POST to accept a list of domains in the request body. It is a read-only operation — it does not create, modify, or reserve any domains.

### Extension support

Only domains on extensions supported for programmatic registration by this API can be registered. If you check a domain on an unsupported extension, the response will include `registrable: false` with a `reason` field explaining why:

* `extension_not_supported_via_api` — Cloudflare Registrar supports this extension in the dashboard, but it is not yet available for programmatic registration via this API. Register via `https://dash.cloudflare.com/{account_id}/domains/registrations` instead.
* `extension_not_supported` — This extension is not supported by Cloudflare Registrar.
* `extension_disallows_registration` — The extension’s registry has temporarily or permanently frozen new registrations. No registrar can register domains on this extension at this time.
* `domain_premium` — The domain is premium priced. Premium registration is not currently supported by this API.
* `domain_unavailable` — The domain is already registered, reserved, or otherwise not available for registration on a supported extension.

The `reason` field is only present when `registrable` is `false`.

### Behavior

* Maximum 20 domains per request
* Pricing is only returned for domains where `registrable: true`
* Results are not cached; each request queries the registry

### Workflow

1. Call this endpoint with domains the user wants to register.
2. For each domain where `registrable: true`, present pricing to the user.
3. If `tier: premium`, note that premium registration is not currently supported by this API and do not proceed to `POST /registrations`.
4. Proceed to `POST /registrations` only for supported non-premium domains.

##### Security

API Token

The preferred authorization scheme for interacting with the Cloudflare API. [Create a token](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/).

**Example:**`Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY`

API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

**Example:**`X-Auth-Email: user@example.com`

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

**Example:**`X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194`

##### Path ParametersExpand Collapse 

account\_id: string

Identifier.

maxLength32

##### Body ParametersJSONExpand Collapse 

domains: array of string

List of fully qualified domain names (FQDNs) to check for availability. Each domain must include the extension.

* Minimum: 1 domain.
* Maximum: 20 domains per request.
* The response returns domains on unsupported extensions with `registrable: false` and a `reason` field.
* The response may omit malformed domain names (e.g., names missing an extension).

##### ReturnsExpand Collapse 

errors: array of object { code, message, source } 

code: number

minimum1000

message: string

source: optional object { pointer } 

Location of the invalid value that caused the error.

pointer: string

JSON Pointer to the invalid or missing request value.

messages: array of object { code, message, source } 

code: number

minimum1000

message: string

source: optional object { pointer } 

Location of the invalid value that caused the error.

pointer: string

JSON Pointer to the invalid or missing request value.

result: object { domains } 

Contains the availability check results.

domains: array of object { name, registrable, pricing, 2 more } 

Array of domain availability results. Results for unsupported extensions contain `registrable: false` and a `reason`field. The response may omit malformed domain names.

name: string

The fully qualified domain name (FQDN) in punycode format for internationalized domain names (IDNs).

registrable: boolean

Indicates programmatic registration eligibility according to a real-time registry check.

* `true`: The domain is available for registration. The response includes the `pricing` object.
* `false`: A restriction prevents registration. See the `reason` field for details. Some results, such as premium domains, may still include `tier`.

pricing: optional object { currency, registration\_cost, renewal\_cost } 

Provides annual pricing information for a registrable domain. This object appears only when `registrable` is `true`. The API returns all per-year prices as strings to preserve decimal precision.

`registration_cost` and `renewal_cost` frequently have the same value, but may differ, especially when registries set different premium rates for initial registration and renewal. For a multi-year registration (e.g., 4 years), `registration_cost` applies to the first year and `renewal_cost`applies to each subsequent year. The values reflect the current registry rate, which may change over time. Search and Check may surface premium pricing, but this API currently supports standard registrations only.

currency: string

ISO-4217 currency code for the prices (e.g., “USD”, “EUR”, “GBP”).

registration\_cost: string

The first-year cost to register this domain. For premium domains (`tier: premium`), the registry sets this price, which may significantly exceed standard pricing. For multi-year registrations, this cost applies to the first year only; `renewal_cost` applies to subsequent years.

renewal\_cost: string

Per-year renewal cost for this domain. Applied to each year beyond the first year of a multi-year registration, and to each annual auto-renewal thereafter. May differ from `registration_cost`, especially for premium domains where initial registration often costs more than renewals.

reason: optional "extension\_not\_supported\_via\_api" or "extension\_not\_supported" or "extension\_disallows\_registration" or 2 more

Appears only when `registrable` is `false` and explains the result.

* `extension_not_supported_via_api`: Cloudflare Registrar supports this extension in the dashboard but currently excludes it from programmatic registration through this API. The user can register via `https://dash.cloudflare.com/{account_id}/domains/registrations`.
* `extension_not_supported`: Cloudflare Registrar excludes this extension entirely.
* `extension_disallows_registration`: The extension’s registry temporarily or permanently freezes new registrations. Registrars currently cannot register domains on this extension.
* `domain_premium`: The domain carries premium pricing. This API currently supports standard registrations only.
* `domain_unavailable`: An existing registration, reservation, or other registry restriction makes the domain unavailable on a supported extension.

One of the following:

"extension\_not\_supported\_via\_api"

"extension\_not\_supported"

"extension\_disallows\_registration"

"domain\_premium"

"domain\_unavailable"

tier: optional "standard" or "premium"

The pricing tier for this domain. A `registrable` value of `true` always includes this field, which defaults to `standard` for most domains. A `registrable` value of `false` may omit it.

* `standard`: Standard registry pricing.
* `premium`: Premium domain with higher pricing from the registry.

One of the following:

"standard"

"premium"

success: true

Whether the API call was successful.

### Check domain availability

HTTP

HTTPHTTP

TypeScriptTypeScript

PythonPython

GoGo

TerraformTerraform

```
curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar-sandbox/domain-check \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    -d '{
          "domains": [
            "myawesomebrand.com",
            "myawesomebrand.net",
            "myawesomebrand.org",
            "myawesomebrand.app",
            "myawesomebrand.dev"
          ]
        }'
```

200 example

200 example

200 example

200 example

200 example

200 example

200 example

400 example

400 example

400 example

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "xq7mz9brand.com",
        "pricing": {
          "currency": "USD",
          "registration_cost": "8.57",
          "renewal_cost": "8.57"
        },
        "registrable": true,
        "tier": "standard"
      },
      {
        "name": "xq7mz9brand.net",
        "pricing": {
          "currency": "USD",
          "registration_cost": "9.95",
          "renewal_cost": "9.95"
        },
        "registrable": true,
        "tier": "standard"
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "example.com",
        "reason": "domain_unavailable",
        "registrable": false
      },
      {
        "name": "example.net",
        "reason": "domain_unavailable",
        "registrable": false
      },
      {
        "name": "example.org",
        "reason": "domain_unavailable",
        "registrable": false
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "cloudflare.com",
        "reason": "domain_unavailable",
        "registrable": false
      },
      {
        "name": "my-unique-startup-name-2024.com",
        "pricing": {
          "currency": "USD",
          "registration_cost": "8.57",
          "renewal_cost": "8.57"
        },
        "registrable": true,
        "tier": "standard"
      },
      {
        "name": "my-unique-startup-name-2024.dev",
        "pricing": {
          "currency": "USD",
          "registration_cost": "10.11",
          "renewal_cost": "10.11"
        },
        "registrable": true,
        "tier": "standard"
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "coffee.xyz",
        "reason": "domain_premium",
        "registrable": false,
        "tier": "premium"
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "example.py",
        "reason": "extension_disallows_registration",
        "registrable": false
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "example.horse",
        "reason": "extension_not_supported",
        "registrable": false
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "mybrand.uk",
        "reason": "extension_not_supported_via_api",
        "registrable": false
      },
      {
        "name": "mybrand.com",
        "pricing": {
          "currency": "USD",
          "registration_cost": "8.57",
          "renewal_cost": "8.57"
        },
        "registrable": true,
        "tier": "standard"
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [
    {
      "code": 1006,
      "message": "domains array must contain at least one domain"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
```

```
{
  "errors": [
    {
      "code": 1008,
      "message": "None of the provided domains are valid or have supported extensions"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
```

```
{
  "errors": [
    {
      "code": 1007,
      "message": "domains array exceeds maximum of 20 domains"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
```

##### Returns Examples

200 example

200 example

200 example

200 example

200 example

200 example

200 example

400 example

400 example

400 example

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "xq7mz9brand.com",
        "pricing": {
          "currency": "USD",
          "registration_cost": "8.57",
          "renewal_cost": "8.57"
        },
        "registrable": true,
        "tier": "standard"
      },
      {
        "name": "xq7mz9brand.net",
        "pricing": {
          "currency": "USD",
          "registration_cost": "9.95",
          "renewal_cost": "9.95"
        },
        "registrable": true,
        "tier": "standard"
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "example.com",
        "reason": "domain_unavailable",
        "registrable": false
      },
      {
        "name": "example.net",
        "reason": "domain_unavailable",
        "registrable": false
      },
      {
        "name": "example.org",
        "reason": "domain_unavailable",
        "registrable": false
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "cloudflare.com",
        "reason": "domain_unavailable",
        "registrable": false
      },
      {
        "name": "my-unique-startup-name-2024.com",
        "pricing": {
          "currency": "USD",
          "registration_cost": "8.57",
          "renewal_cost": "8.57"
        },
        "registrable": true,
        "tier": "standard"
      },
      {
        "name": "my-unique-startup-name-2024.dev",
        "pricing": {
          "currency": "USD",
          "registration_cost": "10.11",
          "renewal_cost": "10.11"
        },
        "registrable": true,
        "tier": "standard"
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "coffee.xyz",
        "reason": "domain_premium",
        "registrable": false,
        "tier": "premium"
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "example.py",
        "reason": "extension_disallows_registration",
        "registrable": false
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "example.horse",
        "reason": "extension_not_supported",
        "registrable": false
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "domains": [
      {
        "name": "mybrand.uk",
        "reason": "extension_not_supported_via_api",
        "registrable": false
      },
      {
        "name": "mybrand.com",
        "pricing": {
          "currency": "USD",
          "registration_cost": "8.57",
          "renewal_cost": "8.57"
        },
        "registrable": true,
        "tier": "standard"
      }
    ]
  },
  "success": true
}
```

```
{
  "errors": [
    {
      "code": 1006,
      "message": "domains array must contain at least one domain"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
```

```
{
  "errors": [
    {
      "code": 1008,
      "message": "None of the provided domains are valid or have supported extensions"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
```

```
{
  "errors": [
    {
      "code": 1007,
      "message": "domains array exceeds maximum of 20 domains"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
```