Spot price of any ERC20 read straight from the deepest Uniswap V3 pool against USDC, on Ba
Spot price of any ERC20 read straight from the deepest Uniswap V3 pool against USDC, on Base, Ethereum, Polygon, Arbitrum or Optimism. Returns the pool address, fee tier, liquidity, sqrtPriceX96, tick and block, so the number can be audited instead of trusted. No aggregator and no API key: the source is the chain itself. Via eth_call.
5000 (raw units)
price
1
calls / 30d
1
unique payers
2026-09-12
updated
Provider
flat-rate-llm.kikoribera03.workers.dev · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0xc210Ea7D5692a6401ADf25BbCB7aCDe9cDB7e9Ff",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "5000",
"maxTimeoutSeconds": 300
},
{
"scheme": "exact",
"network": "eip155:137",
"payTo": "0xc210Ea7D5692a6401ADf25BbCB7aCDe9cDB7e9Ff",
"asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"amount": "5000",
"maxTimeoutSeconds": 300
},
{
"scheme": "exact",
"network": "eip155:42161",
"payTo": "0xc210Ea7D5692a6401ADf25BbCB7aCDe9cDB7e9Ff",
"asset": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"amount": "5000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"method": "GET",
"queryParams": {
"chain": "base",
"token": "0x4200000000000000000000000000000000000006"
},
"type": "http"
},
"output": {
"example": {
"blockNumber": 51047956,
"feeTier": 500,
"liquidity": "1102179176391610992",
"pool": "0xd0b53d9277642d899df5c87a3966a349a798f224",
"price": "2528.041",
"quoteSymbol": "USDC"
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"chain": {
"description": "base | ethereum | polygon | arbitrum | optimism.",
"type": "string"
},
"quote": {
"description": "Token to price it against. Defaults to the chain's native USDC.",
"type": "string"
},
"token": {
"description": "ERC20 contract address to price.",
"type": "string"
}
},
"required": [
"token"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://flat-rate-llm.kikoribera03.workers.dev/v1/evm/token-price" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://flat-rate-llm.kikoribera03.workers.dev/v1/evm/token-price");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://flat-rate-llm.kikoribera03.workers.dev/v1/evm/token-price")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/8107.json, and this resource appears in /discovery/resources and /discovery/search.