AggregatorsLive

Fastest crypto price API, live head lag across Mobula, Codex, GeckoTerminal, Serialized

Wall-clock head lag in seconds from on-chain swap event to API emission, measured live for Mobula, Codex and GeckoTerminal on Base, BNB Chain, Solana and Robinhood Chain.

TL;DR. As of , Mobula posts the lowest head lag at 0.5 s (p50, 24h) on Fastest crypto price API, live head lag across Mobula, Codex, GeckoTerminal, Serialized. Source: OpenChainBench, https://openchainbench.com/benchmarks/aggregator-head-lag.

This benchmark measures the question every builder of a trading UI, a PnL tracker or a live DEX dashboard has to answer before picking a data provider. how many seconds elapse between a swap landing on chain and the same event appearing on the provider's feed. Marketing pages quote "real-time" without a number; this page quotes the number. Mobula's WebSocket, Codex's GraphQL feed, GeckoTerminal's REST endpoint are watched from three regions (us-east, eu-west, sgp). On Base the zero point is the sequencer's flashblock preconfirmation stream, which we hold ourselves; on BNB Chain, Solana and Robinhood Chain it is the on-chain timestamp against canonical-tip archive nodes. Because each chain has its own base block cadence (Solana's ~400 ms slots vs Base/BNB's 2-3 s blocks), the headline winner shifts by chain. On Solana the leader is Mobula at 0.0 s; on Base it's Mobula at 0.2 s; on BNB Chain it's Mobula at 0.8 s. p50 and p99 are computed via Prometheus `quantile_over_time` over a 24-hour window so the leaderboard reflects sustained freshness, not a cherry-picked cold-start sample. The same harness tracks presence (5760 expected samples per provider per day), so a provider whose feed dropped for an hour shows it on the success rate column rather than disappearing silently from the latency aggregate.

Methodology

We measure the gap between a transaction settling on chain and the same transaction appearing on each aggregator's data feed. The harness watches reference pools across Base, BNB Chain, Solana and Robinhood Chain from three regions (us-east, eu-west, sgp), records every new on-chain event with millisecond timestamps, and observes when each aggregator's WebSocket reflects the same event.

Frequently asked

Which crypto data API has the lowest latency right now?

It depends on the chain, because each chain's base block cadence sets a different floor. On Solana the leader is Mobula at 0.0 s (p50, 24 h). On Base it's Mobula at 0.2 s. On BNB Chain it's Mobula at 0.8 s. On Robinhood Chain it's Serialized at 0.8 s. Pick a provider based on the chain you are integrating, not a cross-chain average.

What is head lag in a crypto data feed?

Head lag is the wall-clock interval between a transaction landing in a confirmed block on chain and the same transaction appearing on the data provider's feed. A provider with 200 ms head lag pushes the event a fifth of a second after it settled; a provider with 6 s head lag pushes it after six seconds. The number controls how live a trading UI, a chart or a PnL tracker actually feels when the underlying chain moves.

Is WebSocket faster than REST for crypto market data?

Yes, structurally. A WebSocket connection pushes events the moment the provider's indexer has them, so latency tracks the publisher's indexer speed and the network path. REST polling adds the poll interval to every read: a one-second poll cadence puts a floor of one second on top of whatever the indexer adds. The leaderboard shows the difference live, with Mobula on a WebSocket feed, Codex on GraphQL subscriptions and GeckoTerminal on REST.

How fast does GeckoTerminal update prices?

GeckoTerminal currently sits at 24 s (p50, 24 h) head lag on this benchmark. REST endpoints update at the publisher's chosen cadence rather than the moment a swap lands, which is the architectural reason REST polling reads slower than WebSocket feeds for the same underlying chain data.

Why does the Solana leader show a lag near zero?

Because on Solana the ruler is the first feed to report the trade, not the chain. Solana's blockTime has one-second resolution and nothing on chain marks the millisecond a trade became observable, so measuring each provider against the timestamp it sends compared clock conventions: one provider's field was its own ingestion time (a constant 0.10 s), another's the blockTime (0.75 s on average). Against a common clock the two are 10 to 30 ms apart. The First to report view answers the question directly: the share of trades each feed delivered first. Our own node runs in the race and only wins on a small share of trades, which tells you these push feeds beat a plain RPC subscription; an absolute number needs a geyser-grade reference, which no RPC WebSocket we tested provides.

How is head lag measured on OpenChainBench?

On Base the harness holds the sequencer's flashblock preconfirmation stream in every region and timestamps each transaction the first time it appears there; on BNB Chain, Solana and Robinhood Chain it holds canonical-tip archive nodes and uses the on-chain timestamp. Every swap is timestamped with millisecond precision. The harness then watches each provider's feed for the same event and computes the delta. p50, p90 and p99 are aggregated over 24 hours via Prometheus `quantile_over_time`. Errors and dropouts are tracked separately as a presence ratio so a fast feed that disappears does not silently rank above a slower feed that stays up.

Which data provider should I pick for a real-time trading interface?

Read both the p50 and the p99 columns. p50 tells the typical experience, p99 tells the worst minute a user will see when a chain spikes or a region's path degrades. A 500 ms p50 with a 30 s p99 means most of the time the UI feels snappy and once per minute it stutters. The leaderboard splits both, plus the success rate column flags providers whose feed dropped during the measurement window.

Source code github.com/ChainBench/OpenChainBench/tree/main/harnesses/aggregator-head-lag