Every holder of an ERC-20 or ERC-721 token, with balances, on Ethereum, Base and 14 more chains. Ask for today's holders or the holders at any past block or date, at 0.02 credits per holder.
| Address | Supply |
|---|---|
| 0x1a9c…35bc | 26.96% |
| 0x0000…dead | 10.01% |
| 0xf977…acec | 5.33% |
| 0x61cb…96eb | 2.30% |
| 0x5069…0f7e | 1.49% |
| 0x611f…b09d | 1.33% |
token_holders_v2 with date=2025-12-31, 0.02 credits per holder returned.One endpoint, token_holders_v2, with the chain and the token's contract address. Each item is one holder: its address, raw balance, the token's total supply and decimals, and the block the list is from.
pagination.total_count is the number of holders, so the first page tells you how many more to request. Pages hold 100 holders, or 1,000 with page-size=1000.
API=https://api.covalenthq.com/v1
AUTH="Authorization: Bearer $GOLDRUSH_API_KEY"
UNI=0x1f9840a85d5af5bf1d1762f925bdaddc4201f984
URL="$API/eth-mainnet/tokens/$UNI/token_holders_v2/"
# The latest UNI holders, 1,000 a page: 20 credits a page
curl "$URL?page-size=1000&page-number=0" -H "$AUTH"
# Step page-number until pagination.has_more is false
curl "$URL?page-size=1000&page-number=1" -H "$AUTH"Pass date or block-height and every holder comes back as of one block, which each item carries. Rerun the same request and you get the same holders, so an airdrop list, a governance snapshot or a concentration chart can be checked by anyone. Past snapshots work on the 6 Foundational chains: Base, BNB Smart Chain (BSC), Ethereum, Gnosis, Optimism, Polygon.
import { GoldRushClient } from "@covalenthq/client-sdk";
const client = new GoldRushClient(process.env.GOLDRUSH_API_KEY!);
const UNI = "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984";
// Every UNI holder as of 31 Dec 2025. The SDK steps
// through the pages for you.
const balances: bigint[] = [];
let supply = 0n;
for await (const page of client.BalanceService
.getTokenHoldersV2ForTokenAddress("eth-mainnet", UNI, {
date: "2025-12-31",
pageSize: 1000,
})) {
for (const h of page.data?.items ?? []) {
balances.push(BigInt(h.balance ?? 0));
supply = BigInt(h.total_supply ?? 0);
}
}
// Share of supply held by the 10 largest holders
balances.sort((a, b) => (b > a ? 1 : b < a ? -1 : 0));
const top10 = balances.slice(0, 10).reduce((s, b) => s + b, 0n);
console.log(Number((top10 * 10_000n) / supply) / 100, "%");API=https://api.covalenthq.com/v1
UNI=0x1f9840a85d5af5bf1d1762f925bdaddc4201f984
URL="$API/eth-mainnet/tokens/$UNI/token_holders_v2/"
AUTH="Authorization: Bearer $GOLDRUSH_API_KEY"
# UNI holder count at each quarter end: up to 2 credits a date
for d in 2025-03-31 2025-06-30 2025-09-30 2025-12-31; do
curl -s "$URL?date=$d" -H "$AUTH" \
| jq -r --arg d "$d" '"\($d) \(.data.pagination.total_count)"'
donepagination.total_count at a past date is the number of holders on that day. Read it at month or quarter ends to chart holder growth, at up to 2 credits a point, on any Foundational chain.
The same call with page-size=1000 and every page gives the full list at that date, for distribution and top-holder share over time.
Every eligible holder and balance at the block you announced, so the list can be checked by anyone who reruns the call.
Holders at a past blockThe share of supply held by the top 10, 100 or 1,000 addresses, and how it moves after a vesting release or a listing.
Compute Gini and HHI from a holder listVoting power per address at a proposal's snapshot block, from the same call on any Foundational chain.
Holder counts, distribution charts and top-holder tables for a token page, or the owners of an ERC-721 collection.
Historical blockchain data APIHolder API roundups score providers on the same few things. Here is how GoldRush does on each, including where it falls short.
| What to check | GoldRush | |
|---|---|---|
| Distribution, not just a count | Balances and total supply for every holder, so shares and concentration can be computed | total_supply on every item and total_count on every page; top-10 share in a few lines |
| Historical snapshots | Holders at a past block or date, not only today | On the 6 Foundational chains with date or block-height; latest only on the other 10 |
| Contract and exchange filtering | Labels for pools, bridges and exchange wallets, which distort concentration | No labels: exclude the burn address and the contracts you know yourself |
| Chain coverage | The chains your token lives on, behind one interface | 16 EVM chains on one endpoint and one key. No Solana. |
| Freshness | How old the latest list is | updated_at and chain_tip_height on every response; no-snapshot=true skips the last snapshot |
| Plan and price | Which plan the data needs, and what a full list costs | Every plan, including the free trial; 0.02 credits per holder returned |
Sources: Token Holders API reference and Token Holders chain support.
All 16, including Ethereum, Base, Arbitrum and Polygon, return the latest holders. The Foundational chains also return holders at a past block or date; elsewhere, those params return a 400.
| Chain | Past block or date |
|---|---|
| Base | Yes |
| BNB Smart Chain (BSC) | Yes |
| Ethereum | Yes |
| Gnosis | Yes |
| Optimism | Yes |
| Polygon | Yes |
| ApeChain | Latest only |
| Arbitrum | Latest only |
| Avalanche C-Chain | Latest only |
| Berachain | Latest only |
| Linea | Latest only |
| Mantle | Latest only |
| Plasma | Latest only |
| Taiko | Latest only |
| Unichain | Latest only |
| World Chain | Latest only |
Etherscan's holder list is the usual starting point. Here is what changes when the same job runs on GoldRush.
| Etherscan tokenholderlist | GoldRush token_holders_v2 | |
|---|---|---|
| Plan required | A PRO endpoint, on the Standard plan and above | Every plan, including the free trial, at 0.02 credits per holder |
| Holders at a past block or date | No: the current list only | Yes, with block-height or date, on 6 Foundational chains |
| Fields per holder | Address and quantity | Address, balance, total supply, decimals, block height and token metadata |
| Holder count | A separate tokenholdercount call | pagination.total_count in every response |
| Token standards | ERC-20 | ERC-20 and ERC-721 |
Sources: Etherscan tokenholderlist, Etherscan tokenholdercount and GoldRush Token Holders API reference.
Every account starts with a 14-day free trial and 25,000 credits: enough for 1,250,000 holders. The same key works on every Foundational API endpoint, and plans start at $10 a month.
| Request | Credits |
|---|---|
| A token's holder count (one page of 100) | 2 |
| 1,000 holders (one page of 1,000) | 20 |
| Holder count at 12 month ends | 24 |
| Every UNI holder at the end of 2025 (386,723) | 7,734.46 |
Every parameter and response field, with examples.
Which chains serve latest and past holders.
Estimate a month of holder lists.
Gini and HHI from a full holder list, compared with Etherscan.
Page through every holder of an ERC-20 or NFT collection.
Install the SDK and make your first call.
Every endpoint and its credit cost.
One wallet's balances at a past block.
token_holders as a tool for AI agents.