Token - First Buyers
curl --request GET \
--url https://public-api.birdeye.so/token/v1/first-buyers \
--header 'X-API-KEY: <api-key>'import requests
url = "https://public-api.birdeye.so/token/v1/first-buyers"
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/token/v1/first-buyers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"data": {
"token_address": "39i5b9Q3UWpsxaEVqmtyXLzYBFijBN9f6GsRGyY8pump",
"flow": "buy",
"page_summary": {
"total_wallets": 2,
"buy_more": 1,
"hold": 0,
"sell_partial": 0,
"sell_all": 1
},
"buyers": [
{
"wallet_address": "DuojVrALrNwwck6bqrLXPuiBnYVnc1ekfcjyeWDeTAdi",
"block_number": 422919059,
"block_unix_time": 1780050060,
"first_buy_volume": 10625406.111661,
"first_buy_volume_usd": 24.659147767012907,
"total_buy_volume": 10625406.111661,
"total_buy_volume_usd": 24.659147767012907,
"initial_holding": 10625406.111661,
"current_holding": 0,
"position_status": "sell_all",
"tags": [
"bundler",
"sniper"
]
},
{
"wallet_address": "Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA",
"block_number": 422919061,
"block_unix_time": 1780050061,
"first_buy_volume": 32804387.246183004,
"first_buy_volume_usd": 57.38558677840249,
"total_buy_volume": 41000000.5,
"total_buy_volume_usd": 72.15,
"initial_holding": 32804387.246183004,
"current_holding": 41000000.5,
"position_status": "buy_more",
"tags": [
"smart_trader"
]
}
]
}
}{
"success": false,
"message": "Bad request"
}{
"success": false,
"message": "Unauthorized"
}{
"success": false,
"message": "Access Denied"
}{
"success": false,
"message": "Too many requests"
}{
"success": false,
"message": "Internal Server Error"
}Holder
Token - First Buyers
Identify the earliest buyers of a token and see whether they are still holding, added more, or have sold — useful for spotting early conviction, smart money, and potential insiders. Returns up to the top 1000 first buyers, paginated via offset and limit (offset + limit <= 1000).
GET
/
token
/
v1
/
first-buyers
Token - First Buyers
curl --request GET \
--url https://public-api.birdeye.so/token/v1/first-buyers \
--header 'X-API-KEY: <api-key>'import requests
url = "https://public-api.birdeye.so/token/v1/first-buyers"
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/token/v1/first-buyers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"data": {
"token_address": "39i5b9Q3UWpsxaEVqmtyXLzYBFijBN9f6GsRGyY8pump",
"flow": "buy",
"page_summary": {
"total_wallets": 2,
"buy_more": 1,
"hold": 0,
"sell_partial": 0,
"sell_all": 1
},
"buyers": [
{
"wallet_address": "DuojVrALrNwwck6bqrLXPuiBnYVnc1ekfcjyeWDeTAdi",
"block_number": 422919059,
"block_unix_time": 1780050060,
"first_buy_volume": 10625406.111661,
"first_buy_volume_usd": 24.659147767012907,
"total_buy_volume": 10625406.111661,
"total_buy_volume_usd": 24.659147767012907,
"initial_holding": 10625406.111661,
"current_holding": 0,
"position_status": "sell_all",
"tags": [
"bundler",
"sniper"
]
},
{
"wallet_address": "Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA",
"block_number": 422919061,
"block_unix_time": 1780050061,
"first_buy_volume": 32804387.246183004,
"first_buy_volume_usd": 57.38558677840249,
"total_buy_volume": 41000000.5,
"total_buy_volume_usd": 72.15,
"initial_holding": 32804387.246183004,
"current_holding": 41000000.5,
"position_status": "buy_more",
"tags": [
"smart_trader"
]
}
]
}
}{
"success": false,
"message": "Bad request"
}{
"success": false,
"message": "Unauthorized"
}{
"success": false,
"message": "Access Denied"
}{
"success": false,
"message": "Too many requests"
}{
"success": false,
"message": "Internal Server Error"
}- Usage Note
- Accessibility
- Chain Supported
Earliest buyer timeline for a token.
- Buyers are ordered from earliest to latest.
position_statuscompares the wallet’s current holding to the amount it held right after its first buy.buy_moremeans the wallet increased from its initial holding;holdmeans it kept the initial holding;sell_partialmeans it sold a meaningful portion;sell_allmeans it has almost fully exited.page_summaryaggregates position statuses for the buyers returned in the current page.- Wallet tags may include labels such as
bundler,smart_trader,sniper,dev,insider, andkol.
- Lite
- Starter
- Premium
- Business
- Enterprise
Solana
Compute Unit ⚙️
Compute Unit ⚙️
- This endpoint consumes
25 CUper request.
Wallet Tag Definitions 🏷️
Wallet Tag Definitions 🏷️
- dev — The wallet that created the token: the mint creator from the initialize-mint transaction.
- sniper — A wallet that bought within the first
nblocks of the token, counted from the token’s first swap. On Solana,n = 5; a buy qualifies when its slot is withinfirst_trade_slot + 5.
- bundler — Coordinated buying detected in either level:
- Level 1: at least 4 buy transactions in the same slot.
- Level 2: at least 3 distinct wallets buying across adjacent slots, where max slot gap is 1.
- insider — A wallet that received the token directly from the Chef wallet via token transfer, not via a swap.
- smart_trader — A non-bot wallet ranked in Top Realized PnL over the last 90 days with realized PnL > $10,000. Wallets identified as bots are excluded before ranking and never receive this tag.
- kol — A tracked key-opinion-leader wallet label for this token when Birdeye classification identifies the wallet as a KOL cohort member.
Use Cases 💡
Use Cases 💡
- Reconstruct the first wave of conviction behind a token by seeing who entered earliest, how much they bought, and what they did afterward.
- Identify whether early buyers are still aligned with the token or already exited into later liquidity.
- Surface suspicious launches where first buyers are heavily tagged as insiders, bundlers, snipers, KOLs, or other high-risk cohorts.
- Build early-holder leaderboards that distinguish real conviction from fast extraction using current holding and position status.
- Feed post-launch investigations, alpha research, and risk engines with the wallets that shaped the token’s first market structure.
How to Use 🛠️
How to Use 🛠️
- Provide a Solana
token_address. - Use
offsetandlimitto page through the earliest buyers. - Start with the default
limit=70, then page forward if you need more of the first-buyer cohort. - Read
first_buy_volume,first_buy_volume_usd,initial_holding, andcurrent_holdingtogether to understand each wallet’s behavior. - Use
position_statusandtagsto prioritize wallets worth deeper investigation.
Best Practices ✅
Best Practices ✅
- Treat early buyers as a high-signal cohort, especially around new launches where first entries often shape the token’s market structure.
- Combine
position_statuswith wallet tags to distinguish conviction from coordinated extraction. - Use first-buyers before wallet-tags-tracker when you need to know which wallets seeded the earliest market activity.
- Pair this endpoint with holder-positions to inspect current exposure and PnL for the wallets that entered first.
Limitations ⚠️
Limitations ⚠️
- Solana only.
- Pagination is limited to the first 1,000 buyers;
offset + limitmust not exceed 1,000. limitdefaults to 70 and supports up to 100 records per request.position_statusis relative to the wallet’s initial holding after its first buy, not to all-time maximum exposure.
Authorizations
API key for authentication
Headers
Solana network only.
Available options:
solana Query Parameters
Token mint address
Example:
"So11111111111111111111111111111111111111112"
Pagination start position. Make sure offset + limit <= 1000.
Required range:
0 <= x <= 1000Number of items per page. Make sure offset + limit <= 1000.
Required range:
1 <= x <= 100Was this page helpful?

