Skip to content

Domain By Name

Run in ENSAdmin
query DomainByName($name: InterpretedName!) {
  domain(by: {name: $name}) {
    __typename
    id
    label { interpreted hash }
    name
    owner { address }

    ... on ENSv1Domain {
      rootRegistryOwner { address }
    }

    ... on ENSv2Domain {
      subregistry {
        contract { chainId address }
      }
    }
  }
}
{
  "name": "sfmonicdebmig.eth"
}
{
  "data": {
    "domain": {
      "__typename": "ENSv2Domain",
      "id": "0x…",
      "label": {
        "interpreted": "sfmonicdebmig",
        "hash": "0x…"
      },
      "name": "sfmonicdebmig.eth",
      "owner": {
        "address": "0x2f8e8b1126e75fde0b7f731e7cb5847eba2d2574"
      },
      "subregistry": {
        "contract": {
          "chainId": 11155111,
          "address": "0x…"
        }
      }
    }
  }
}
# 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 DomainByName($name: InterpretedName!) { domain(by: {name: $name}) { __typename id label { interpreted hash } name owner { address } ... on ENSv1Domain { rootRegistryOwner { address } } ... on ENSv2Domain { subregistry { contract { chainId address } } } } }",
  "variables": {
    "name": "sfmonicdebmig.eth"
  }
}
EOF
GraphQL
query.graphql
query DomainByName($name: InterpretedName!) {
domain(by: {name: $name}) {
__typename
id
label { interpreted hash }
name
owner { address }
... on ENSv1Domain {
rootRegistryOwner { address }
}
... on ENSv2Domain {
subregistry {
contract { chainId address }
}
}
}
}

Payload and transport examples

variables.json
{
"name": "sfmonicdebmig.eth"
}

Response is an illustrative snapshot; live data depends on your ENSNode instance. The curl tab shows a POST to /api/omnigraph on your connection base URL (same as enssdk).

Back to Omnigraph Cookbook