Cloudflare APIdomains.cloudflare.com ↗
Search available domain names with pricing via the Cloudflare Registrar API. Check registration fees, renewal costs, and list all supported TLDs.
What is the Cloudflare API?
This API exposes 2 endpoints for querying domain availability and pricing on Cloudflare Registrar. The search_domains endpoint accepts either a bare name like mysite or a full domain like mysite.com, returning availability status, registration and renewal fees, premium flags, and alternative suggestions. The list_tlds endpoint returns the full catalog of TLDs Cloudflare supports for registration, including a count of supported extensions.
curl -X POST 'https://api.parse.bot/scraper/e96e8182-c651-4dd2-b96b-5b96b17d3e61/search_domains' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"domain": "cloudtest.com"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace domains-cloudflare-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.cloudflare_registrar_domain_search_api import CloudflareRegistrar, Domain, DomainCheck, SearchResult, TldList
client = CloudflareRegistrar()
# Search for a specific domain with TLD to get availability and pricing
result = client.domains.search(domain="myproject.dev")
# Access the check_result for the specific domain queried
check = result.check_result
print(check.name, check.available, check.can_register, check.supported_tld, check.premium)
print(check.fees.registration_fee, check.fees.renewal_fee, check.fees.currency)
# Iterate over domain suggestions
for domain in result.domains:
print(domain.name, domain.availability, domain.price, domain.renewal, domain.premium)
# List all supported TLDs
tld_list = client.tldlists.list()
print(tld_list.total)
for tld in tld_list.tlds:
print(tld)
Search for available domain names on Cloudflare Registrar. Accepts a bare name (e.g. 'mysite') to get suggestions across multiple TLDs, or a full domain with TLD (e.g. 'mysite.com') to check specific availability. Returns a list of domain suggestions with pricing and availability, plus a detailed check_result when a specific TLD is queried. Each domain includes registration price and renewal cost. The check_result (present only for TLD-specific queries) adds fee breakdown and registration eligibility.
| Param | Type | Description |
|---|---|---|
| domainrequired | string | Domain name to search for. Can be a bare name (e.g. 'mysite') or a full domain with TLD (e.g. 'mysite.com'). When a TLD is included, the response includes a check_result with detailed availability and fee information for that specific domain. |
{
"type": "object",
"fields": {
"domains": "array of domain objects with name, availability, premium, price, and renewal fields",
"check_result": "object with detailed availability info (name, available, can_register, supported_tld, premium, fees) — present only when a specific TLD was included in the query"
},
"sample": {
"data": {
"domains": [
{
"name": "example.com",
"price": 10.46,
"premium": false,
"renewal": 10.46,
"availability": "reserved"
},
{
"name": "examplegames.com",
"price": 10.46,
"premium": false,
"renewal": 10.46,
"availability": "available"
}
],
"check_result": {
"fees": {
"currency": "USD",
"renewal_fee": 10.46,
"transfer_fee": 10.46,
"redemption_fee": 44,
"registration_fee": 10.46
},
"name": "example.com",
"premium": false,
"available": false,
"can_register": false,
"supported_tld": true
}
},
"status": "success"
}
}About the Cloudflare API
Domain Search
The search_domains endpoint accepts a single required domain parameter. When you pass a full domain with a TLD (e.g. example.com), the response includes a check_result object with fields: name, available, can_register, supported_tld, premium, and fees. This gives you a precise answer for that specific domain. The response also includes a domains array of alternative suggestions, each carrying name, availability, premium, price, and renewal fields — useful for surfacing related options when the primary choice is taken or premium-priced.
Bare-Name Lookup
When you provide only a name without a TLD (e.g. example), search_domains skips the check_result object and returns the domains array populated with available combinations across multiple TLDs. Each object in that array still exposes price and renewal so you can compare registration costs across extensions before committing.
TLD Catalog
The list_tlds endpoint takes no inputs and returns a tlds array of TLD strings along with a total integer. This is useful for validating user input before sending a search query, building a TLD picker UI, or auditing which extensions are eligible for at-cost registration through Cloudflare Registrar.
The Cloudflare API is a managed, monitored endpoint for domains.cloudflare.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when domains.cloudflare.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official domains.cloudflare.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Check whether a specific domain is available and retrieve its registration and renewal fees before purchase.
- Generate a list of available domain alternatives when a user's preferred name is taken.
- Compare registration prices across TLDs for a given name using the
priceandrenewalfields. - Identify premium domains and filter them out of suggestions using the
premiumflag. - Populate a TLD selection dropdown by pulling the full supported TLD list from
list_tlds. - Validate that a user-entered TLD is supported before submitting a domain search.
- Build a bulk domain availability checker by iterating a name list through
search_domains.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Cloudflare have an official developer API for domain registration?+
What does the `check_result` object contain and when does it appear?+
check_result is only present when you pass a full domain including a TLD (e.g. mysite.io) to search_domains. It returns six fields: name (the queried domain), available (boolean), can_register (whether Cloudflare can register it), supported_tld (whether the TLD is in their catalog), premium (boolean), and fees (registration cost details). When you pass a bare name without a TLD, the response omits check_result and only populates the domains suggestions array.Does the API return WHOIS data or ownership details for registered domains?+
Can I retrieve transfer pricing or domain redemption fees?+
fees and price/renewal fields, but transfer pricing and redemption grace period costs are not exposed. You can fork this API on Parse and revise it to add an endpoint covering those fee types.