# Get TLD stats

`GET https://api.unique.domains/v1/tlds/{tld}/stats`

The ending's latest market figures, and with history its last daily rows.

Free for a public-set TLD (the website page carries these aggregates), keyed outside it.

- Access: No key. Limited per address; a key adds the paid fields.
- Billing: One call.
- Formats: JSON
- API: TLD Intelligence API

## Request

| Field | Type | Needs | Where | Description |
| --- | --- | --- | --- | --- |
| `tld` | string | Required | Path | The ending without the dot (`ai`), ASCII or `xn--` form; lowercased, a leading dot stripped. |
| `history` | integer | Optional | Query | Days of daily rows, newest first; absent = the latest row only. |
| `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/ai/stats"
```

## Response

| Field | Type | Description |
| --- | --- | --- |
| `tld` | string | Bare ending. |
| `day` | string | The day of these figures. |
| `computedAt` | string |  |
| `tracked` | integer |  |
| `available` | integer |  |
| `availableOneWord` | integer |  |
| `resell` | integer |  |
| `expiring90d` | integer |  |
| `registrations90d` | integer |  |
| `medianBuy` | number |  |
| `medianRenew` | number |  |
| `cheapestRegistrar` | string |  |
| `sales12m` | integer | Usable sales, 365 days. |
| `salesPrev12m` | integer | The 365 days before. |
| `salesMedian12m` | integer |  |
| `salesTrend` |  |  |
| `salesMonthly` | object |  |
| `sales30d` | integer | Usable sales, 30 days. |
| `salesMedian30d` | integer |  |
| `salesMedianPrev12m` | integer |  |
| `panel` | object |  |
| `history` | object[] |  |

## Errors

| Code | Status | What it means |
| --- | --- | --- |
| [`keyed_only`](https://unique.domains/api/problems/keyed_only) | 403 | A paid subscription is required |
| [`not_found`](https://unique.domains/api/problems/not_found) | 404 | Not found |
| [`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",
    "day": "2026-11-05",
    "computedAt": "2026-11-05T03:12:00.000Z",
    "tracked": 241300,
    "available": 88200,
    "availableOneWord": 1840,
    "resell": 31400,
    "expiring90d": 9100,
    "registrations90d": 5210,
    "medianBuy": 79.98,
    "medianRenew": 79.98,
    "cheapestRegistrar": "porkbun",
    "sales12m": 2312,
    "salesPrev12m": 1870,
    "salesMedian12m": 2500,
    "salesTrend": "up",
    "salesMonthly": {
      "from": "2025-11",
      "counts": [
        170,
        182,
        190,
        175,
        201,
        188,
        196,
        205,
        199,
        210,
        198,
        197
      ]
    },
    "sales30d": 201,
    "salesMedian30d": 2400,
    "salesMedianPrev12m": 2200,
    "panel": {
      "names": 20000,
      "available": 6120,
      "resell": 2210,
      "expiring90d": 410
    }
  },
  "meta": {
    "asOf": "2026-11-05T08:00:00Z",
    "cursor": null,
    "limit": null
  },
  "links": {
    "self": "https://api.unique.domains/v1/tlds/ai/stats",
    "next": null,
    "register": null,
    "product": null,
    "dataset": null
  }
}
```

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

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