Check domain availability
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 viahttps://dash.cloudflare.com/{account_id}/domains/registrationsinstead.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
- Call this endpoint with domains the user wants to register.
- For each domain where
registrable: true, present pricing to the user. - If
tier: premium, note that premium registration is not currently supported by this API and do not proceed toPOST /registrations. - Proceed to
POST /registrationsonly for supported non-premium domains.
Security
API Token
The preferred authorization scheme for interacting with the Cloudflare API. Create a token.
API Email + API Key
The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.
The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.
Check domain availability
import Cloudflare from 'cloudflare';
const client = new Cloudflare({
apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted
});
const response = await client.registrar.check({
account_id: '023e105f4ecef8ad9ca31a8372d0c353',
domains: [
'myawesomebrand.com',
'myawesomebrand.net',
'myawesomebrand.org',
'myawesomebrand.app',
'myawesomebrand.dev',
],
});
console.log(response.domains);{
"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
{
"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
}