CEX-DEX arbitrage spread calculator
CEX-DEX arbitrage spread calculator - compares a global reference price (Coinbase spot, CoinGecko fallback) against a DEX pool price and returns gross/net spread and an is_profitable flag after an assumed gas cost. Paid in USDC on Base.
Answeringour last check, 2026-10-01
1 of 1checks answered this week
320 msmedian answer time
$0.02listed price per call
$0.02price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
GET https://alphapipeline-eu.onrender.com/v1/arb/spread-matrix
| Category | Market data |
|---|---|
| Provider host | alphapipeline-eu.onrender.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 0 from 0 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-01 | valid payment request | 402 | $0.02 | 320 ms |
Example input (from the provider)
{
"method": "GET",
"queryParams": {
"network": "base",
"symbol": "SUI",
"token_address": "0x0000000000000000000000000000000000000000",
"trade_size_usd": 1000
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET",
"HEAD",
"DELETE"
],
"type": "string"
},
"queryParams": {
"properties": {
"min_spread_threshold_pct": {
"description": "Net spread threshold (%) above which is_profitable is true. Defaults to 0.8.",
"type": "number"
},
"network": {
"description": "GeckoTerminal network id, e.g. base, eth. Defaults to base.",
"type": "string"
},
"pool_address": {
"description": "Specific DEX pool contract address (optional if token_address is given).",
"type": "string"
},
"symbol": {
"description": "Ticker symbol, e.g. SUI, BTC, ETH.",
"type": "string"
},
"token_address": {
"description": "Token contract address - the most liquid pool is auto-selected (optional if pool_address is given).",
"type": "string"
},
"trade_size_usd": {
"description": "Hypothetical trade size in USD. Defaults to 1000.",
"type": "number"
}
},
"required": [
"symbol"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"assumed_gas_cost_usd": {
"title": "Assumed Gas Cost Usd",
"type": "number"
},
"cex_price_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Cex Price Usd"
},
"data_source": {
"title": "Data Source",
"type": "string"
},
"dex_price_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Dex Price Usd"
},
"direction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Direction"
},
"generated_at": {
"properties": {
"kst": {
"title": "Kst",
"type": "string"
},
"utc": {
"title": "Utc",
"type": "string"
}
},
"required": [
"utc",
"kst"
],
"title": "TimestampPair",
"type": "object"
},
"gross_spread_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Gross Spread Pct"
},
"is_profitable": {
"title": "Is Profitable",
"type": "boolean"
},
"min_spread_threshold_pct": {
"title": "Min Spread Threshold Pct",
"type": "number"
},
"net_spread_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Net Spread Pct"
},
"network": {
"title": "Network",
"type": "string"
},
"notice": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Notice"
},
"pool_address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Pool Address"
},
"pool_fee_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "DEX pool's fee tier parsed from GeckoTerminal's pool name (e.g. 0.05 for a 0.05% pool). Informational only - net_spread_pct does NOT subtract it.",
"title": "Pool Fee Pct"
},
"status_message": {
"title": "Status Message",
"type": "string"
},
"symbol": {
"title": "Symbol",
"type": "string"
},
"trade_size_usd": {
"title": "Trade Size Usd",
"type": "number"
}
},
"required": [
"generated_at",
"symbol",
"network",
"status_message",
"is_profitable",
"trade_size_usd",
"assumed_gas_cost_usd",