Public API for querying ENS domain data. All endpoints return JSON.
Pass your key via the X-API-Key header. Sign up to get a key with 1,000 free credits.
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.
/api endpoints. You can call these from any origin.List all domains associated with an address.
| Name | Type | Description |
|---|---|---|
| address | string | Ethereum address (42-char hex) |
| Name | Type | Description |
|---|---|---|
| sort_by | string | full_name (default) or expiry_timestamp |
| include_expired | boolean | Include expired domains (default false) |
| address_type | string | effective_owner (default), registry_owner, registrar_owner, wrapper_owner, resolver |
{
"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
}
Lightweight count-only endpoint. Returns domain counts (total, active, expired) for an address by type.
| Name | Type | Description |
|---|---|---|
| address | string | Ethereum address (42-char hex) |
| Name | Type | Description |
|---|---|---|
| address_type | string | effective_owner (default), registry_owner, registrar_owner, wrapper_owner, resolver |
{
"address": "0xd8da6bf2...",
"address_type": "effective_owner",
"count": 42,
"active_count": 40,
"expired_count": 2
}
Reverse resolve an address to its primary ENS name. Optionally returns full history of reverse name changes.
| Name | Type | Description |
|---|---|---|
| address | string | Ethereum address (42-char hex) |
| Name | Type | Description |
|---|---|---|
| history | boolean | Include full reverse name history (default false) |
{
"address": "0xd8da6bf2...",
"primary_name": "vitalik.eth",
"registrar": "addr.reverse"
}
{
"address": "0xd8da6bf2...",
"current": {
"primary_name": "vitalik.eth",
"registrar": "addr.reverse"
},
"history": [
{
"name": "vitalik.eth",
"registrar": "addr.reverse",
"block_number": 9412610,
"transaction_hash": "0xabc..."
}
]
}
Bulk reverse resolution for multiple addresses. Maximum 200 per request.
{
"addresses": ["0xd8da6bf2...", "0x225f137..."]
}
{
"results": {
"0xd8da6bf2...": {
"primary_name": "vitalik.eth",
"registrar": "addr.reverse"
},
"0x225f137...": {
"primary_name": null,
"registrar": null
}
}
}
Combined address summary: domain count (by effective owner), primary name, and domains expiring soon.
| Name | Type | Description |
|---|---|---|
| address | string | Ethereum address (42-char hex) |
{
"address": "0xd8da6bf2...",
"domain_count": 42,
"primary_name": "vitalik.eth",
"primary_name_source": "addr.reverse",
"domains_expiring_30d": 1
}