getLargestAccounts — Solana RPC Method
getLargestAccounts returns the 20 largest accounts on the network by lamport balance. You can filter results to show only circulating or non-circulating accounts.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
commitment | string | No | processed, confirmed, or finalized. Default: finalized. |
filter | string | No | circulating or nonCirculating. If omitted, returns all accounts regardless of status. |
Request
curl -X POST https://api.mainnet-beta.solana.com \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getLargestAccounts",
"params": []
}'
TypeScript (@solana/kit)
import { createSolanaRpc } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const largest = await rpc.getLargestAccounts().send();
for (const account of largest.value) {
const sol = Number(account.lamports) / 1_000_000_000;
console.log(`${account.address}: ${sol.toLocaleString()} SOL`);
}
Response
{
"jsonrpc": "2.0",
"result": {
"context": { "slot": 341200000, "apiVersion": "2.2.4" },
"value": [
{
"address": "mvines9iiHiQTysrwkJjGf2gb9Ex9jXJX8ns3qwf2kN",
"lamports": 500000000000000000
},
{
"address": "4Rf9mGD7FeYknun5JczX5nGLTfQuS1GRjNVfkEMKE92b",
"lamports": 250000000000000000
}
]
},
"id": 1
}
| Field | Type | Description |
|---|---|---|
address | string | Base-58 encoded public key of the account. |
lamports | u64 | Account balance in lamports. |
The array always contains up to 20 entries, sorted by balance descending.
Common errors
- Invalid filter — the filter value must be exactly
circulatingornonCirculating. Any other value returns an error.
Performance
getLargestAccounts scans the entire account index, which can be slow on large clusters. Some RPC providers cache the result. This method may have higher latency (1-5 seconds) compared to simpler queries. Avoid polling frequently — the top accounts change slowly.
FAQ
What is the difference between circulating and non-circulating? Circulating accounts are regular accounts whose SOL is freely transferable. Non-circulating accounts are locked or reserved, such as foundation accounts, grant accounts, or accounts with lockup restrictions.
Why are there only 20 results?
The method is designed to return the top 20 by balance. There is no pagination. For broader analysis of account balances, use getProgramAccounts with filters or an indexer.
Does this include token accounts? No. This returns accounts by their SOL (lamport) balance, not SPL token balances. Token accounts appear only if they hold significant SOL for rent exemption.
How often should I call this method? The largest accounts change infrequently. Calling once per hour or less is sufficient for most use cases. The method can be slow and some providers rate-limit it.
Parameters
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
commitment | string | No | Commitment level: processed, confirmed, or finalized. | finalized |
filter | string | No | Filter by circulating or nonCirculating status. | — |
Updated: