ETH: DEX Volume Routed by Each Aggregator
Included with Plus.
The dollar value of DEX trades routed by each aggregator and intent network each hour and day, stacked.
Why use it. Shows which router is capturing the most order flow, and how quickly that changes. How to read it. Each band is one aggregator; the top of the stack is everything routed. Compare with the Share of DEX Volume Routed by Aggregators chart for how large this is against all DEX volume.
Calculation. A DEX trade counts as routed by an aggregator when the transaction was sent to that aggregator's own contract (1inch's routers, CoW Protocol's settlement contract, 0x's Exchange Proxy and AllowanceHolder, ParaSwap's Augustus, KyberSwap's MetaAggregationRouter, Odos's routers, OpenOcean's exchange contract, MetaMask's swaps router), or when the transaction filled an order on UniswapX's reactors or CoW Protocol (their Fill and Trade events), whoever sent it. All other trades count as direct. Bots and market makers that call the DEX pools directly count as direct. Venues on Ethereum mainnet: Uniswap v2, v3 and v4, SushiSwap v2, Curve (every pool in Curve's on-chain MetaRegistry), Balancer v1, v2 and v3, PancakeSwap v2 and v3, Fluid's DEX pools, Ekubo's Core contracts and Maverick v1 and v2. Pools are taken only from each protocol's own registries or creation events. On Balancer a swap against a pool's own LP token (a composable or boosted pool's deposit or withdrawal in disguise) is not counted. Not covered: orders filled outside these pools, such as off-chain market-maker quotes settled through 1inch, 0x and UniswapX fillers, and every other DEX and network. A trade is one transaction's swaps through one pool, netted, for every venue alike: two swaps through the same pool in one transaction count once, arbitrage and other automated trades count like any other. A swap's amounts come from the venue's own swap event, except Uniswap v2, Uniswap v3 and SushiSwap before 15 October 2026, which are read from the pools' own state as our node recorded it before and after every transaction (the same trades on the days checked). A trade is valued by the amount of its priced token that entered or left the pool: US-dollar stablecoins (USDC, USDT, DAI, USDS, PYUSD, FDUSD, USD1, RLUSD) at face value, wrapped or native ether at CryptoKeyhole's hourly ETH/USD price, Wrapped Bitcoin at its hourly BTC/USD price; the stablecoin side is used first, then ether, then Wrapped Bitcoin. Trades between two tokens neither of which is priced this way are counted as trades but carry no value, so the dollar figures slightly understate tokens traded only against each other (some Curve and Balancer pairs). Available since the producer started reading transaction senders and recipients (the first full hour after its forward start); only completed hours; the open day is a labelled partial. Older blocks are not covered. Only finalized blocks are counted.