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 beyond the 90-day grace period (premium + available). Default false. Names still in their grace period are always included. |
| 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 for an address by type. active_count covers names still recoverable by the owner (registered + 90-day grace); expired_count covers names past grace (premium + available).
| 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: active domain count (effective owner, includes grace), primary name, domains expiring soon, and previously-owned count.
| 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,
"previously_owned_count": 12
}
List domains the address used to control. A domain qualifies if the address ever appeared as to_address, new_owner_address, or owner_address on an event for that domain, and is no longer in control (current effective owner differs, or the name has lapsed past the 90-day grace period). Sorted by most-recently-touched first.
| Name | Type | Description |
|---|---|---|
| address | string | Ethereum address (42-char hex) |
| Name | Type | Description |
|---|---|---|
| page | integer | Page number, 25 per page (default 1) |
| sort_dir | string | desc (default, most recent first) or asc |
{
"address": "0xd8da6bf2...",
"results": [
{
"name": "old-name.eth",
"label": "old-name",
"expiry_timestamp": "1700000000",
"ownership": {
"owner": "0xabc...",
"is_wrapped": false
},
"last_owned_block_number": 19500000,
"last_owned_block_timestamp": 1710000000
}
],
"total": 12,
"page": 1,
"page_size": 25
}