# Tezos Domains (.tez) API
> Read the Tezos Domains naming service live from the public TzKT indexer — no key. Tezos Domains maps human-readable .tez names to Tezos addresses, the way ENS maps .eth names on Ethereum. None of the Tezos on-chain, governance, baker, smart-rollup or FA-token readers expose the naming layer; this opens it. Browse the most recently active .tez domains with their owner address, the address they point to, registration level and expiry; forward-resolve a .tez name to the address that owns it (how a wallet turns "alice.tez" into a tz1 address); and reverse-resolve any Tezos address to the .tez names registered to it (an address can own several). The identity / naming layer for Tezos wallets, explorers, payment UX and analytics. Distinct from the Tezos on-chain reader, the self-amending governance reader, the baker reader, the smart-rollup reader and the FA-token registry. Live from the indexer; short cache only.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/tezosdomains-api/..."
```

## Pricing
- **Free** (Free) — 10,200 calls/Mo, 3 req/s
- **Starter** ($7/Mo) — 191,000 calls/Mo, 10 req/s
- **Pro** ($26/Mo) — 960,000 calls/Mo, 25 req/s
- **Scale** ($77/Mo) — 5,700,000 calls/Mo, 60 req/s

## Endpoints

### Domains

#### `GET /v1/domains` — Browse recently-active .tez domains

**Parameters:**
- `limit` (query, optional, string) — Page size (1-100) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/tezosdomains-api/v1/domains?limit=25"
```

**Response:**
```json
{
    "data": {
        "note": "The most recently active .tez domains — each with its name, owner address, the address it points to, registration level and expiry. Tezos Domains is Tezos's naming service (the .tez equivalent of ENS). Paginate with limit; resolve a name in /v1/resolve, an address in /v1/reverse.",
        "count": 25,
        "source": "TzKT",
        "domains": [
            {
                "name": "neuromechsvault.tez",
                "level": 2,
                "owner": "tz1hLRwrB8Mrj6K3bGg8z5hz4VTpkSFCx1FS",
                "address": "tz1hLRwrB8Mrj6K3bGg8z5hz4VTpkSFCx1FS",
                "last_time": "2026-06-14T14:41:58Z",
                "expiration": "2029-06-13T14:41:58Z",
                "first_time": "2026-06-14T14:41:58Z",
                "owner_alias": null
            },
            {
                "name": "xxxxxx.tez",
                "level": 2,
                "owner": "tz1T1nTR7FREghqvUi2UF3TUiUFyvLVtqe8a",
                "address": null,
                "last_time": "2026-06-14T01:31:25Z",
                "expiration": "2027-04-06T23:00:43Z",
                "first_time": "2021-08-02T04:02:38Z",
                "owner_alias": null
            },
            {
                "name": "basel.tez",
                "level": 2,
                "owner": "tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf",
                "address": null,
                "last_time": "2026-06-13T22:18:55Z",
                "expiration": "2027-06-26T04:52:44Z",
       
…(truncated, see openapi.json for full schema)
```

### Resolve

#### `GET /v1/resolve` — Forward-resolve a .tez name to its owner

**Parameters:**
- `name` (query, optional, string) — A .tez domain; omit for a recent one Example: `basel.tez`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/tezosdomains-api/v1/resolve?name=basel.tez"
```

**Response:**
```json
{
    "data": {
        "name": "basel.tez",
        "note": "Forward resolution — the .tez domain resolved to the address that owns it, plus the address it points to and its expiry. This is how a wallet turns 'alice.tez' into a tz1 address. Omit name to resolve a recently-active domain.",
        "level": 2,
        "owner": "tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf",
        "query": "basel.tez",
        "source": "TzKT",
        "address": null,
        "last_time": "2026-06-13T22:18:55Z",
        "expiration": "2027-06-26T04:52:44Z",
        "first_time": "2021-05-18T09:09:46Z",
        "owner_alias": "Den Scalemodal"
    },
    "meta": {
        "timestamp": "2026-06-14T17:03:57.290Z",
        "request_id": "d40027c7-75fb-42dc-a83f-d7ebdea2450a"
    },
    "status": "ok",
    "message": "Domain resolved successfully",
    "success": true
}
```

### Reverse

#### `GET /v1/reverse` — Reverse-resolve an address to its .tez names

**Parameters:**
- `address` (query, optional, string) — Tezos address (tz1.../KT1...); omit for a recent owner Example: `tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf`
- `limit` (query, optional, string) — Page size (1-100) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/tezosdomains-api/v1/reverse?address=tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf&limit=25"
```

**Response:**
```json
{
    "data": {
        "note": "Reverse resolution — every .tez domain registered to one Tezos address. An address can own several names; this lists them, newest first. Omit address to use a recently-active owner.",
        "count": 25,
        "source": "TzKT",
        "address": "tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf",
        "domains": [
            {
                "name": "basel.tez",
                "level": 2,
                "owner": "tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf",
                "address": null,
                "last_time": "2026-06-13T22:18:55Z",
                "expiration": "2027-06-26T04:52:44Z",
                "first_time": "2021-05-18T09:09:46Z",
                "owner_alias": "Den Scalemodal"
            },
            {
                "name": "czech.tez",
                "level": 2,
                "owner": "tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf",
                "address": "tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf",
                "last_time": "2026-05-24T17:16:55Z",
                "expiration": "2027-05-24T17:16:55Z",
                "first_time": "2021-05-16T09:46:42Z",
                "owner_alias": "Den Scalemodal"
            },
            {
                "name": "silver.tez",
                "level": 2,
                "owner": "tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf",
                "address": "tz1dAW94vB3yYfNPE4LM2txBT8PQ21Zq4Xzf",
                "last_time": "2026-05-24T16:52:43Z",
                "expiration": "2027-05-24T16:52:43Z",
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/tezosdomains-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "sample": {
            "recent_domain": "neuromechsvault.tez"
        },
        "source": "public TzKT indexer (api.tzkt.io), keyless",
        "service": "tezosdomains-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/domains": "Browse recently-active .tez domains (limit).",
            "GET /v1/resolve": "Forward-resolve a .tez name to its owner (name; omit for a recent one).",
            "GET /v1/reverse": "Reverse-resolve an address to its .tez names (address; omit for a recent owner)."
        },
        "description": "Read the Tezos Domains (.tez) naming service live from the public TzKT indexer: browse recently-active .tez domains, forward-resolve a name to its owner address, and reverse-resolve an address to the names registered to it. The identity / naming layer for Tezos wallets, explorers and payment UX. Live, short cache only.",
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-14T17:03:57.460Z",
        "request_id": "0416b07d-6bd6-4469-97da-8a7496b6bea7"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/tezosdomains-api
OpenAPI spec: https://www.oanor.com/api/tezosdomains-api/openapi.json
