Skip to main content
GET
The current holders of one token, ranked by balance, largest first. Pools and lockers rank with the other wallets and carry their flag, liquidity_pool or locker. spot.holders streams the same rows.

Filters

  • flags takes a comma-separated list of wallet classifications, such as bundler,insider. A holder is kept when it carries at least one of them. A holder has no trade route, so fomo keeps wallets flagged fomo.
  • trader takes one wallet address, and keeps only that wallet’s row.
  • period picks the span of the trading figures. lifetime, the default, covers every round trip the wallet made on the token. cycle covers the open round trip: everything since the wallet last held none of the token.
  • limit sets how many rows return. It is 30 by default, and the API clamps it to 1–150 rather than refusing it.

Response

A response carries holders, holderCount and top10. It has no cursor: one read returns the largest holders, up to limit.
  • holders lists the rows. rank is 1-based. Under flags, it ranks within the kept wallets.
  • holderCount is the token’s total holder count. It does not change with limit or flags. It counts trading wallets only, so it can be lower than a list that includes pools.
  • top10 holds avgEntryPrice and avgExitPrice, weighted by balance, across the first 10 rows returned. Each is null when no row has one.
Volumes, token totals, trade counts, entry and exit prices and realizedPnl cover the period. balance, supplyPct, nativeBalance and funding describe the wallet now. With period=cycle, avgEntryPrice is the cost basis of the open position. A row leaves out flags, platforms and identities when they are empty. A row carries no value and no unrealized PnL. Price it from the token’s price, from Token details or spot.tokens:
  • The value is balance times the token’s price.
  • The unrealized PnL is the value minus balance times avgEntryPrice.
An unknown token returns 200 with an empty holders list and a holderCount of 0, not a 404.

Errors

Authorizations

Authorization
string
header
required

Send the API key as Authorization: Bearer <key>.

Path Parameters

chain
enum<string>
required

Chain the resource lives on. Chain slug. One spelling per chain, in paths and bodies alike. Only a chain with spot data is published.

Available options:
solana,
base,
bsc,
robinhood,
arc
address
string
required

Token mint or contract address.

Query Parameters

limit
integer<int32>

Rows to return, clamped to 1-150; 30 when absent.

Required range: 1 <= x <= 150
trader
string

Restrict to one holder wallet.

flags
string

Wallet classifications to keep, comma-separated. Absent or empty keeps every holder.

period
enum<string>

Span the trading figures cover: cycle, the open round trip, or lifetime, every round trip. lifetime when absent. The span a holder row's trading figures cover: lifetime, every round trip, or cycle, the open one. lifetime when absent.

Available options:
cycle,
lifetime

Response

Current holders, largest balance first; an unknown token answers an empty list.

GET /v1/tokens/{chain}/{address}/holders response: current holders, largest balance first.

holderCount
integer<int64>
required

The token's own holder total, whatever the limit and any flags filter. It counts trading wallets only, so it can run below a full listing that includes pool vaults.

Required range: x >= 0
holders
object[]
required

Holders the read returned, largest balance first.

top10
object
required

Balance-weighted entry and exit prices across the first 10 holders; the filtered cohort under flags.