ERC-20 token USD price from on-chain DEX pools API

Spot USD and native-coin price of an ERC-20 token on Base, Ethereum, Arbitrum, OP Mainnet, Polygon or Avalanche from its deepest Uniswap v2/v3 pool (plus Aerodrome on Base) paired with the wrapped native coin or USDC, with each pool's fee and USD liquidity, the best pool, a confidence level and the block read. Sources: on-chain reads via PublicNode JSON-RPC (official RPC fallback); native USD from Uniswap v3 pools.

$0.002 per call  USDC over x402 v2 on Base, Polygon, Arbitrum, Avalanche or Sei. No signup, no API key. Requests that fail or match nothing are not charged.

Endpoint

GET https://api.kit-rx.com/v1/chain/token-price

Parameters

NameTypeRequiredDescription
chainstring: base, ethereum, arbitrum, optimism, polygon, avalancheyesChain of the token: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114). Chain ids and aliases such as eth, arb, op, matic, avax are also accepted. e.g. base
addressstringyesToken contract address (0x followed by 40 hex characters). e.g. 0x940181a94A35A4569E4529A3CDfB74e38FD98631

Example request

https://api.kit-rx.com/v1/chain/token-price?chain=base&address=0x940181a94A35A4569E4529A3CDfB74e38FD98631

Without payment the server answers 402 Payment Required with the price (2000 atomic USDC) in the PAYMENT-REQUIRED header. Any x402 v2 client pays and retries automatically. A request with no parameters runs this example.

curl -i "https://api.kit-rx.com/v1/chain/token-price?chain=base&address=0x940181a94A35A4569E4529A3CDfB74e38FD98631"

Pay from an agent

AgentCash: fetch the URL. OpenDexter MCP: x402_fetch. Kit Rx MCP server: https://api.kit-rx.com/mcp. Code:

import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.BUYER_KEY) });
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://api.kit-rx.com/v1/chain/token-price?chain=base&address=0x940181a94A35A4569E4529A3CDfB74e38FD98631");
console.log(await res.json());

Example response

{
  "query": {
    "chain": "base",
    "address": "0x940181a94A35A4569E4529A3CDfB74e38FD98631"
  },
  "result": {
    "chain": "base",
    "chain_id": 8453,
    "address": "0x940181a94A35A4569E4529A3CDfB74e38FD98631",
    "symbol": "AERO",
    "decimals": 18,
    "price_usd": 0.423687,
    "price_native": 0.000245343,
    "native_symbol": "ETH",
    "native_usd": 1726.92,
    "best_pool": {
      "dex": "Aerodrome",
      "address": "0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d",
      "pair": "AERO/USDC",
      "fee_pct": 0.3,
      "stable": false,
      "price_usd": 0.423687,
      "liquidity_usd": 3678000,
      "quote_reserve_usd": 1839000
    },
    "pools": [
      {
        "dex": "Aerodrome",
        "address": "0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d",
        "pair": "AERO/USDC",
        "fee_pct": 0.3,
        "stable": false,
        "price_usd": 0.423687,
        "liquidity_usd": 3678000,
        "quote_reserve_usd": 1839000
      },
      {
        "dex": "Uniswap v3",
        "address": "0x3d5D143381916280ff91407FeBEB52f2b60f33Cf",
        "pair": "AERO/WETH",
        "fee_pct": 0.3,
        "price_usd": 0.42352,
        "liquidity_usd": 1015000,
        "quote_reserve_usd": 303200,
        "in_range": true
      }
    ],
    "pools_found": 24,
    "total_liquidity_usd": 6513000,
    "price_spread_pct": 0.887,
    "confidence": "high",
    "confidence_reasons": [],
    "block": 57571656
  },
  "sources": [
    {
      "name": "Base JSON-RPC via PublicNode",
      "url": "https://base-rpc.publicnode.com"
    }
  ],
  "notes": [
    "Spot price (before fees and price impact) from the pool with the largest WETH or USDC reserves; WETH converted via Base's deepest Uniswap v3 WETH/USDC pool, USDC = $1. liquidity_usd values the token side at price_usd; quote_reserve_usd is the WETH or USDC side alone; confidence counts at most twice that side."
  ],
  "generated_at": "2026-11-15T01:05:06.894Z"
}

Kit Rx: Pay-per-call data and safety tools for AI agents, paid in USDC over x402. No signup, no API key. Machine-readable: OpenAPI, llms.txt, /.well-known/x402, agent skills.