API Reference

← Back to API overview & pricing

Base URL

https://tldes.com/v1

Authentication

Add key={your_key} parameter. Some endpoints are free (no key required).

Example request

GET https://tldes.com/v1?data=prices&key=YOUR_KEY

Updates

Data is updated hourly. First daily update is approximately 00:30 UTC.

Filtering

data=prices, data=promos and data=promospecial accept two optional parameters, separately or combined in one request:

  • registrars — comma-separated registrar names
  • tlds — comma-separated TLDs (without dot)
GET https://tldes.com/v1?data=prices&key=YOUR_KEY®istrars=dynadot.com,porkbun.com&tlds=com,net

The response has the same format but contains only the matching registrars and TLDs. Unknown registrar names and TLDs are silently ignored; use data=registrars to get the list of valid names. When filtering by tlds, registrars with no matching TLDs are omitted from the response. For data=prices the totalRegistrars field reflects the count after filtering. On all other endpoints these parameters are ignored.

data=prices Key required

All registrar prices for registration, renewal, and transfer.

Optional: filter the response with &registrars=dynadot.com,porkbun.com and/or &tlds=com,net — see Filtering.

{
  "updated": "2026-01-14T13:23:42.939Z",
  "totalRegistrars": 147,
  "registrars": [
    {
      "name": "dynadot.com",
      "ts": "2026-01-14T13:23:23.207Z",
      "currency": "USD",
      "ICANNfee": "0.00",
      "prices": [
        ["com", "10.88", "10.88", "10.88"],
        ["xyz", "1.99", "13.17", "13.17"]
      ]
    }
  ]
}
FieldTypeDescription
updatedstringISO 8601 timestamp of last data update
totalRegistrarsnumberTotal number of registrars in response
registrars[].namestringRegistrar domain name
registrars[].tsstringWhen this registrar's prices were last fetched
registrars[].currencystringCurrency code (USD, EUR, GBP, etc.)
registrars[].ICANNfeestringICANN fee amount (if shown separately)
registrars[].pricesarrayArray of price tuples (see format below)

Price array format

[tld, registration, renewal, transfer]

Example: ["com", "10.88", "10.88", "10.88"]

  • All 4 values are strings
  • Prices are in the registrar's currency
  • Prices shown as displayed on registrar website (may exclude taxes)

data=promos Key required

Active promotional prices and coupon codes.

Optional: filter the response with &registrars=dynadot.com,porkbun.com and/or &tlds=com,net — see Filtering.

{
  "updated": "2026-01-14T13:23:44.595Z",
  "registrars": {
    "spaceship.com": {
      "currency": "USD",
      "ICANNfee": "0.00",
      "promos": [
        [0, "com", "2.90", "COMPROS", 1, false],
        [2, "com", "8.17", "SPSCOMTR", 0, false]
      ]
    },
    "godaddy.com": {
      "currency": "USD",
      "ICANNfee": "0.20",
      "promos": [
        [0, "com", "4.99", "", 1, true]
      ]
    }
  }
}

Promo array format

[type, tld, price, code, limit, newUsersOnly]
IndexTypeDescription
0numberOperation type: 0=registration, 1=renewal, 2=transfer
1stringTLD (without dot)
2stringPromo price
3stringCoupon code (empty string if no code needed)
4numberLimit per customer (0 = no limit)
5booleantrue = new customers only

data=promospecial Key required

Special promotions with non-standard conditions (club membership, bundles, referral links, etc.).

Optional: filter the response with &registrars=dynadot.com,porkbun.com and/or &tlds=com,net — see Filtering.

{
  "updated": "2026-01-14T13:23:44.727Z",
  "strings": [
    "$p limit 100/week for Domainer Club members",
    "$p limit 200/week for Domainer Club members",
    "$p for IO+TECH bundle in cart",
    "$p for COM+ONLINE bundle in cart, limit: 10"
  ],
  "registrars": {
    "unstoppabledomains.com": {
      "currency": "USD",
      "ICANNfee": "0.00",
      "promos": [
        [0, "xyz", "1.00", "", 100, false, 0],
        [0, "com", "5.99", "", 200, false, 1]
      ]
    },
    "dynadot.com": {
      "currency": "USD",
      "ICANNfee": "0.00",
      "promos": [
        [0, "io", "22.99", "", 0, false, 2],
        [0, "com", "8.88", "", 10, false, 3]
      ]
    }
  }
}

Special promo array format

[type, tld, price, code, limit, newUsersOnly, stringIndex]

Same as regular promo, plus:

IndexTypeDescription
6numberIndex into strings array describing special conditions

About the strings array

  • Contains HTML tooltips explaining special conditions
  • $p placeholder should be replaced with the promo price
  • Example: "$p for IO+TECH bundle""22.99 for IO+TECH bundle"

data=meta Key required

Registrar metadata: WHOIS privacy pricing, Trustpilot ratings, traffic data, ICANN accreditation.

{
  "updated": "2026-01-14T13:23:43.713Z",
  "registrars": {
    "dynadot.com": {
      "whoisPrivacy": {"price": "0.00", "currency": "USD"},
      "payment": "Credit/Debit Cards, PayPal, Apple Pay, ...",
      "trustpilot": {
        "reviews": 3956,
        "rating": 4.5,
        "ratingText": "Excellent",
        "ts": "2026-01-14T06:17:12.039Z"
      },
      "similarweb": {"visitors": "1.8m", "date": "December 2025"},
      "iana": {
        "number": "472",
        "country": "United States of America",
        "gtld": {
          "domains": "7.4m",
          "domainsExact": 7397368,
          "date": "2026-01-06"
        }
      }
    }
  },
  "currencies": {
    "updated": "2026-01-13T23:17:09.910Z",
    "rates": {
      "EUR": {"rate": 0.91, "name": "Euro"},
      "GBP": {"rate": 0.78, "name": "British Pound"}
    }
  }
}
FieldDescription
whoisPrivacyWHOIS privacy service price
paymentAccepted payment methods (HTML string)
trustpilotTrustpilot rating data
similarwebMonthly visitor estimate from SimilarWeb
iana.numberIANA registrar ID
iana.countryRegistrar's country of registration
iana.gtldNumber of gTLD domains under management
currencies.ratesExchange rates to USD for currency conversion

data=registrars Free

List of all registrars included in the API. The response is a plain JSON array of registrar names:

["namecheap.com", "dynadot.com", "porkbun.com", ...]

data=demo Free

Sample data with 2 registrars and 10 TLDs. Same format as data=prices.

data=status Free

Last update timestamp.

{
  "updated": "2026-01-14T13:23:42.939Z"
}

data=keyinfo Key required

API key expiration info.

{
  "keyValidUntil": "2026-12-31T23:59:59.000Z"
}

Errors

Errors are returned with the corresponding HTTP status code and a JSON body with an error field:

StatusResponseCause
401{"error": "The request must contain a key"}Missing key parameter on protected endpoint
401{"error": "Invalid key"}Key not found
401{"error": "key is expired"}Key has expired
400{"error": "Invalid request"}Unknown data parameter value

Notes

  • All prices are displayed as shown on registrar websites and may not include taxes or fees
  • ICANNfee field shows if ICANN fee is displayed separately (add to price) or already included ("0.00")
  • Data is refreshed hourly from 100+ registrar websites
  • There are no fixed rate limits. Since data changes hourly, the recommended pattern is to poll data=status and download full data only when the updated timestamp changes
  • CORS is enabled (Access-Control-Allow-Origin: *) — the API can be called directly from browser code
  • Machine-readable spec: openapi.json (OpenAPI 3.0)

← Back to API overview & pricing