curl --request GET \
--url https://public-api.birdeye.so/holder/v1/distribution \
--header 'X-API-KEY: <api-key>'import requests
url = "https://public-api.birdeye.so/holder/v1/distribution"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://public-api.birdeye.so/holder/v1/distribution', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"data": {
"token_address": "11111Zxp8hv4GVzZTWcgcFTcFCfPzW8YmbwvGahTBP",
"mode": "percent",
"summary": {
"wallet_count": 2,
"total_holding": "0.007374018405092705",
"percent_of_supply": 0.0000017374018405092703
},
"holders": [
{
"wallet": "aXG7W1eYYHN3SyAp515Dqu595wzNJxdGtcG5sjLVky1",
"holding": "0.000017910381239401126",
"percent_of_supply": 0.0000017910381239401128
},
{
"wallet": "aXG7W1wjjgiNnu8emgqJsTqbN86B8KEeKhN4J4JChqd",
"holding": "0.0000007910381239401126",
"percent_of_supply": 0.0000017910381239401128
}
]
}
}Token - Holder Distribution
Retrieve distribution statistics for token holders based on their share of the total supply. Set include_list=true to return the wallet list for the specified range.
curl --request GET \
--url https://public-api.birdeye.so/holder/v1/distribution \
--header 'X-API-KEY: <api-key>'import requests
url = "https://public-api.birdeye.so/holder/v1/distribution"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://public-api.birdeye.so/holder/v1/distribution', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"data": {
"token_address": "11111Zxp8hv4GVzZTWcgcFTcFCfPzW8YmbwvGahTBP",
"mode": "percent",
"summary": {
"wallet_count": 2,
"total_holding": "0.007374018405092705",
"percent_of_supply": 0.0000017374018405092703
},
"holders": [
{
"wallet": "aXG7W1eYYHN3SyAp515Dqu595wzNJxdGtcG5sjLVky1",
"holding": "0.000017910381239401126",
"percent_of_supply": 0.0000017910381239401128
},
{
"wallet": "aXG7W1wjjgiNnu8emgqJsTqbN86B8KEeKhN4J4JChqd",
"holding": "0.0000007910381239401126",
"percent_of_supply": 0.0000017910381239401128
}
]
}
}- Usage Note
- Accessibility
- Chain Supported
Two distribution modes. Pick one mode and only use filters for that mode.
mode=top— returns the top holders by supply share. Usetop_nto control how many top holders to inspect.mode=percent— returns holders inside a supply-share range. Usemin_percentandmax_percentto define the range.address_type=walletreturns holder wallets.address_type=token_accountreturns token-account level ownership.include_list=truereturns the holder list. Setinclude_list=falsewhen you only need the summary.
Reading the numbers. summary.wallet_count is the number of holders in the selected range. summary.total_holding is the total token amount held by that segment, and summary.percent_of_supply is that segment’s share of total supply.
- Lite
- Starter
- Premium
- Business
- Enterprise
Solana
Compute Unit ⚙️
Compute Unit ⚙️
- This endpoint consumes
30 CUper request.
Use Cases 💡
Use Cases 💡
- Map the ownership shape of a token before trusting the market: see whether supply is spread across many wallets or concentrated in a few dominant hands.
- Build concentration-risk dashboards that flag tokens where the top holders control a dangerous share of supply.
- Segment holders by supply percentage to identify whales, mid-size holders, and long-tail retail distribution.
- Compare wallet-level and token-account-level views to understand whether apparent distribution is real or fragmented across accounts.
- Feed token safety scores, listing reviews, and pre-trade checks with holder concentration signals.
How to Use 🛠️
How to Use 🛠️
- Provide a Solana
token_address. - Use
mode=top&top_n=10for the largest holders, ormode=percent&min_percent=1&max_percent=5for a supply-share bucket. - Set
address_type=walletfor owner-level analysis, oraddress_type=token_accountfor token-account level inspection. - Set
include_list=falsefor a lightweight summary, or keep ittruewhen you need the actual holder rows. - Use
offsetandlimitto page through the holder list wheninclude_list=true.
Best Practices ✅
Best Practices ✅
- Start with
mode=topto identify concentration risk, then usemode=percentto inspect the middle and long-tail ownership bands. - Do not mix top-holder filters with percent-range filters; each mode has its own filter set.
- Use wallet-level distribution for product and risk summaries, and token-account level distribution when investigating account fragmentation.
- Pair distribution with holder-profile, first-buyers, and token overview data to understand who owns supply and whether ownership looks healthy.
Limitations ⚠️
Limitations ⚠️
- Solana only.
mode=topcannot be combined withmin_percentormax_percent.mode=percentcannot be combined withtop_n.top_nsupports up to 10,000 holders.- Pagination supports offset up to 10,000 and limit up to 50.
Authorizations
API key for authentication
Headers
Solana network only.
solana Query Parameters
Token contract address.
Return holder distribution by wallet or token account address.
wallet, token_account Holder filter mode (percent = by supply % range, top = top holders by supply %).
percent, top Number of top holders to return (used only when mode = top).
1 <= x <= 10000Minimum % of total supply a holder must have (used only when mode = percent).
0 <= x <= 100Maximum % of total supply a holder can have (used only when mode = percent).
0 <= x <= 100Return holder list (true / false).
Pagination start position. offset + limit <= 10000
0 <= x <= 10000Number of items per page.
1 <= x <= 50Was this page helpful?

