ENS data is distributed across 20+ smart contracts, with state and history spanning back to 2017. Accessing and reconstructing this data reliably requires significant domain knowledge and non-trivial indexing.
I’ve built a distributed indexing solution that continuously syncs ENS data, processes it into a structured form, and exposes it via a RESTful API.
The API enables querying across:
- Ownership (current and historical)
- Resolver and text records
- Reverse records
- Full domain history
- Names by address, TLD, namehash or labelhash
The blog post linked below goes into more depth about what the product does, and how it works:
ENSWhois
ENSWhois.com is a frontend built on top of this API.
It acts as both:
- a user-facing product for exploring ENS data
- a reference implementation demonstrating what becomes possible with a complete ENS data layer
Supplementary Links
The following supplementary links hopefully answer some of the more obvious questions:
API First
I believe that an API-first approach is crucial for the continued success of the Ethereum Name Service.
Today, integrating ENS often requires:
- direct interaction with multiple contracts
- reconstructing historical state from events
- deep protocol-specific knowledge
This creates a barrier to growth - if it is hard to use ENS, people simply won’t do so.
An indexed, queryable data layer removes that complexity and enables:
- faster integrations
- new product surfaces
- broader adoption beyond crypto-native developers
This direction has been shaped through conversations with companies in the DNS space that, in principle, want to use ENS, but are currently blocked by complexity.
Feedback
I would be very interested to hear people’s opinions on this and how it can be iterated and improved upon. ![]()
If you are considering an integration, I would be happy to support - I am interested to learn how consumers utilize this.
Screenshots
https://enswhois.com/name/vitalik.eth/events
(API) https://api.enswhois.com/domain/vitalik.eth/events
https://enswhois.com/name/com/subdomains
(API) https://api.enswhois.com/domain/com/subdomains?page=1
https://enswhois.com/labelhash/0x6fd43e7cffc31bb581d7421c8698e29aa2bd8e7186a394b85299908b4eb9b175
(API) https://api.enswhois.com/lookup-labelhash/0x6fd43e7cffc31bb581d7421c8698e29aa2bd8e7186a394b85299908b4eb9b175
https://enswhois.com/name/test.eth
(API) https://api.enswhois.com/domain/test.eth/ownership-history
https://status.enswhois.com/indexers




