All posts
Marketplace 19 July 2026 5 min read

As Grails winds down, ENS.Tools becomes the home for ENS trading

Grails is shutting down. Rather than build a new marketplace contract, we indexed ENS activity natively on Seaport and plugged into the OpenSea Stream API, so the full ENS order book now lives in one place — with no gap in coverage.

Grails, one of the marketplaces ENS collectors relied on for listings and offers, is shutting down. Rather than let that leave a hole in the market, we spent the last few weeks making sure ENS.Tools captures the activity that would otherwise disappear with it — without inventing a new marketplace contract to do it.

No new contract, just Seaport

Every serious ENS marketplace — including Grails’ own listings — settles through the same underlying protocol: Seaport. That meant we did not need to launch a competing contract or ask anyone to migrate anything. Seaport orders themselves live off-chain as signed messages, so there is no single on-chain book to read; what is on-chain is every fill. We index those fills ourselves, and aggregate the open orders from the sources that carry them — our own native listings, the OpenSea Stream, and Grails while it lasts.

Real-time listings via OpenSea Stream

For the listings side, we run a dedicated worker against the OpenSea Stream API, which is live and has been running continuously — a heartbeat every 5 minutes, ingesting active ENS listings from OpenSea in real time. At last check it was tracking well over a thousand live listings, kept current as they are created, updated, or filled. Sales are handled separately, by our own on-chain Seaport indexer.

How fresh is the book

Different sources update at different speeds, so /trade blends them by how fast each one actually changes:

  • Native listings and offers — instant; they are written the moment you sign, not discovered later
  • OpenSea listings — seconds, via the Stream API's push updates
  • Grails-sourced listings — 15-minute poll, covering the bulk of the remaining order book while it winds down
  • Sales history — 3-minute indexer pass, see our native sales indexing post
  • Stale-listing sweep — hourly, to catch anything that fell through the cracks between sources

The /trade order book refreshes every 15 seconds, and again whenever you come back to the tab. There is no realtime push to the browser yet, so a listing you just placed on another front-end may take up to that long to appear.

What this means if you traded on Grails

Nothing to migrate. If a listing or offer you placed on Grails settles through Seaport, it is already visible on ENS.Tools today. As Grails’ own polling frequency drops toward zero, that gap gets filled entirely by our native indexer and the OpenSea Stream feed — the order book does not thin out, it just changes which pipe it is flowing through.

Try it

Browse the full order book at /trade — native listings, OpenSea listings, and offers on the names you own, all in one feed.

Related — also tagged Marketplace