Skip to content

ENS Omnigraph API

The ENS Omnigraph API is the world’s first and only API providing unified access to the full state of ENSv1 and ENSv2. It’s a single, polymorphic GraphQL API over both ENSv1 and ENSv2 — write your query once and get correct, typed results regardless of which protocol version a given Domain lives in.

ENS Omnigraph diagram

The Omnigraph is delivered by ENSApi on top of the indexed data in ENSDb. It follows the Relay specification, abstracts away the most common ENS-protocol footguns, and exposes enough of the underlying protocol for builders who need to go deep.

When ENSv2 launches in Summer 2026, the two protocol versions coexist — and the Omnigraph keeps your app working against both, at the same time, with no code changes. Both ENSv1 and ENSv2 Domains are indexed concurrently and exposed through a unified schema.

Ask for a Domain by name (domain(by: { name: "vitalik.eth" })) and you get a typed result whether that name lives in ENSv1 or ENSv2 — your code doesn’t have to know or care which.

  • Multichain in one query — mainnet .eth, Basenames (.base.eth), Lineanames (.linea.eth), and 3DNS names (.box) all in a single unified schema.
  • Typed, no footguns — names and labels are normalized for you, so rendering them in a UI is trivial.
  • The full ENS picture — resolve records, search Domains, list what an address owns, read a complete history of onchain Events, and inspect Permissions.
  • Built-in pagination — Relay-spec connections mean infinite scroll and stable pagination work out of the box.

Look up a Domain by name and read its owner:

example.gql
query GetDomain {
domain(by: { name: "vitalik.eth" }) {
canonical {
name {
interpreted
}
}
owner {
address
}
}
}

That’s the simplest shape. When you’re ready to understand the data model underneath, see Core Concepts.