Developers
Domain price API. Free, no key.
The numbers behind TLDMath as JSON over HTTPS: standard prices for 93 extensions at 8 registrars, refreshed daily, and live availability for any name. No sign-up and no key. For an AI assistant, use the MCP connector instead: same data, as tools.
Try it
curl https://www.tldmath.com/api/tld/com
Returns every registrar’s .com price, cheapest over two years first. One row shown:
{
"tld": "com",
"rows": [
{
"registrar": "cloudflare",
"displayName": "Cloudflare Registrar",
"registration": 10.46,
"renewal": 10.46,
"transfer": null,
"minYears": 1,
"upfront": 10.46,
"twoYearCost": 20.92,
"promo": false,
"fetchedAt": "2026-10-04T10:23:00.455+00:00"
}
],
"updatedAt": "2026-10-04T10:23:00.455+00:00"
}Prices and availability
| Endpoint | Returns | Limit |
|---|---|---|
GET /api/tlds | The extensions with a daily price table, and the registrars we read. | Cached |
GET /api/tld/{tld} | Today’s standard prices for one extension at every registrar: first year, renewal, transfer, restore fee where published, two-year cost, promo flag. Cheapest over two years first. | Cached hourly |
GET /api/tld/{tld}/true-cost | What keeping a domain 1, 2 and 5 years costs at today’s standard prices: cheapest, typical (median) and highest across registrars, announced registry changes apart, and when the prices were read. | Cached hourly |
GET /api/renewal-index | The TLDMath Renewal Index: every captured day’s level, the 20-extension basket with each median renewal, the method and changelog. | Cached hourly |
GET /data/prices.csv?tld=com,io&from=2026-10-01 | The full daily price history as CSV: every registrar’s first year, renewal and transfer per extension per day. Filters are optional. | Cached hourly |
GET /data/renewal-index.csv | Every captured day’s Renewal Index level as CSV. | Cached hourly |
GET /api/check?domain=acme.com | Live availability and price for one name at every registrar, with premium status and the cheapest first year, renewal and transfer. | 30 a minute |
GET /api/name?name=acme&tlds=com,net,io | One name across extensions (up to 8; default .com, .net, .io, .ai, .dev, .app). | 10 a minute |
GET /api/taken?domain=acme.com | For a taken name: where it is in the expiry cycle (active, expiring, grace, redemption, pending delete) from the registry, and the earliest it could drop. | 30 a minute |
POST /api/private-check | Registry-only availability. Send {"q":"acme.com"} in the body; the name never goes to a registrar and nothing is stored. | 30 a minute |
Launch and DNS
| Endpoint | Returns | Limit |
|---|---|---|
GET /api/launch?domain=acme.dev&host=vercel&email=fastmail | The DNS records to add for a website host, an inbox and an app email sender, each checked against live public DNS. Add &sender=resend or &target= as needed. | 20 a minute |
GET /api/launch/steps?domain=acme.dev&host=vercel | The same plan as ordered steps, with commands for your own tools for the records not yet in place. | 20 a minute |
GET /api/launch/check?domain=acme.dev | Is it live: HTTPS on both addresses, one SPF record, DKIM, DMARC and the renewal date. | 20 a minute |
GET /api/launch/card?domain=acme.dev | Who runs a domain: registrar, DNS, website and email providers, each with the public record it came from. | 20 a minute |
GET /api/ai-check?domain=acme.dev | Can AI assistants read the site: robots.txt per AI crawler, text visible without JavaScript, noindex, sitemap, llms.txt. | 20 a minute |
Provider ids. Hosts: lovable, bolt, v0, replit, base44, framer, webflow, bubble, vercel, netlify, github-pages, cloudflare-pages. Inboxes: google-workspace, microsoft-365, zoho-mail, fastmail, proton-mail, icloud, purelymail, migadu, namecheap-email, hostinger-email, cloudflare-email, no-email. App email: resend, postmark, amazon-ses, sendgrid, mailgun, mailersend.
Feeds
/prices/feed.xmlDated registrar and registry price changes (RSS). Also /prices/feed.json./hosting/feed.xmlHosting plan, price and limit changes (RSS). Also /hosting/feed.json.
Good to know
- Prices are US dollars per year. .ai has a two-year minimum:
upfrontis what you pay at checkout.promois true when the renewal is more than 1.5× the first year. How each number is made: the price index. - Errors come back as
{"error":{"code","message","hint"}}with an HTTP status. Over a limit you get 429 with aretry-afterheader. Limits are per IP address. - From a browser or a spreadsheet: every JSON endpoint, feed and CSV sends
Access-Control-Allow-Origin: *, so a web page can read it directly, and a spreadsheet can import the CSVs (e.g.=IMPORTDATA("https://www.tldmath.com/data/prices.csv?tld=com")). - What we keep: a count of each kind of request and the extension, never the name you looked up, plus a one-way hash of your IP address for up to an hour, for the limits. A normal check sends the name to the registrars, as searching on their own sites would. Privacy.
- Fair use: cache what you can (the extension tables change once a day) and don’t scrape in bulk. The terms cover the API. If you publish our numbers, a link to tldmath.com is appreciated.