ENS Indexer API

API Documentation

ENSWhois Docs Status API

Public API for querying ENS domain data. All endpoints return JSON.

https://api.enswhois.com

Authentication

API Key

Pass your key via the X-API-Key header. Sign up to get a key with 1,000 free credits.

Micropayments (MPP)

Pay per request using the MPP protocol. No account needed — pay directly from your wallet.

No authentication is needed to try the API - unauthenticated requests are limited to 5 per minute. Sign up for unlimited access.

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

List all domains associated with an address.

Parameters

NameTypeDescription
addressstringEthereum address (42-char hex)

Query Parameters

NameTypeDescription
sort_bystringfull_name (default) or expiry_timestamp
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": [
    {
      "name": "vitalik.eth",
      "label": "vitalik",
      "expiry_timestamp": "1754000000",
      "ownership": {
        "owner": "0xd8dA6BF2...",
        "registry": "0xd8dA6BF2...",
        "is_wrapped": false
      },
      "resolver": {
        "address": "0x231b0Ee1..."
      }
    }
  ],
  "total": 42,
  "page": 1,
  "page_size": 25
}
GET /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 /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 /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 /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
}