tld-list APItld-list.com ↗
Check domain availability, premium status, and cheapest registration, renewal, and transfer prices across hundreds of TLDs via the tld-list.com API.
What is the tld-list API?
The tld-list.com API exposes a single endpoint, check_domain_availability, that returns availability status, premium-domain flags, and the cheapest registration, renewal, and transfer prices (in USD) for each TLD checked. A single call can cover one specific extension or fan out across dozens of popular extensions simultaneously, with up to 9 response fields per extension row including is_available, is_premium, and all three price tiers.
curl -X GET 'https://api.parse.bot/scraper/39560fdc-e7e5-4722-907b-97cb82e25551/check_domain_availability?domain=examplewidget' \ -H 'X-API-Key: $PARSE_API_KEY'
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 tld-list-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.
"""Walkthrough: TLD-List domain availability SDK — check pricing across extensions."""
from parse_apis.tld_list_com_api import TldList, InputNotFound
client = TldList()
# Check a bare name against the top 5 most popular extensions.
result = client.domain_checks.check(domain="examplewidget", limit=5)
print(f"Checked {result.checked_count} extensions for '{result.name}' ({result.currency})")
for ext in result.results:
reg = ext.cheapest_registration
promo = f" (promo {reg.promo_code})" if reg.promo_code else ""
avail = "available" if ext.is_available else ("unknown" if ext.is_available is None else "taken")
print(f" {ext.domain}: {avail} — register ${reg.price}{promo}, renew ${ext.cheapest_renewal.price}")
# Check a specific full domain; handle the case where the extension is not tracked.
try:
single = client.domain_checks.check(domain="examplewidget.com")
hit = single.results[0]
bv = hit.best_value
print(f"\nBest value for {hit.domain}: {bv.registrar} — register ${bv.registration_price}, renew ${bv.renewal_price}")
except InputNotFound:
print("Extension not tracked on the site")
# Check specific extensions by name.
multi = client.domain_checks.check(domain="myshop", tlds="com,net,org")
for ext in multi.results:
if ext.cheapest_transfer.promo_code:
print(f" {ext.domain} transfer deal: ${ext.cheapest_transfer.price} with {ext.cheapest_transfer.promo_code}")
print("exercised: domain_checks.check (bare name / full domain / tlds filter)")
Checks domain availability and premium status and returns the cheapest registration, renewal and transfer prices (USD) for each extension checked. Pass a full domain (e.g. one shape: 'example.com') to check that single extension, or a bare name (no dot) to check it against several extensions: either the comma-separated extensions in 'tlds', or, when 'tlds' is omitted, the site's most popular extensions (the first 'limit' by popularity, default 10, max 50). Each result row carries the site's availability status ('available', 'unavailable', 'premium-available', 'premium-unavailable' or 'unknown' when the site could not determine it), derived is_available (null when unknown) and is_premium booleans, plus the extension's cheapest offers with registrar, price, pre-promo original price and promo code when one applies, and the site's best 3-year-value registrar. Prices are the site's compared registrar prices for a standard (non-premium) name; premium names cost more at the registrar. A full domain whose extension is not tracked by the site returns a stale_input error; an invalid name returns input_format_invalid. One call costs a page load plus one request per distinct extension lookup and one availability request.
| Param | Type | Description |
|---|---|---|
| tlds | string | Comma-separated extensions to check when 'domain' has no extension, e.g. 'com,net,co.uk' (leading dots optional). Ignored when 'domain' already includes an extension. At most 50 are checked. |
| limit | integer | Number of most-popular extensions to check when neither an extension in 'domain' nor 'tlds' is given. Clamped to 50. |
| domainrequired | string | Domain name to check, with or without an extension (e.g. 'examplewidget' or 'examplewidget.com'). Letters, digits and hyphens per label; case-insensitive. |
{
"type": "object",
"fields": {
"name": "the domain label that was checked (without extension)",
"results": "array of per-extension rows: domain, tld, status, is_available, is_premium, cheapest_registration/cheapest_renewal/cheapest_transfer offers (registrar, registrar_id, price, original_price, promo_code), best_value (registrar, registration_price, renewal_price), popularity_clicks, whois_privacy, dnssec_supported",
"currency": "currency of all prices (USD)",
"checked_count": "number of rows in results",
"total_extensions_on_site": "number of extensions the site tracks that matched the extension selection (all extensions when checking by popularity)"
},
"sample": {
"data": {
"name": "examplewidget",
"results": [
{
"tld": "com",
"domain": "examplewidget.com",
"status": "available",
"best_value": {
"registrar": "OVHcloud",
"registrar_id": "ovh",
"renewal_price": 13.99,
"registration_price": 11.75
},
"is_premium": false,
"is_available": true,
"whois_privacy": true,
"cheapest_renewal": {
"price": 10.15,
"registrar": "Sav",
"promo_code": null,
"registrar_id": "sav",
"original_price": null
},
"dnssec_supported": true,
"cheapest_transfer": {
"price": 3.94,
"registrar": "Spaceship",
"promo_code": "SPSCOMTR",
"registrar_id": "spaceship",
"original_price": 9.68
},
"popularity_clicks": 1443072,
"cheapest_registration": {
"price": 3.8,
"registrar": "Spaceship",
"promo_code": "COM67",
"registrar_id": "spaceship",
"original_price": 9.08
}
},
{
"tld": "io",
"domain": "examplewidget.io",
"status": "unknown",
"best_value": {
"registrar": "Netim",
"registrar_id": "netim",
"renewal_price": 44,
"registration_price": 44
},
"is_premium": false,
"is_available": null,
"whois_privacy": true,
"cheapest_renewal": {
"price": 40.47,
"registrar": "Porkbun",
"promo_code": null,
"registrar_id": "porkbun",
"original_price": null
},
"dnssec_supported": true,
"cheapest_transfer": {
"price": 17.45,
"registrar": "Wix",
"promo_code": "DOM50",
"registrar_id": "wix",
"original_price": 34.9
},
"popularity_clicks": 173901,
"cheapest_registration": {
"price": 14.98,
"registrar": "Spaceship",
"promo_code": "IO85",
"registrar_id": "spaceship",
"original_price": 31.98
}
}
],
"currency": "USD",
"checked_count": 2,
"total_extensions_on_site": 3536
},
"status": "success"
}
}About the tld-list API
What the API Returns
The check_domain_availability endpoint accepts a domain parameter — either a fully qualified name like examplewidget.com or a bare label like examplewidget — and returns a results array where each row covers one TLD. Each row includes the full domain string, the tld component, a status field, boolean flags is_available and is_premium, and three price fields: cheapest_registration, cheapest_renewal, and cheapest_transfer, all denominated in the currency field (USD). The response also includes checked_count and total_extensions_on_site so you can see how many TLDs were evaluated.
Controlling Which Extensions Are Checked
When you pass a bare label (no dot, no TLD), you have two ways to scope the check. Supply a tlds parameter as a comma-separated list — for example com,net,co.uk — to target specific extensions. Leading dots are optional. Alternatively, set the limit parameter to an integer to check against that many of the most-popular extensions tracked by tld-list.com. If you pass a full domain name with an extension already included, both tlds and limit are ignored and only that single extension is checked.
Coverage and Price Data
The site tracks a large number of extensions; total_extensions_on_site in each response tells you the current count. Price data reflects the cheapest registrar price found on tld-list.com for registration, renewal, and transfer at the time of the request. Premium domain detection is surfaced as a boolean is_premium flag — useful for filtering out names that carry above-market pricing before quoting a user.
The tld-list API is a managed, monitored endpoint for tld-list.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tld-list.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 tld-list.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?+
- Bulk domain availability check across popular TLDs for a name generator tool
- Identify the cheapest registrar price for a specific domain before purchase using cheapest_registration
- Flag premium domains in a search UI using the is_premium boolean to warn users of elevated costs
- Compare renewal costs across extensions to advise users on long-term holding costs via cheapest_renewal
- Power a domain suggestion widget that fans out a bare keyword against a custom tlds list
- Automate domain portfolio audits by checking transfer pricing with cheapest_transfer across extensions
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.