Cambrian Token Holders Distribution API
GET /api/v1/solana/tokens/holder-distribution-over-time
Solana Token Holder Distribution Over Time
Overview
Returns the distribution of a Solana token's holders over a specified block range, sampled at a given block interval and grouped into USD value tiers. Use it to track how holder concentration and value distribution change as the token's on-chain activity unfolds.
Business Value
- Portfolio Analysis: Track how token distribution changes across different holder value tiers over time
- Market Insights: Understand concentration and democratization trends in token ownership
- Risk Assessment: Identify periods of wealth concentration or distribution that may impact market stability
- Investment Research: Analyze holder behavior patterns to inform strategic decisions
- Compliance Monitoring: Track large holder movements for regulatory and risk management purposes
Endpoint Details
URL:
https://api.cambrian.org/solana/tokens/holder-distribution-over-time
Method: GET
Authentication: Required via X-API-Key header
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| token_address | string | Yes | - | Token mint address (program id) |
| interval | integer | Yes | - | Block interval to use |
| start_block | integer | Yes | - | Block to start from |
| end_block | integer | Yes | - | Block to end at |
Response Field Descriptions
| Response Field | Type | Description |
|---|---|---|
| blockNumber | UInt64 | Block number of the sampled snapshot |
| blockTime | DateTime('UTC') | UTC timestamp corresponding to the block |
| minAmountUSD | Nullable(UInt32) | Lower bound (inclusive) of the USD value tier |
| maxAmountUSD | Nullable(UInt32) | Upper bound (exclusive) of the USD value tier; null indicates no upper bound |
| totalHeldUSD | Float64 | Total USD value held by all holders within this tier at this block |
| holderCount | UInt64 | Number of holders within this USD value tier at this block |
Examples
1. Retrieve Holder Distribution Over a Block Range
This example fetches the holder distribution for a token across a 1,000,000 block range, sampled every 500,000 blocks, grouped by USD value tiers.
curl -X GET "https://api.cambrian.org/solana/tokens/holder-distribution-over-time?token_address=HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC&interval=500000&start_block=340000000&end_block=341000000" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json"
Response:
[
{
"columns": [
{
"name": "blockNumber",
"type": "UInt64"
},
{
"name": "blockTime",
"type": "DateTime('UTC')"
},
{
"name": "minAmountUSD",
"type": "Nullable(UInt32)"
},
{
"name": "maxAmountUSD",
"type": "Nullable(UInt32)"
},
{
"name": "totalHeldUSD",
"type": "Float64"
},
{
"name": "holderCount",
"type": "UInt64"
}
],
"data": [
[
340000000,
"2025-05-14T16:53:13+00:00",
0,
100,
64672.01377046308,
6380
],
[
340000000,
"2025-05-14T16:53:13+00:00",
100,
1000,
620681.6522664049,
1689
],
[
340000000,
"2025-05-14T16:53:13+00:00",
1000,
10000,
2751297.04059455,
891
],
[
340000000,
"2025-05-14T16:53:13+00:00",
10000,
100000,
7071390.425242035,
247
],
[
340000000,
"2025-05-14T16:53:13+00:00",
100000,
1000000,
13759394.531400206,
51
],
[
340000000,
"2025-05-14T16:53:13+00:00",
1000000,
null,
36312518.00213441,
4
],
[
340500000,
"2025-05-16T23:53:03+00:00",
0,
100,
3915.4879536763506,
342
],
[
340500000,
"2025-05-16T23:53:03+00:00",
100,
1000,
30717.89440404316,
88
],
[
340500000,
"2025-05-16T23:53:03+00:00",
1000,
10000,
143098.24544360803,
44
],
[
340500000,
"2025-05-16T23:53:03+00:00",
10000,
100000,
221563.2437320579,
10
]
],
"rows": 16
}
]
Note: result collections are limited to 10 items. This response shows two block snapshots (340000000 and 340500000), each broken into USD value tiers with the total USD held and holder count per tier. At block 340000000, the top tier (holders with over $1,000,000) had only 4 holders but collectively held over $36M; a small number of large holders accounted for most of the value.
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/holder-distribution-over-time"
);
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/holder-distribution-over-time")
print(response.json())
asyncio.run(main())
Payment Flow
- Send a normal request to the endpoint (no API key needed)
- Server returns
402 Payment Requiredwith payment details - The x402 SDK automatically signs a payment authorization with your wallet
- The SDK resubmits the request with the signed payment
- Server verifies payment and returns the API response
The x402 SDK handles steps 2 through 5 automatically.
Network: Base (chain ID 8453) | Currency: USDC | Price: $0.05 per request
Related Endpoints
- /solana/tokens - Returns a paginated list of known tokens for the Solana chain.
- /solana/tokens/holders - Returns a list of accounts currently holding a specific Solana token, sorted by their current balance (descending).
- /solana/tokens/holders-over-time - Returns a list of accounts holding a specific token on Solana, providing snapshots at specified block intervals within a given range.
- /solana/tokens/security - Provides comprehensive security analysis for a token on Solana, including ownership concentration and holder distribution.