ENSDb (PostgreSQL)
For use cases that go beyond what the ENS Omnigraph exposes — you can query the live onchain state of ENSv2 directly via SQL.
ENSDb is an open standard that stores the full ENSv2 state in a PostgreSQL database. Because it’s plain Postgres, you can use any language with a Postgres driver — TypeScript, Python, Rust, Go, and more.
ENSDb is available when you self-host ENSNode. Each ENSNode instance writes its data into a PostgreSQL database that you own and control — that database is your ENSDb instance. The hosted ENSNode instances do not expose direct database access.
When to choose ENSDb
Section titled “When to choose ENSDb”- You need full SQL power — joins, aggregations, window functions, CTEs.
- You’re building custom services on top of ENS data.
- You’re hitting the API limits of the public hosted instances and need unrestricted local access.
Example: fetch ENSv2 domains with the ENSDb SDK
Section titled “Example: fetch ENSv2 domains with the ENSDb SDK”import { EnsDbReader } from "@ensnode/ensdb-sdk";import { eq } from "drizzle-orm";
const ensDbReader = new EnsDbReader(ensDbConnectionString, ensIndexerSchemaName);const { ensDb, ensIndexerSchema } = ensDbReader;
const v2Domains = await ensDb .select() .from(ensIndexerSchema.domain) .where(eq(ensIndexerSchema.domain.type, "ENSv2Domain"));Example: fetch ENSv2 domains with raw SQL
Section titled “Example: fetch ENSv2 domains with raw SQL”SELECT * FROM ensindexer_mainnet.domainsWHERE type = 'ENSv2Domain'LIMIT 10;Learn more
Section titled “Learn more” ENSDb overview Architecture, schemas, what you can build, and quick-start guides.
ENSDb SDK (TypeScript) Type-safe database access and utilities for working with ENSDb.
ENSDb SQL interface Connect with any PostgreSQL client and run queries directly.
Self-host ENSNode Run your own ENSNode instance to get full ENSDb access.