Fastest Solana DEX quote API
Wallclock milliseconds from quote request to usable quote response.
Solana DEX aggregators sit on the hot path of every swap a wallet, trading UI or routing front-end builds. A quote API that takes 600 ms pushes a perceptible delay onto the user; a quote API at 80 ms feels instant. This benchmark measures the wall-clock latency of the request-response round trip on each major Solana DEX aggregator's quote endpoint, against the tokens that are *actually trending right now* on Solana. Every 60 seconds the harness picks a fresh bonded token from Mobula Pulse V2's live WebSocket feed (post-bonding-curve graduates from Pump.fun, Meteora, Raydium LaunchLab and friends) and asks each provider for a 100 USDC → tokenOut quote at 1% slippage. Rotating against newly-trending tokens defeats every per-pair edge cache and forces each provider to actually search a route, so the recorded number reflects routing-search cost rather than a CDN hit. Liquidity-gap failures (a provider that can't route the picked token at all) land on their own counter and are excluded from the latency histogram, so a provider that fails fast on long-tail coverage isn't penalised on the percentiles.
Methodology
We measure the wallclock latency of the Solana DEX aggregator quote APIs on freshly-trending tokens. Every 60 seconds the harness picks one token from a sliding 30-minute window of Mobula Pulse V2 bonded events on Solana, then sends an identical 100 USDC → tokenOut quote (1% slippage, no fee, no referrer) to each provider from three Railway regions and records the time from request dispatch to the first byte of a response that contains a usable quoted output amount.
Frequently asked
Which Solana DEX has the fastest quote API right now?
Jupiter currently returns quotes the fastest at 14 ms (p50, 24 h) across 2 measured providers. The leaderboard re-sorts every 60 seconds against fresh samples and rotates the target token each tick so no provider can serve from edge cache. The answer reflects 24 hours of measured latency across us-east, eu-west and sgp, not a marketing-page claim.
What is quote latency on a DEX aggregator?
Quote latency is the wallclock time between a swap UI asking a DEX aggregator 'what would I get if I traded 100 USDC for this token right now?' and the aggregator answering with a usable routed price. A quote API at 80 ms feels instant to the user; a quote API at 600 ms introduces a visible delay between input change and updated output. The number sets the floor on how live a swap UI can feel before any other latency (RPC, signing, broadcast) is added.
Why does the bench rotate the target token instead of always quoting SOL → USDC?
SOL → USDC is the most-cached pair on Solana: Jupiter's lite endpoint serves it from a CloudFront edge in 30-50 ms, but that measures cache hit, not routing. Rotating the target every tick, and rotating against the tokens that are *actually trending right now* via Mobula Pulse V2's bonded WebSocket feed, defeats every per-pair edge cache and forces each provider to actually run a routing search. The metric becomes a fair comparison of routing engines, not CDN configurations.
How is quote latency measured on OpenChainBench?
A harness in each of three Railway regions (us-east, eu-west, sgp) ticks every 60 seconds: it picks one Solana token from a sliding 30-minute window of bonded tokens emitted by Mobula Pulse V2 over WebSocket, then asks each provider for a 100 USDC → tokenOut quote at 1% slippage in parallel. The HTTP client reuses TCP and TLS connections across ticks, so the recorded number is the steady-state round-trip a long-lived backend integration sees, not the one-off cold-start handshake. The wallclock from request dispatch to the first byte containing a usable quoted output amount is the recorded latency. p50, p90 and p99 are computed per region via Prometheus `histogram_quantile` over 24 hours (precomputed recording rules), then averaged equal-weight across the 3 regions.
What if a provider can't quote a particular long-tail token?
It's counted as a no-route, not as a slow quote. Each provider has a recognisable 'I have no path for this pair' signal (Jupiter `NO_ROUTES_FOUND` / `TOKEN_NOT_TRADABLE`, Mobula `No route found` / `Token not found`, Raydium `INSUFFICIENT_LIQUIDITY` / `ROUTE_NOT_FOUND`, OpenOcean payload-level signal). When the harness sees it, the tick lands on `solana_quote_no_route_total` and is excluded from the latency histogram entirely, so providers that fail fast on coverage gaps aren't penalised on the percentiles. The success-rate column reflects the no-route rate honestly.
Why does Raydium have a much lower success rate than the aggregators?
Raydium's compute endpoint is single-venue: it only routes against Raydium's own AMM v4 / CPMM / CLMM pools and does not multi-hop via SOL the way Jupiter or Mobula do. Because the rotation now pulls from Mobula Pulse V2's bonded feed (most of which are Pump.fun graduates living on PumpSwap, plus Meteora and Orca pools), Raydium returns INSUFFICIENT_LIQUIDITY or ROUTE_NOT_FOUND on roughly 80% of picks. That's accurate: Raydium's API is a Raydium-pool route engine, not an aggregator. The latency column for Raydium is the conditional p50 over the small subset of bonded tokens that happen to have a Raydium pool.
Are authentication errors and rate limits counted as 'slow'?
No. HTTP 401/403/429 responses are excluded from the latency histogram entirely. They are counted in separate counters (`solana_quote_auth_error_total`, `solana_quote_throttled_total`) which show up on the success rate column. A provider that's fast but rate-limits us at the configured cadence loses points on success rate, not on latency.
Source code github.com/ChainBench/OpenChainBench/tree/main/harnesses/solana-quote-latency