Cambrian Top token holders API

By Cambrian Network base

GET /api/v1/evm/tvl/top-owners

Top Token Holders

Overview

Returns the top token holders (owners) for a given ERC-20 token address on a supported EVM chain, ranked by their current token balance. This is useful for identifying whale wallets, assessing token distribution, and monitoring concentration risk for a specific token.

Business Value

  • Portfolio Analysis: Identify whale wallets and major token holders for investment research and risk assessment
  • Token Distribution: Analyze token concentration and decentralization metrics for due diligence
  • Market Intelligence: Track large holder movements to anticipate potential market impacts
  • Risk Management: Monitor concentration risk by identifying addresses holding significant portions of token supply
  • Competitive Analysis: Research major stakeholders and institutional holders across different tokens

Endpoint Details

URL:

https://api.cambrian.org/evm/tvl/top-owners

Method: GET
Authentication: Required via X-API-Key header

Query Parameters

Parameter Type Required Default Description
chain_id integer No 8453 EVM chain ID.
token_address string Yes - Token address (pattern: ^0x[a-fA-F0-9]{40}$).
limit integer No 20 Limit the number of results (min 1, max 1000).
offset integer No 0 Offset the results, allows you to skip a number of rows before starting to return rows (min 0, max 100000).

Response Field Descriptions

Response Field Type Description
chainId UInt16 EVM chain ID the token resides on.
ownerAddress FixedString(42) Wallet address holding the token.
tokenAddress FixedString(42) Contract address of the token.
tokenSymbol String Symbol of the token.
tokenAmount Float64 Raw token amount held by the owner.
valueUsd Float64 USD value of the held token amount.

Examples

1. Get Top Token Holders

Retrieves the top 20 holders (default limit) of the ODOS token on Base (chain ID 8453).

curl -X GET "https://api.cambrian.org/evm/tvl/top-owners?chain_id=8453&token_address=0xca73ed1815e5915489570014e024b7ebe65de679&limit=20" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response:

[
  {
    "columns": [
      {
        "name": "chainId",
        "type": "UInt16"
      },
      {
        "name": "ownerAddress",
        "type": "FixedString(42)"
      },
      {
        "name": "tokenAddress",
        "type": "FixedString(42)"
      },
      {
        "name": "tokenSymbol",
        "type": "String"
      },
      {
        "name": "tokenAmount",
        "type": "Float64"
      },
      {
        "name": "valueUsd",
        "type": "Float64"
      }
    ],
    "data": [
      [
        8453,
        "0xae82febe00a21257ee813cfe2f913dcaa973d33b",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        3587949734.7407737,
        3106119.09692773
      ],
      [
        8453,
        "0x9d1e93bbc148fe7b19eb9ec22a5be4b75b57239f",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        2666692701.38885,
        2308578.920495983
      ],
      [
        8453,
        "0x32235fe0b39849ddff11bce74d93bf981c9fe5ea",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        723197383.5800779,
        626078.2257443037
      ],
      [
        8453,
        "0xe12be6d836bba65f1f91b61fb49fb109fba57e72",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        638144699.6775,
        552447.3821578503
      ],
      [
        8453,
        "0x7ec74ce1ff4c7c2b0bc2bc2f64ac8481db616b34",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        458315000,
        396767.25683317997
      ],
      [
        8453,
        "0xc80afd311c9626528de66d86814770361fe92416",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        378073521.4869109,
        327301.5153368796
      ],
      [
        8453,
        "0xc3681709ee476308b45812eabe0eb22f3b816880",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        366912550.6162723,
        317639.3663870562
      ],
      [
        8453,
        "0x2ef73b65a9033c2e9707b0372f382a14d0d71252",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        253350055.77781546,
        219327.33305586112
      ],
      [
        8453,
        "0x4c8f8055d88705f52c9994969dde61ab574895a3",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        229230686.5125222,
        198446.9866130501
      ],
      [
        8453,
        "0x56939b55d3a69ca79a556110a1a2e98cdc4c9fd6",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        92599680,
        80164.34333859962
      ]
    ],
    "rows": 20
  }
]

Note: This example response is truncated to the first 10 rows for documentation purposes; the actual rows field reflects the true row count (20) returned by the API for this request. The largest ODOS holder on Base holds over 3.58 billion tokens, worth approximately $3.1M USD at the time of the request.

2. Paginate Through Holders with Offset

Retrieves a smaller page of holders (limit=5) starting after the first 10 results (offset=10), useful for paginating through large holder lists.

curl -X GET "https://api.cambrian.org/evm/tvl/top-owners?chain_id=8453&token_address=0xca73ed1815e5915489570014e024b7ebe65de679&limit=5&offset=10" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response:

[
  {
    "columns": [
      {
        "name": "chainId",
        "type": "UInt16"
      },
      {
        "name": "ownerAddress",
        "type": "FixedString(42)"
      },
      {
        "name": "tokenAddress",
        "type": "FixedString(42)"
      },
      {
        "name": "tokenSymbol",
        "type": "String"
      },
      {
        "name": "tokenAmount",
        "type": "Float64"
      },
      {
        "name": "valueUsd",
        "type": "Float64"
      }
    ],
    "data": [
      [
        8453,
        "0x85af237da23d6cf6f2a2cd9d936f0ae09bd1adcf",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        79200000,
        68564.12454575533
      ],
      [
        8453,
        "0xb4dc0ae16db607778e7fb4951ec0889852403f2c",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        60851602.706388004,
        52679.758418808204
      ],
      [
        8453,
        "0xbd146d2ee341b74d2825f8ab07e068e9449deb81",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        56374304,
        48803.722230255975
      ],
      [
        8453,
        "0xb7068556049df8fb3ae77ccbb9611fe0e85b2641",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        20157129.02579334,
        17450.200820825183
      ],
      [
        8453,
        "0x4c3159f83eb4e6ff6b93efae4229c0b8a4095e65",
        "0xca73ed1815e5915489570014e024b7ebe65de679",
        "ODOS",
        18750000,
        16232.037061021623
      ]
    ],
    "rows": 5
  }
]

This demonstrates ranks 11-15 of ODOS token holders on Base, showing how offset and limit can be combined to page through the full holder list.

x402 Payment Option

This endpoint supports pay-per-use access via the x402 payment protocol (v2) — pay $0.05 USDC per request using blockchain micropayments. No API key required.

Quick Start (TypeScript)

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

const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(signer));

const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const response = await fetchWithPayment(
  "https://x402.cambrian.org/evm/tvl/top-owners"
);
const data = await response.json();

Quick Start (Python)

pip install "x402[httpx]"
import asyncio, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client

async def main():
    client = x402Client()
    account = Account.from_key(os.getenv("EVM_PRIVATE_KEY"))
    register_exact_evm_client(client, EthAccountSigner(account))

    async with x402HttpxClient(client) as http:
        response = await http.get("https://x402.cambrian.org/evm/tvl/top-owners")
        print(response.json())

asyncio.run(main())

Payment Flow

  1. Send a normal request to the endpoint (no API key needed)
  2. Server returns 402 Payment Required with payment details
  3. The x402 SDK automatically signs a payment authorization with your wallet
  4. The SDK resubmits the request with the signed payment
  5. Server verifies payment and returns the API response

The x402 SDK handles steps 2–5 automatically.

Network: Base (chain ID 8453) | Currency: USDC | Price: $0.05 per request


Related Endpoints

  • /evm/tvl/status - Returns the tokens held by an address
  • /evm/tokens - Returns a list of all erc20 tokens for the specified EVM chain, including their contract addresses, symbols, names, and decimal places.
  • /evm/price-current - Returns current price of a token calculated based on uniswap v3 and clones liquidity pools.
  • /evm/price-hour - Returns historical hourly price data for a specified EVM token.