GET
/v1/last/most-active/:venueMost active
Get the most actively traded US stocks and crypto assets today, ranked by volume, highest first, including symbol, current price, day volume, previous day volume, previous close, change, and percent change.
- Auth
X-API-Keyheader- Format
- JSON
- Rate limits
- Per-key, see limits
Example
request · shell
curl -H "X-API-Key: $KEY" \
"https://api.sifting.io/v1/last/most-active/stocks?limit=3"200OKapplication/json
{ "data": [ { "symbol": "AAPL", "price": "190", "day_volume": 30000000, "prev_day_volume": 28000000, "prev_close": "188.2", "change": "1.8", "change_pct": 0.9564 }, { "symbol": "NVDA", "price": "148.32", "day_volume": 18452310, "prev_day_volume": 21980400, "prev_close": "139.1", "change": "9.22", "change_pct": 6.6283 }, { "symbol": "TSLA", "price": "271.4", "day_volume": 9120455, "prev_day_volume": 10234100, "prev_close": "256.85", "change": "14.55", "change_pct": 5.6648 } ], "meta": { "as_of": "2026-10-06T15:42:10Z", "venue": "stocks", "limit": 3, "ranked_by": "volume" }}Loading runner…
First load onlyParameters
ParameterDescription
Parameter
venuerequiredenum · path- stocks | crypto.
limitinteger · query- Rows to return. 1–100, default 20. Any other value returns 400.
Response fields
FieldDescription
Field
data[]array- Ranked rows, most active first.
data[].symbolstring- Symbol.
data[].pricestring- Current price.
data[].day_volumefloat- Volume so far today: the regular session for US stocks, the UTC day for crypto. Always raw volume, in shares or coin units.
data[].prev_day_volumefloat- Full volume of the previous trading day. Omitted when unavailable.
data[].prev_closestring- Previous close, the same value /v1/last/close returns. Omitted for a symbol with no stored close.
data[].changestring- price minus prev_close. Omitted when prev_close is omitted.
data[].change_pctfloat- Percentage change against prev_close, rounded to 4 decimals. Omitted when prev_close is omitted.
meta.as_ofstring- When the response was produced. RFC 3339, UTC.
meta.venuestring- The venue you queried.
meta.limitinteger- Row limit applied to this response.
meta.ranked_bystring- How the list is ranked: volume (stocks) or volume_usd (crypto).
Reference
How the ranking worksDescription
How the ranking works
- US stocks
- Ranked by raw trading volume (share count), regular session only. meta.ranked_by is volume.
- Crypto
- Ranked by estimated dollar volume: day volume × current price, across USD-quoted pairs. Coins trade in very different units, so raw volume would put cheap coins on top. day_volume still shows the raw volume. meta.ranked_by is volume_usd.
- Ties
- Equal volumes are ordered by symbol, so rows never reshuffle between calls.
What today meansDescription
What today means
- Crypto
- The UTC day, from 00:00 UTC. Not a rolling 24 hours, so volume resets at midnight UTC.
- US stocks
- The regular session, 09:30–16:00 ET.
- Between days
- Before the open, on weekends, and on holidays, the list still shows the last session's totals until the next session's first trades.
Freshness & behaviorDescription
Freshness & behavior
- Refresh
- Rankings refresh about once a minute: near real-time, not tick by tick. For tick-level prices use /v1/last/trade or the WebSocket.
- Volume source
- Our own aggregated volume, the same figure that feeds our OHLCV bars.
- What's listed
- Symbols with volume recorded today and a current price. A symbol without a live price at that moment is skipped, so the list can be slightly shorter than limit.
- Empty list
- On a fresh day, or before any volume is recorded, data is an empty array with 200, not an error.
- Change fields
- prev_close, change, and change_pct work as in /v1/last/movers and are omitted together for a symbol with no stored close.
- Access
- Follows the live-data access for the market: live stocks includes stock most active, live crypto includes crypto most active.
Prices are strings, cast before mathDescription
Prices are strings, cast before math
- Why
- price, prev_close, and change come back as JSON strings to preserve exact precision. day_volume, prev_day_volume, and change_pct are plain numbers.
- The trap
- Math on the raw string fields breaks: Python raises TypeError, JavaScript + silently joins the strings instead of adding.
- Python
- top = data["data"][0]; price = float(top["price"])
- JavaScript
- const top = data.data[0]; const price = Number(top.price);
- cURL / jq
- Cast in jq too: jq '.data[] | { symbol, price: (.price|tonumber), day_volume }'
Error responses
StatusCodeMeaning
- 400
invalid_limitlimit is not an integer between 1 and 100.
{ "error": "limit must be an integer between 1 and 100" } - 403
not_entitledYour subscription doesn't include live data for this market, the same gate as /v1/last/trade.
{ "error": "no active subscription for this market", "market_id": "crypto", "feature": "live_crypto"} - 404
unknown_venueVenue path segment isn't a known venue.
{ "error": "unknown venue" } - 404
venue_not_supportedforex, commodities, and dex are valid venues but have no most-active list.
{ "error": "most active not available for this venue" } - 503
market_data_unavailableLive data for this market is temporarily unavailable. Retry shortly.
{ "error": "market data unavailable" }