Cambrian Token Holders by Program ID API

By Cambrian Network solana

GET /api/v1/solana/tokens/holders

Token Holders by Program ID

Overview

Returns a list of accounts currently holding a specific Solana token (identified by its program ID/mint address), sorted by their current balance in descending order. This endpoint uses pre-aggregated data for fast, efficient holder lookups.

Business Value

  • Portfolio Analysis: Track token distribution across holders to understand concentration and diversification patterns
  • Community Insights: Identify large holders and community distribution for token governance and ecosystem health
  • Risk Assessment: Monitor holder concentration to assess potential liquidity and market manipulation risks
  • Market Research: Analyze token adoption patterns and holder behavior for investment and partnership decisions
  • Compliance Monitoring: Track token distribution for regulatory reporting and AML compliance requirements

Endpoint Details

URL:

https://api.cambrian.org/solana/tokens/holders

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

Query Parameters

Parameter Type Required Default Description
program_id string Yes - The program ID (mint address) of the token.
limit integer No 100 Limit the number of results.
offset integer No 0 Offset the results, allows you to skip a number of rows before starting to return rows.

Response Field Descriptions

Response Field Type Description
account FixedString(44) The Solana account address holding the token.
balanceRaw UInt64 The raw token balance, in the token's smallest unit (before applying decimals).
balanceUi Float64 The human-readable token balance, adjusted for token decimals.
balanceUSD Float64 The current USD value of the held balance.

Examples

1. Top Holders of the ORCA Token

This example retrieves the top 10 holders of the ORCA token by current balance, useful for quickly assessing holder concentration.

curl -X GET "https://api.cambrian.org/solana/tokens/holders?program_id=orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE&limit=10" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response:

[
  {
    "columns": [
      {
        "name": "account",
        "type": "FixedString(44)"
      },
      {
        "name": "balanceRaw",
        "type": "UInt64"
      },
      {
        "name": "balanceUi",
        "type": "Float64"
      },
      {
        "name": "balanceUSD",
        "type": "Float64"
      }
    ],
    "data": [
      [
        "5ooCx5vKiV2ZxAEKNNHAJjAJ7BARfLUZPGvgiApZjgFD",
        14200768337139,
        14200768.337139,
        15015018.540679738
      ],
      [
        "Ce5j11WAsSzM3nkzrw4Kw6v6ic3nbyqpv5eywjYKeKc5",
        9279147186819,
        9279147.186819,
        9811199.207257356
      ],
      [
        "3YzoJK4pS8Urmd6PZtj16BMBVtc8eepk3MLs6LYtrArV",
        8350646724836,
        8350646.724836,
        8829459.95761101
      ],
      [
        "BwzWKw33iBQin9E8HwFgevCeMByioZCvoZFk7uN433ft",
        6027328553947,
        6027328.553947,
        6372926.298050964
      ],
      [
        "3qPbC7P9baPCXxz2Duqk2Qmbj21ap8pRRbRY8sfobKje",
        4078280040240,
        4078280.04024,
        4312122.341869334
      ],
      [
        "2NUxDnrNAUuPAmzHoCS2pFsRt9u5gFhdJTAHyfhj9mwp",
        3293703343107,
        3293703.343107,
        3482559.224271808
      ],
      [
        "6wfrMMr9BAuEXHK7u93vxTDnzWJfHSURXJeN5HYFhkKi",
        3000000010001,
        3000000.010001,
        3172015.3940120926
      ],
      [
        "AxNLCnLxauG6gEoi5aq6efZXSdwbWmtW39YWW3ARtvoh",
        2062018344538,
        2062018.344538,
        2180251.303268391
      ],
      [
        "5WkQBvLSvHPR2MVd3P8oPvMg7rFpvr34MgBFU6J14dkd",
        1823728142681,
        1823728.142681,
        1928297.907930769
      ],
      [
        "5oL1EyZEMJT1PjACWgTu1P3zhg62iEqmySVb6JWtf9iL",
        1777694420093,
        1777694.420093,
        1879624.6825287566
      ]
    ],
    "rows": 10
  }
]

Note: Result collections are limited to 10 items in this example. The response shows the top 10 ORCA holders. The top account alone holds over 14.2M tokens (~$15M USD), and the top few wallets hold a substantial share of supply.

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/solana/tokens/holders"
);
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/solana/tokens/holders")
        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 to 5 automatically.

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