Problem
A typical page might:- Fetch top tokens for several windows (volume + txn count at 1h, 2h, 4h, 24h).
- Dedupe ~300 unique mints across those lists.
- Call ~7 REST endpoints per mint (deploy, price changes, volume, metadata, holders, supply, stats).
Solution
OnePOST /api/sol/graphql request:
- Multiple aliased
topTokensroots (one per leaderboard). - One
tokens(mints: [...])root with only the nested fields you need.
Limits
| Constraint | Value |
|---|---|
topTokens hours | 1–168 |
topTokens limit | 1–100 |
tokens mints | Max 500 unique addresses (deduped server-side) |
holders per mint | Default 20, max 200 |
Example query
Variables
Buildmints as the deduped union of every mint returned from your topTokens aliases (client-side or in your BFF):
cURL
Field selection
tokens uses GraphQL field selection — omit expensive branches if you do not need them:
| Field | Typical cost | REST equivalent |
|---|---|---|
deploy, priceChanges, tradingVolume, sniperBundleStats | Low (analytics DB) | /tokens/mint, /price-changes, /trades/volume, ?analysis=stats |
metadata | Medium (RPC + off-chain fetch) | /tokens/metadata/{mint} |
holders, supply | Higher (RPC / snapshot tiers) | /tokens/holders, /tokens/supply |
topTraders | Medium | /tokens/toptraders/{mint} |
