ENS Indexer API

API Documentation

Home

Public API for querying ENS domain data from the distributed ENSIndexer network. All endpoints return JSON. No authentication required.

https://ensindexer.com/api
CORS is enabled for all /api endpoints. You can call these from any origin.
GET /api/address/:address/domains

List all domains associated with an address, with pagination and address type filtering.

Parameters

NameTypeDescription
addressstringEthereum address (42-char hex)

Query Parameters

NameTypeDescription
pageintegerPage number (default 1)
sort_bystringfull_name or expiry_timestamp
sort_dirstringasc or desc
include_expiredbooleanInclude expired domains (default false)
address_typestringeffective_owner (default), registry_owner, registrar_owner, wrapper_owner, resolver

Example Response

{
  "address": "0xd8da6bf2...",
  "address_type": "effective_owner",
  "results": [
    {
      "full_name": "vitalik.eth",
      "label": "vitalik",
      "expiry_timestamp": "1754000000",
      "effective_owner_address": "0xd8dA6BF2...",
      "registry_owner_address": "0xd8dA6BF2...",
      "resolver_address": "0x231b0Ee1...",
      "is_wrapped": false
    }
  ],
  "total": 42,
  "page": 1,
  "pageSize": 50
}
GET /api/address/:address/domain-count

Lightweight count-only endpoint. Returns domain counts (total, active, expired) for an address by type.

Parameters

NameTypeDescription
addressstringEthereum address (42-char hex)

Query Parameters

NameTypeDescription
address_typestringeffective_owner (default), registry_owner, registrar_owner, wrapper_owner, resolver

Example Response

{
  "address": "0xd8da6bf2...",
  "address_type": "effective_owner",
  "count": 42,
  "active_count": 40,
  "expired_count": 2
}
GET /api/address/:address/primary-name

Reverse resolve an address to its primary ENS name. Optionally returns full history of reverse name changes.

Parameters

NameTypeDescription
addressstringEthereum address (42-char hex)

Query Parameters

NameTypeDescription
historybooleanInclude full reverse name history (default false)

Example Response (default)

{
  "address": "0xd8da6bf2...",
  "primary_name": "vitalik.eth",
  "registrar": "addr.reverse"
}

Example Response (history=true)

{
  "address": "0xd8da6bf2...",
  "current": {
    "primary_name": "vitalik.eth",
    "registrar": "addr.reverse"
  },
  "history": [
    {
      "name": "vitalik.eth",
      "registrar": "addr.reverse",
      "block_number": 9412610,
      "transaction_hash": "0xabc..."
    }
  ]
}
POST /api/address/primary-names/bulk

Bulk reverse resolution for multiple addresses. Maximum 200 per request.

Request Body

{
  "addresses": ["0xd8da6bf2...", "0x225f137..."]
}

Example Response

{
  "results": {
    "0xd8da6bf2...": {
      "primary_name": "vitalik.eth",
      "registrar": "addr.reverse"
    },
    "0x225f137...": {
      "primary_name": null,
      "registrar": null
    }
  }
}
GET /api/address/:address/summary

Combined address summary: domain count (by effective owner), primary name, and domains expiring soon.

Parameters

NameTypeDescription
addressstringEthereum address (42-char hex)

Example Response

{
  "address": "0xd8da6bf2...",
  "domain_count": 42,
  "primary_name": "vitalik.eth",
  "primary_name_source": "addr.reverse",
  "domains_expiring_30d": 1
}