# List TLDs

`GET https://api.unique.domains/v1/tlds`

Every root TLD with its registry facts and launch phases, alphabetical.

Root TLDs only, sorted by slug. A public-set row carries `insights`: the website page and its 12-month market aggregates.

- Access: No key. Limited per address; a key adds the paid fields.
- Billing: One call.
- Formats: JSON, CSV (`.csv`)
- API: TLD Intelligence API

## Request

| Field | Type | Needs | Where | Description |
| --- | --- | --- | --- | --- |
| `ianaType` | string | Optional | Query | IANA's own type word (`generic`, `country-code`, `sponsored`, `infrastructure`). |
| `ianaStatus` | string: delegated, removed, never_delegated | Optional | Query | IANA root zone status. |
| `country` | string | Optional | Query | The registry operator's country, ISO 3166-1 alpha-2. |
| `isBrand` | boolean | Optional | Query | Brand TLDs only (`true`) or none (`false`). |
| `isIdn` | boolean | Optional | Query | Internationalised endings only (`true`) or none (`false`). |
| `publicSet` | boolean | Optional | Query | `true`: the public set only (v1's `listing=public`). |
| `limit` | integer | Optional | Query | Rows a page: 20 by default, at most 20 without a key and 100 with a paid subscription; a larger value is clamped. |
| `cursor` | string | Optional | Query | The `meta.cursor` of the previous page; the last page answers `null`. |
| `fields` | string | Optional | Query | Comma-separated top-level keys to keep; an unknown key answers 400 `unsupported_field`. |

## Sample request

```bash
curl -X GET "https://api.unique.domains/v1/tlds"
```

## Response

| Field | Type | Description |
| --- | --- | --- |
| `tld` | string | The ending with its dot (`.ai`). |
| `slug` | string | The bare ending, the row key and cursor key. |
| `ianaStatus` |  |  |
| `kind` |  | Catalog kind. |
| `ianaType` | string |  |
| `registryOperator` | string |  |
| `registryCountryCode` | string |  |
| `isBrand` | boolean | Brand TLD (Specification 13). |
| `isIdn` | boolean | Internationalised ending. |
| `delegatedOn` | string |  |
| `removedOn` | string |  |
| `contractTerminated` | boolean | Registry agreement terminated. |
| `rdapServer` | string |  |
| `category` | string |  |
| `phases` | object[] |  |
| `insights` | object |  |

## Errors

| Code | Status | What it means |
| --- | --- | --- |
| [`rate_limited`](https://unique.domains/api/problems/rate_limited) | 429 | Too many requests |
| [`internal`](https://unique.domains/api/problems/internal) | 500 | Unexpected error |

## Example answer

200, application/json

```json
{
  "data": [
    {
      "tld": ".ai",
      "slug": "ai",
      "ianaStatus": "delegated",
      "kind": "root",
      "ianaType": "country-code",
      "registryOperator": "Government of Anguilla",
      "registryCountryCode": "AI",
      "isBrand": false,
      "isIdn": false,
      "delegatedOn": "1995-02-16",
      "removedOn": null,
      "contractTerminated": false,
      "rdapServer": "https://rdap.nic.ai/",
      "category": "Country",
      "phases": [],
      "insights": {
        "insightUrl": "https://unique.domains/tld/ai",
        "market": {
          "computedAt": "2026-11-05T03:12:00.000Z",
          "availableOneWord": 1840,
          "registrations90d": 5210,
          "medianBuy": 79.98,
          "medianRenew": 79.98,
          "cheapestRegistrar": "porkbun",
          "sales12m": 2312,
          "salesMedian12mUsd": 2500,
          "salesTrend": "up"
        }
      }
    }
  ],
  "meta": {
    "asOf": "2026-11-05T08:00:00Z",
    "cursor": null,
    "limit": 20
  },
  "links": {
    "self": "https://api.unique.domains/v1/tlds",
    "next": null,
    "register": null,
    "product": null,
    "dataset": null
  }
}
```

API status: https://uniquedomains.instatus.com

Full reference: https://unique.domains/api
