ENS name resolution in both directions on Ethereum mainnet
ENS name resolution in both directions on Ethereum mainnet. Pass name to resolve an ENS name to its address (forward), or pass address to get that address's primary ENS name (reverse, forward-verified so spoofed reverse records are rejected). Read straight from the ENS registry. Use it to turn vitalik.eth into an address, or to label a raw address with a human-readable name.
3000 (raw units)
price
32
calls / 30d
3
unique payers
2026-09-18
updated
Provider
chain.cyberwarex.com · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x058D0Cc5CC97e61e8A9f38D6d6365bce525921B2",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "3000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"method": "GET",
"queryParams": {
"name": "vitalik.eth"
},
"type": "http"
},
"output": {
"example": {
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"name": "vitalik.eth",
"resolved": true
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET",
"HEAD",
"DELETE"
],
"type": "string"
},
"queryParams": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"name"
]
},
{
"required": [
"address"
]
}
],
"properties": {
"address": {
"description": "Address to reverse-resolve to its primary ENS name.",
"pattern": "^0x[a-fA-F0-9]{40}$",
"type": "string"
},
"name": {
"description": "ENS name to resolve forward, e.g. vitalik.eth.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"address": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"note": {
"description": "Set when a reverse record failed forward verification.",
"type": [
"string",
"null"
]
},
"resolved": {
"type": "boolean"
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://chain.cyberwarex.com/ens" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://chain.cyberwarex.com/ens");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://chain.cyberwarex.com/ens")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/6849.json, and this resource appears in /discovery/resources and /discovery/search.