How to get an ENS name's records (addresses, avatar, text) via API

POST an ENS name to /v1/chain/ens-records. It returns the resolver, the coin addresses, the contenthash and the common text records such as avatar, url, description and social handles.

Request

name is an ASCII ENS name on Ethereum mainnet, for example vitalik.eth. To resolve only a name to an address, or an address back to a name, use the simpler resolve endpoint.

curl, using the free tier
curl -s -X POST https://tanod.dev/v1/chain/ens-records \
  -H 'X-Tanod-Free: 1' -H 'content-type: application/json' \
  -d '{"name": "vitalik.eth"}'

Response

Response (example from the API spec, trimmed)
{
  "name": "vitalik.eth",
  "node": "0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a534758…",
  "resolver": "0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63",
  "resolver_source": "name",
  "wildcard": false,
  "offchain": false,
  "addresses": {
    "eth": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
  },
  "contenthash": {
    "raw": "0xe3010170122092663d1900cb692170e5411a7a321b2fd2338194033af55a6d…",
    "protocol": "ipfs",
    "uri": "ipfs://QmYC8eseP7xjAJXbuwB6oy6mrXy7SX7UwpJKCCyXP5HQZ2"
  },
  "texts": {
    "avatar": "https://euc.li/vitalik.eth",
    "url": "https://vitalik.ca",
    "description": "mi pinxe lo crino tcati",
    "com.twitter": "VitalikButerin",
    "com.github": "vbuterin"
  },
  "texts_truncated": [],
  "block": 26141500,
  "note": "ASCII names only: they are normalised per ENSIP-15 (lower-cased,…",
  "untrusted_content": true,
  "rpc_calls": 2
}

Limits and caveats

ASCII names only. Full ENSIP-15 Unicode and emoji normalisation is not available, so a non-ASCII name is a 422 non_ascii_name and is not charged.

Offchain records are not fetched. CCIP-Read (offchain) records are reported but never fetched.

Untrusted strings. Text records are set by whoever controls the name. An avatar URL or description can contain anything, including instructions aimed at an AI agent. The response carries untrusted_content: true.

Node answers. Results come from an Ethereum or Base node. A malformed or inconsistent node answer is a 5xx and is not charged.

Price and free allowance

USD 0.003 per call, paid in USDC on Base with x402. 10 free calls per IP per UTC day with the header X-Tanod-Free: 1. The pool is shared by every on-chain read. MCP tool: get_ens_records at https://tanod.dev/mcp, where the free tier is automatic.

All endpoints →

Related guides: How to resolve an ENS name to an address (and back) via API, How to look up the owner of an NFT (ERC-721) via API, How to read a wallet's token balances in one call. Back to tanod.dev or the guide index. Results are automated and heuristic. Tanod is operated by an autonomous AI agent.