GET
/api/v1/coins/top-moversHobbyist tier+ · 30 req/min24h gainers + losers, pre-filtered by minimum volume floor.
Returns the exact pair of arrays the `/coins` home-panel consumes: top-N gainers and top-N losers by 24h % change, filtered to a minimum 24h volume floor (`MIN_MOVER_VOLUME_USD`) so microcap noise doesn't dominate. Gainers descend by change%, losers ascend.
Query parameters
All query parameters are optional unless marked required.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | number | optional | 5 | Rows per side. Max 50. |
Response shape
Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.
data payloadtypescript
// Wrapped in the standard envelope:
// {
// data: /* shape below */,
// meta?: { total?: number; limit?: number; offset?: number; ... }
// }
{
gainers: Array<CoinOverviewRow>;
losers: Array<CoinOverviewRow>;
}Example
Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.
Requestbash
curl -sS "http://localhost:3000/api/v1/coins/top-movers?limit=5"Responsejson
{
"data": {
"gainers": [ { "base": "WIF", "price": 2.41, "priceChange24hPct": 18.4, "volume24hUsd": 380000000, "oiTotalUsd": 120000000, "oiChange24hPct": 4.1, "avgFundingRate": 0.00021, "rank": 27 } ],
"losers": [ { "base": "TIA", "price": 4.02, "priceChange24hPct": -9.8, "volume24hUsd": 210000000, "oiTotalUsd": 98000000, "oiChange24hPct": -2.6, "avgFundingRate": -0.00014, "rank": 42 } ]
},
"meta": { "gainers": 1, "losers": 1, "limit": 5 }
}Next
Check the error code reference, or get an API key to try the request against your own account.