Skip to content

GET /cex-dex/{token}

$0.02 USDC

The divergence between Coinbase’s price for a token and an on-chain price, from a snapshot the scanner refreshes every 5 minutes. The on-chain side is Chainlink where a feed exists; dex_source says which source it was.

This endpoint can be withdrawn: while Coinbase-derived data is switched off it answers 503 and quotes no price.

GET https://api.cerebruspulse.xyz/cex-dex/{token}
ParameterTypeRequiredDescription
tokenstringYesToken symbol, case-insensitive. Aliases: WETH → ETH, WBTC → BTC, BITCOIN → BTC, ETHEREUM → ETH. The snapshot on 2026-09-24 covered 15 tokens: AAVE, ARB, AVAX, BTC, CRV, DOGE, ETH, FIL, LINK, NEAR, OP, SEI, SOL, SUI, UNI. Another token gets a 400 listing the available ones, not charged.
FieldTypeDescription
endpointstringcex-dex
tokenstringThe token, after aliases
timestamp_isostringWhen the snapshot was taken (ISO 8601)
divergence.cex_pricenumberCoinbase price (USD)
divergence.dex_pricenumberThe on-chain price (USD)
divergence.dex_sourcestringWhere dex_price came from: chainlink, or a fallback such as coinbase or defillama
divergence.spread_bpsnumberThe divergence in basis points, as the scanner reports it
divergence.spread_pctnumberThe same in percent
divergence.directionstringcex_premium or dex_premium
divergence.interpretationstringThe direction in words
metaobjectCommon metadata (Response Schemas); data_age_seconds is the snapshot’s age, and above 600 seconds meta.warning is stale_data
meta.offeringstringpulse_cex_dex
meta.refresh_interval_minutesnumber5
meta.cex_sourcestringcoinbase

GET /cex-dex/ETH: real engine output on market data captured at 2026-09-24 17:05 UTC. Lists are cut to 3 items. Live responses may also carry meta.disclaimer, which the gateway adds.

{
"endpoint": "cex-dex",
"token": "ETH",
"timestamp_iso": "2026-09-24T16:59:05.418496+00:00",
"divergence": {
"cex_price": 2687.75,
"dex_price": 2686.6836,
"dex_source": "chainlink",
"spread_bps": 4,
"spread_pct": 0.04,
"direction": "cex_premium",
"interpretation": "CEX trading at premium to DEX"
},
"meta": {
"provider": "Cerebrus Pulse",
"offering": "pulse_cex_dex",
"execution_ms": 0,
"data_age_seconds": 355.4,
"refresh_interval_minutes": 5,
"cex_source": "coinbase",
"sources": [
{
"name": "Coinbase Exchange",
"url": "https://www.coinbase.com"
},
{
"name": "Chainlink Data Feeds (Arbitrum One)",
"url": "https://data.chain.link"
}
]
}
}
StatusReason
400Invalid symbol (before any price is quoted), or a token the snapshot does not cover (not charged)
402Payment required (the standard x402 flow)
429Rate limit exceeded
503Withdrawn, service disabled, payments down, or the CEX-DEX feed is missing or stale; no price is quoted
504Engine timeout (not charged)

The /screener carries the same divergence per market in cex_dex_spread_bps.