# Balancer API
> Live data from Balancer, a leading multi-chain decentralised AMM whose programmable liquidity pools (weighted, stable, gyro, boosted) power swaps and yield across Ethereum, Arbitrum, Base, Polygon, Avalanche, Gnosis, Optimism and more. The pools endpoint returns the top pools by TVL on a chain — each with its type, total liquidity, 24h volume and fees, total APR (with a yield/swap/staking breakdown) and constituent tokens. The pool endpoint returns one pool's full state by id, including swap and holder counts and the full APR breakdown. The token endpoint returns a token's live Balancer price plus its symbol, name and decimals. The tokens endpoint searches the token registry by symbol or name. Read live from Balancer, nothing stored. This is Balancer's own programmable-pool AMM, TVL/volume/APR and token-pricing layer — distinct from constant-product DEX feeds, Curve's stableswap and order-book or perps DEX feeds.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/balancer-api/..."
```

## Pricing
- **Free** (Free) — 1,500 calls/Mo, 3 req/s
- **Starter** ($10/Mo) — 50,000 calls/Mo, 15 req/s
- **Pro** ($28/Mo) — 275,000 calls/Mo, 40 req/s
- **Scale** ($65/Mo) — 1,800,000 calls/Mo, 120 req/s

## Endpoints

### Pools

#### `GET /v1/pools` — Top pools by TVL on a chain

**Parameters:**
- `chain` (query, optional, string) — mainnet (default), arbitrum, base, polygon … Example: `mainnet`
- `type` (query, optional, string) — Pool type filter (weighted, stable, gyro …) Example: `weighted`
- `limit` (query, optional, string) — Max results (1-100) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/balancer-api/v1/pools?chain=mainnet&type=weighted&limit=25"
```

**Response:**
```json
{
    "data": {
        "chain": "MAINNET",
        "count": 25,
        "pools": [
            {
                "id": "0x3de27efa2f1aa663ae5d458857e731c129069f29000200000000000000000588",
                "name": "20wstETH-80AAVE",
                "type": "WEIGHTED",
                "chain": "MAINNET",
                "symbol": "20wstETH-80AAVE",
                "tokens": [
                    {
                        "symbol": "wstETH",
                        "address": "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",
                        "balance": 927.3636236173187
                    },
                    {
                        "symbol": "AAVE",
                        "address": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9",
                        "balance": 122233.46252704601
                    }
                ],
                "tvl_usd": 9268838.04,
                "fees_24h_usd": 377.2,
                "total_apr_pct": 1.2653,
                "volume_24h_usd": 129177.15,
                "protocol_version": 2
            },
            {
                "id": "0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014",
                "name": "Balancer 80 BAL 20 WETH",
                "type": "WEIGHTED",
                "chain": "MAINNET",
                "symbol": "B-80BAL-20WETH",
                "tokens": [
                    {
                        "symbol": "BAL",
                        "address": "0xba100000625a3754423978a60c9317c58a424e3d
…(truncated, see openapi.json for full schema)
```

### Pool

#### `GET /v1/pool` — One pool's full state by id

**Parameters:**
- `id` (query, required, string) — Balancer pool id Example: `0x820b69fad931d4b4bf14e70ff234a8390f6a0658000200000000000000000547`
- `chain` (query, optional, string) — Chain of the pool Example: `arbitrum`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/balancer-api/v1/pool?id=0x820b69fad931d4b4bf14e70ff234a8390f6a0658000200000000000000000547&chain=arbitrum"
```

**Response:**
```json
{
    "data": {
        "id": "0x820b69fad931d4b4bf14e70ff234a8390f6a0658000200000000000000000547",
        "name": "Gyroscope ECLP GYD/AUSDC",
        "type": "GYROE",
        "chain": "ARBITRUM",
        "source": "Balancer",
        "symbol": "ECLP-GYD-AUSDC",
        "tokens": [
            {
                "symbol": "waUSDCn",
                "address": "0x7cfadfd5645b50be87d546f42699d863648251ad",
                "balance": 0.003997
            },
            {
                "symbol": "GYD",
                "address": "0xca5d8f8a8d49439357d3cf46ca2e720702f132b8",
                "balance": 3078451.3239380135
            }
        ],
        "tvl_usd": 3055249.04,
        "swaps_count": 6620,
        "fees_24h_usd": 0,
        "apr_breakdown": [],
        "holders_count": 6,
        "total_apr_pct": 0,
        "volume_24h_usd": 0,
        "protocol_version": 2
    },
    "meta": {
        "timestamp": "2026-06-10T22:57:31.059Z",
        "request_id": "6b6dec2b-7d32-4c78-a86a-73022d277786"
    },
    "status": "ok",
    "message": "Pool retrieved successfully",
    "success": true
}
```

### Token

#### `GET /v1/token` — A token's live Balancer price + metadata

**Parameters:**
- `address` (query, required, string) — Token contract address Example: `0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2`
- `chain` (query, optional, string) — Chain Example: `mainnet`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/balancer-api/v1/token?address=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&chain=mainnet"
```

**Response:**
```json
{
    "data": {
        "name": "Wrapped Ether",
        "chain": "MAINNET",
        "source": "Balancer",
        "symbol": "WETH",
        "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
        "decimals": 18,
        "price_usd": 1615.46
    },
    "meta": {
        "timestamp": "2026-06-10T22:57:32.332Z",
        "request_id": "cbc447b2-2319-49cf-b0ee-fb57403fe4b1"
    },
    "status": "ok",
    "message": "Token retrieved successfully",
    "success": true
}
```

### Tokens

#### `GET /v1/tokens` — Search the token registry by symbol or name

**Parameters:**
- `q` (query, required, string) — Search query (min 2 chars) Example: `usdc`
- `chain` (query, optional, string) — Chain Example: `mainnet`
- `limit` (query, optional, string) — Max results (1-100) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/balancer-api/v1/tokens?q=usdc&chain=mainnet&limit=25"
```

**Response:**
```json
{
    "data": {
        "chain": "MAINNET",
        "count": 25,
        "query": "usdc",
        "source": "Balancer",
        "tokens": [
            {
                "name": "Holistic BTC Set",
                "symbol": "TCapBTCUSDC",
                "address": "0x7510d6fac98a6eca2db7c9357619715a7f5049d4",
                "decimals": 18,
                "price_usd": 318.62
            },
            {
                "name": "aarna atv USDC",
                "symbol": "atvUSDC",
                "address": "0xf30f62963cce132f32306d7f18a8587958b30ea9",
                "decimals": 18,
                "price_usd": 104.6072380169
            },
            {
                "name": "aarna atv USDC",
                "symbol": "atvUSDC",
                "address": "0xd018a9ba579d3882748c1f1e4dad7203926dc43b",
                "decimals": 18,
                "price_usd": 104.59
            },
            {
                "name": "Balancer Aave Boosted Pool (USDC)",
                "symbol": "bb-a-USDC (old)",
                "address": "0x9210f1204b5a24742eba12f710636d76240df3d0",
                "decimals": 18,
                "price_usd": 1.400924827458751
            },
            {
                "name": "IdleUSDC Junior4626Adapter",
                "symbol": "idleUSDCJunior4626",
                "address": "0xc3da79e0de523eef7ac1e4ca9abfe3aac9973133",
                "decimals": 18,
                "price_usd": 1.2527581079
            },
            {
                "nam
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/balancer-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "chains": [
            "mainnet",
            "arbitrum",
            "base",
            "polygon",
            "avalanche",
            "gnosis",
            "optimism",
            "zkevm",
            "fraxtal",
            "mode",
            "sonic",
            "hyperevm"
        ],
        "source": "Balancer API v3 (api-v3.balancer.fi/graphql, live)",
        "service": "balancer-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/pool": "One pool's full state by id (id=0x…, chain=mainnet).",
            "GET /v1/pools": "Top pools by TVL on a chain (chain=mainnet, type=weighted, limit=25).",
            "GET /v1/token": "A token's live Balancer price plus symbol/name/decimals (address=0x…, chain=mainnet).",
            "GET /v1/tokens": "Search the token registry by symbol or name (q=usdc, chain=mainnet, limit=25)."
        },
        "description": "Live data from Balancer, a leading multi-chain decentralised AMM whose programmable liquidity pools (weighted, stable, gyro, boosted) power swaps and yield across Ethereum, Arbitrum, Base, Polygon, Avalanche, Gnosis, Optimism and more. The pools endpoint returns the top pools by TVL on a chain — type, total liquidity, 24h volume and fees, total APR (yield/swap/staking breakdown) and constituent tokens; the pool endpoint returns one pool's full state by id; the token endpoint returns a token's live Balancer price plus symbol, name and decimals; th
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/balancer-api
OpenAPI spec: https://www.oanor.com/api/balancer-api/openapi.json
