Namegraph
Walk the root tree: root → domains → nested subdomains (depth-limited). Terminal window Terminal window
query Namegraph {
root {
id
domains {
edges {
node {
name
subdomains {
edges {
node {
name
subdomains {
edges {
node {
name
}
}
}
}
}
}
}
}
}
}
} {} {
"data": {
"root": {
"id": "99911155111-0xfd43dc00ab0d0e247a2827d15dddfc5bd9646a29",
"domains": {
"edges": [
{
"node": {
"subdomains": {
"edges": []
},
"name": "aaa"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aarp"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "abb"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "abbott"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "abbvie"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "abc"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "able"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "abogado"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "abudhabi"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ac"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "academy"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "accenture"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "accountant"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "accountants"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aco"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "actor"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ad"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ads"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "adult"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ae"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aeg"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aero"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aetna"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "af"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "afl"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "africa"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ag"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "agakhan"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "agency"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ai"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aig"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "airbus"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "airforce"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "airtel"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "akdn"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "al"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "alibaba"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "alipay"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "allfinanz"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "allstate"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ally"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "alsace"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "alstom"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "am"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "amazon"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "americanexpress"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "americanfamily"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "amex"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "amfam"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "amica"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "amsterdam"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "analytics"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "android"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "anquan"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "anz"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ao"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aol"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "apartments"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "app"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "apple"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aq"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aquarelle"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ar"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "arab"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aramco"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "archi"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "army"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "arpa"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "art"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "arte"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "as"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "asda"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "asia"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "associates"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "at"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "athleta"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "attorney"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "au"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "auction"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "audi"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "audible"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "audio"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "auspost"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "author"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "auto"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "autos"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aw"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "aws"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ax"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "axa"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "az"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "azure"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "ba"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "baby"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "baidu"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "banamex"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "band"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "bank"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "bar"
}
},
{
"node": {
"subdomains": {
"edges": []
},
"name": "barcelona"
}
}
]
}
}
}
} # POST JSON to your ENSNode Omnigraph endpoint (same path enssdk uses).
curl -sS -X POST "https://api.v2-sepolia.ensnode.io/api/omnigraph" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{
"query": "query Namegraph { root { id domains { edges { node { name subdomains { edges { node { name subdomains { edges { node { name } } } } } } } } } } }",
"variables": {}
}
EOF import { createEnsNodeClient } from "enssdk/core";
import { graphql, omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({
url: process.env.ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"
}).extend(omnigraph);
const NamegraphQuery = graphql(`
query Namegraph {
root {
id
domains {
edges {
node {
name
subdomains {
edges {
node {
name
subdomains {
edges {
node {
name
}
}
}
}
}
}
}
}
}
}
}
`);
const result = await client.omnigraph.query({
query: NamegraphQuery,
variables: {},
});
if (result.errors) throw new Error(JSON.stringify(result.errors));
console.log(JSON.stringify(result.data, null, 2)); import { OmnigraphProvider, useOmnigraphQuery, graphql } from "enskit/react/omnigraph";
import { createEnsNodeClient } from "enssdk/core";
import { omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({
url: import.meta.env.VITE_ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"
}).extend(omnigraph);
const NamegraphQuery = graphql(`
query Namegraph {
root {
id
domains {
edges {
node {
name
subdomains {
edges {
node {
name
subdomains {
edges {
node {
name
}
}
}
}
}
}
}
}
}
}
}
`);
function NamegraphResult() {
const [result] = useOmnigraphQuery({
query: NamegraphQuery,
variables: {},
});
const { data, fetching, error } = result;
if (!data && fetching) return <p>Loading…</p>;
if (error) return <p>Error: {error.message}</p>;
if (!data) return <p>No data returned.</p>;
const formatted = JSON.stringify(
data,
(_, value) => (typeof value === "bigint" ? value.toString() : value),
2,
);
return <code>{formatted}</code>;
}
export default function App() {
return (
<OmnigraphProvider client={client}>
<NamegraphResult />
</OmnigraphProvider>
);
}
# 1. Create project
mkdir -p my-ens-script/src && cd my-ens-script
npm init -y && touch src/index.ts
npm pkg set type=module scripts.start="tsx src/index.ts"
# 2. Install dependencies
npm install enssdk@1.13.1 && npm install -D tsx typescript @types/node
# 3. Paste the TypeScript snippet above into src/index.ts
# 4. Run
ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm start
# 1. Create project
mkdir -p my-ens-script/src && cd my-ens-script
pnpm init && touch src/index.ts
pnpm pkg set type=module scripts.start="tsx src/index.ts"
# 2. Install dependencies
pnpm add enssdk@1.13.1 && pnpm add -D tsx typescript @types/node
# 3. Paste the TypeScript snippet above into src/index.ts
# 4. Run
ENSNODE_URL=https://api.v2-sepolia.ensnode.io pnpm start
# 1. Create project
npm create vite@latest my-ens-app -- --template react-ts --no-interactive --no-immediate
cd my-ens-app
# 2. Install dependencies
npm install
npm install enskit@1.13.1 enssdk@1.13.1
# 3. Copy the TSX snippet above into src/App.tsx
# 4. Run
VITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm run dev
# 1. Create project
pnpm create vite@latest my-ens-app --template react-ts --no-interactive --no-immediate
cd my-ens-app
# 2. Install dependencies
pnpm install
pnpm add enskit@1.13.1 enssdk@1.13.1
# 3. Copy the TSX snippet above into src/App.tsx
# 4. Run
VITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io pnpm run dev
Run in ENSAdmin
Open an interactive playground to execute this query on our sepolia-v2
ENSNode instance.
GraphQL Query
query Namegraph { root { id domains { edges { node { name
subdomains { edges { node { name
subdomains { edges { node { name } } } } } } } } } }}Payload and transport examples
{}
Response is an illustrative snapshot; live data depends on your ENSNode instance. The curl tab shows a POST to
https://api.v2-sepolia.ensnode.io/api/omnigraph
Open an interactive playground to execute this query on our sepolia-v2
ENSNode instance.
TypeScript
import { createEnsNodeClient } from "enssdk/core";import { graphql, omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: process.env.ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"}).extend(omnigraph);
const NamegraphQuery = graphql(` query Namegraph { root { id domains { edges { node { name
subdomains { edges { node { name
subdomains { edges { node { name } } } } } } } } } } }`);
const result = await client.omnigraph.query({ query: NamegraphQuery, variables: {},});
if (result.errors) throw new Error(JSON.stringify(result.errors));console.log(JSON.stringify(result.data, null, 2));enssdk setup
# 1. Create projectmkdir -p my-ens-script/src && cd my-ens-scriptnpm init -y && touch src/index.tsnpm pkg set type=module scripts.start="tsx src/index.ts"# 2. Install dependenciesnpm install enssdk@1.13.1 && npm install -D tsx typescript @types/node# 3. Paste the TypeScript snippet above into src/index.ts# 4. RunENSNODE_URL=https://api.v2-sepolia.ensnode.io npm startSee the enssdk docs for gql.tada plugin and tsconfig setup.
Open an interactive playground to execute this query on our sepolia-v2
ENSNode instance.
TSX (React)
import { OmnigraphProvider, useOmnigraphQuery, graphql } from "enskit/react/omnigraph";import { createEnsNodeClient } from "enssdk/core";import { omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: import.meta.env.VITE_ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"}).extend(omnigraph);
const NamegraphQuery = graphql(` query Namegraph { root { id domains { edges { node { name
subdomains { edges { node { name
subdomains { edges { node { name } } } } } } } } } } }`);
function NamegraphResult() { const [result] = useOmnigraphQuery({ query: NamegraphQuery, variables: {}, }); const { data, fetching, error } = result; if (!data && fetching) return <p>Loading…</p>; if (error) return <p>Error: {error.message}</p>; if (!data) return <p>No data returned.</p>; const formatted = JSON.stringify( data, (_, value) => (typeof value === "bigint" ? value.toString() : value), 2, ); return <code>{formatted}</code>;}
export default function App() { return ( <OmnigraphProvider client={client}> <NamegraphResult /> </OmnigraphProvider> );}enskit setup
# 1. Create projectnpm create vite@latest my-ens-app -- --template react-ts --no-interactive --no-immediatecd my-ens-app# 2. Install dependenciesnpm installnpm install enskit@1.13.1 enssdk@1.13.1# 3. Copy the TSX snippet above into src/App.tsx# 4. RunVITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm run devSee the enskit docs for gql.tada plugin and provider setup.
Back to Examples