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

EndpointReturnsLimit
GET /api/tldsThe 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-costWhat 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-indexThe 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-01The 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.csvEvery captured day’s Renewal Index level as CSV.Cached hourly
GET /api/check?domain=acme.comLive 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,ioOne name across extensions (up to 8; default .com, .net, .io, .ai, .dev, .app).10 a minute
GET /api/taken?domain=acme.comFor 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-checkRegistry-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

EndpointReturnsLimit
GET /api/launch?domain=acme.dev&host=vercel&email=fastmailThe 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=vercelThe 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.devIs it live: HTTPS on both addresses, one SPF record, DKIM, DMARC and the renewal date.20 a minute
GET /api/launch/card?domain=acme.devWho 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.devCan 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.xml Dated registrar and registry price changes (RSS). Also /prices/feed.json.
  • /hosting/feed.xml Hosting 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: upfront is what you pay at checkout. promo is 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 a retry-after header. 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.