Batch crypto price API: USD prices for up to 20 tokens in one call
USD prices for up to 20 crypto tokens in one call, by ticker (ETH, BTC, USDC, AERO…) or ERC-20 0x address, on Base, Ethereum, Arbitrum or Optimism, each from its deepest Uniswap v3 pool against USDC or WETH, read live from the chain, with pool, reserve and a thin-liquidity flag. Tokens without a pool are listed under unpriced instead of failing the call. Spot prices. Use to value a basket of tokens or refresh a watchlist in one paid call.
When to use it
- Value a basket of tokens or refresh a watchlist in one paid call
- Price by ticker (ETH, BTC, USDC, AERO) or ERC-20 address on Base, Ethereum, Arbitrum or Optimism
- Spot tokens with thin liquidity before relying on the price
Guide: Token price API
Inputs
| Name | Type | Description |
|---|---|---|
symbols | string | Comma-separated tickers such as ETH,BTC,AERO (with or instead of addresses; 1-20 tokens in all) |
addresses | string | Comma-separated 0x ERC-20 token addresses (with or instead of symbols; 1-20 tokens in all) |
chain | string | Network: base (default), eth, arb or op. One of: base, eth, arb, op. |
Request
Over HTTP, with a card key from /credits:
curl -H "Authorization: Bearer adt_…" "https://tools.funwords.eu/price/tokens?symbols=ETH%2CBTC%2CAERO"
Or one of your 25 free calls, no key:
curl "https://tools.funwords.eu/price/tokens?symbols=ETH%2CBTC%2CAERO&trial=1"
Without a key, the same URL answers 402 Payment Required with x402 and MPP terms, so an agent with a wallet pays per call in USDC (Base, Polygon, Arbitrum or Solana over x402; Base or Tempo over MPP) and retries.
Example result
{
"chain": "Base",
"chainId": 8453,
"ethUsd": 3850.12,
"block": 37000000,
"prices": [
{
"address": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
"symbol": "cbBTC",
"decimals": 8,
"priceUsd": 104250.5,
"quotedIn": "USDC",
"pool": {
"address": "0x…",
"feeTier": 500,
"quoteReserve": 2500000.25,
"quoteReserveUsd": 2500000.25
},
"thinLiquidity": false
}
],
"unpriced": [
{
"address": "0x…",
"reason": "no Uniswap v3 pool against USDC or WETH"
}
],
"method": "Uniswap v3 spot price from the pool with the largest USDC or WETH reserve"
}
From an AI agent (MCP)
Add the MCP server to Claude, Cursor or any MCP client. This tool is price_tokens, and the first 25 successful calls are free:
https://tools.funwords.eu/mcp
Questions
Where do the prices come from?
Each token's deepest Uniswap v3 pool against USDC or WETH on the chosen chain, read live from the chain at call time. Spot prices.
What if a token has no pool?
It is listed under unpriced with the reason instead of failing the call.
How do I pay?
Each successful call costs $0.005; failed calls are not charged. The first 25 calls are free. Then pay with card credits (from $1; the key goes in an Authorization header or, for clients that can only fetch a URL, as api_key= in the URL) or per call in USDC over x402 or MPP. No account is needed.