# List TLD price history

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

Change-only price rows of one ending, newest first.

From `TldPriceHistory`, keyset on `(firstSeenAt, id)`, optionally for one registrar.

- Access: A member key (Founder or Investor) or a paid RapidAPI subscription to this API.
- Billing: One call.
- Plan: Investor plan. A Founder key answers 403 `plan_required`.
- Formats: JSON, CSV (`.csv`)
- API: Registrar Prices API

## Request

| Field | Type | Needs | Where | Description |
| --- | --- | --- | --- | --- |
| `tld` | string | Required | Path | The ending without the dot (`ai`); lowercased, a leading dot stripped. |
| `registrar` | string | Optional | Query | A registrar catalog slug. |
| `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/prices/tlds/io/history" \
  -H "Authorization: Bearer YOUR_MEMBER_KEY"
```

## Response

| Field | Type | Description |
| --- | --- | --- |
| `registrar` | string |  |
| `currency` | string |  |
| `purchasePrice` | number |  |
| `regularPurchasePrice` | number |  |
| `renewalPrice` | number |  |
| `transferPrice` | number |  |
| `isPromo` | boolean |  |
| `firstSeenAt` | string | First observation of this price set. |
| `lastSeenAt` | string | Last observation. |
| `observations` | integer | Reads that saw it. |

## 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": [
    {
      "registrar": "namecheap",
      "currency": "USD",
      "purchasePrice": 34.98,
      "regularPurchasePrice": null,
      "renewalPrice": 59.98,
      "transferPrice": 54.98,
      "isPromo": false,
      "firstSeenAt": "2026-11-03T05:40:00.000Z",
      "lastSeenAt": "2026-11-05T05:41:00.000Z",
      "observations": 3
    }
  ],
  "meta": {
    "asOf": "2026-11-05T08:00:00Z",
    "cursor": null,
    "limit": 20
  },
  "links": {
    "self": "https://api.unique.domains/v1/prices/tlds/io/history",
    "next": null,
    "register": null,
    "product": null,
    "dataset": null
  }
}
```

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

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