- Live API Reference
- Trade Flow Data
- Stocks
- Leaderboard
Stocks Flow Leaderboard API
Cross-symbol stock-flow buyers and sellers ranked by net notional over a rolling window.
Endpoint
X-Api-Key)
Rate Limited: Yes
Plan: Alpha+
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
n |
query | integer | 10 | Rows per side; effective max is 50. Non-numeric values return a 400 problem-details body. Out-of-range values are clamped to the supported range. |
|
windowMinutes |
query | integer | 240 | Lookback window, clamped to 1..10080. Non-numeric values return a 400 problem-details body. |
Request
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/flow/stocks/leaderboard?n=10&windowMinutes=240"import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/flow/stocks/leaderboard",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
resp.raise_for_status()
data = resp.json()
print(f"Top buyer: {data['buyers'][0]['symbol']}")const resp = await fetch(
"https://lab.flashalpha.com/v1/flow/stocks/leaderboard",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const data = await resp.json();
console.log("Top buyer: " + data.buyers[0].symbol);Try it live
Runs on live market data and uses 1 request from your daily quota.
Response
{
"generatedUtc": "2026-10-30T13:46:04.2053096Z",
"n": 10,
"windowMinutes": 240,
"buyers": [
{
"symbol": "MU",
"netVolume": 1552387,
"netNotional": 1406789344,
"buyVolume": 1849182,
"sellVolume": 296795,
"vwap": 906.21,
"tradeCount": 81240,
"lastTradeUtc": "2026-10-30T13:46:00Z"
},
{
"symbol": "NVDA",
"netVolume": 2219527,
"netNotional": 462401897,
"buyVolume": 4115407,
"sellVolume": 1895880,
"vwap": 208.33,
"tradeCount": 154117,
"lastTradeUtc": "2026-10-30T13:46:04.1761172Z"
}
],
"sellers": [
{
"symbol": "MNQ=F",
"netVolume": -34758,
"netNotional": -1000512948,
"buyVolume": 227694,
"sellVolume": 262452,
"vwap": 28785.11,
"tradeCount": 281458,
"lastTradeUtc": "2026-10-30T13:46:00Z"
},
{
"symbol": "INTC",
"netVolume": -10303300,
"netNotional": -688514092,
"buyVolume": 8086728,
"sellVolume": 18390028,
"vwap": 66.82,
"tradeCount": 387240,
"lastTradeUtc": "2026-10-30T13:46:00Z"
}
],
"endpoint_version": "2026.09.30",
"data_as_of": {
"node": "fa4",
"equity_feed": "2026-10-30T13:46:03.529Z",
"equity_options_feed": "2026-10-30T13:46:02Z",
"index_feed": "2026-10-30T13:46:03.107Z",
"index_options_feed": "2026-10-30T13:46:03Z",
"futures_feed": "2026-10-30T13:45:53.139Z",
"futures_options_feed": "2026-10-30T13:45:49.971Z",
"flow_feed": "2026-10-30T13:45:00Z",
"oi_feed": "2026-10-29T20:00:00Z",
"macro_feed": "2026-10-29T21:00:20Z"
}
}Sending request…
See this endpoint on live data
Send this exact request and the real response shows up here, right next to the example.
Response Fields
| Field | Type | Description |
|---|---|---|
generatedUtc | string | Generation timestamp |
n | integer | Effective rows per side |
windowMinutes | integer | Effective lookback window |
buyers[] | array | Positive net-notional rows: symbol, netVolume, netNotional, buyVolume, sellVolume, vwap, tradeCount, lastTradeUtc |
sellers[] | array | Negative net-notional rows (same schema as buyers[]) |
buyers[].symbol | string | Underlying symbol |
buyers[].netVolume | number | Buy volume minus sell volume |
buyers[].netNotional | number | Buyers: net notional |
buyers[].buyVolume | number | Volume classified as buyer-initiated |
buyers[].sellVolume | number | Volume classified as seller-initiated |
buyers[].vwap | number | Volume-weighted average price |
buyers[].tradeCount | number | Number of trades |
buyers[].lastTradeUtc | string | Buyers: last trade (UTC) |
sellers[].symbol | string | Underlying symbol |
sellers[].netVolume | number | Buy volume minus sell volume |
sellers[].netNotional | number | Sellers: net notional |
sellers[].buyVolume | number | Volume classified as buyer-initiated |
sellers[].sellVolume | number | Volume classified as seller-initiated |
sellers[].vwap | number | Volume-weighted average price |
sellers[].tradeCount | number | Number of trades |
sellers[].lastTradeUtc | string | Sellers: last trade (UTC) |
endpoint_version, data_as_of | string, object | Response envelope, see Response envelope. |
Errors
| Status | Error | When |
|---|---|---|
400 | - | A query value has the wrong type, or a required value is missing. The body is an RFC 7807 problem-details object with errors.<param>. |
401 | - | Missing or invalid X-Api-Key. The body is empty; check the status code before parsing JSON. |
403 | tier_restricted | Your plan is below Alpha. The body includes current_plan and required_plan. |
429 | Quota exceeded | Daily quota used up. Retry-After gives the seconds until the reset at 00:00 UTC. Rejected requests (including 403) count toward the quota. |
502 | - | Upstream flow data source unavailable. |
About
Ranks the equity universe by net notional over the window and returns top buyers and sellers in one payload. Refreshes about every 30 seconds. The schema mirrors the options leaderboard with vwap replacing avgPremium.
Common Use Cases
- Run a universe-wide flow scanner - render
buyers[]andsellers[]ranked bynetNotionalover a rollingwindowMinuteslookback to surface where money is rotating - Size the imbalance - read each row's
buyVolumevssellVolumebehind the signednetVolumeto judge whether a name's ranking is one-sided or merely high-turnover - Add execution context - pull
vwapper row for slippage estimates before chasing a leaderboard name - Cross-check against options - pair a top equity buyer with its rank on the options leaderboard to confirm conviction across both tapes
- Confirm liveness - gate alerts on
lastTradeUtcandtradeCountso stale or thinly-traded names do not top the list - Ship a daily digest - cap rows with
nand post the top accumulating/distributing symbols to Slack or email
Related
Related reading
- Options flow API: recent trades, blocks & leaderboard - the leaderboard workflow on the options side of the same pipeline
Complementary endpoints
- Stocks Outliers - rank the same universe by imbalance and skew instead of raw notional
- Stocks Summary - drill into a single leaderboard name's flow totals
- Stocks Recent - inspect the per-trade tape behind a ranked symbol
- Options Leaderboard - the matching net-notional ranking for the options tape
Unlock DEX, VEX and CHEX with Basic
Everything in Free, plus:
- DEX, VEX and CHEX exposure
- Full max pain
- ETF & index symbols SPY, QQQ, SPX, VIX
Go full-chain with Growth
Everything in Basic, plus:
- Full-chain GEX Every expiration
- 0DTE analytics
- Exposure summary & AI narrative
- CME futures & live screener
Add history and vol surfaces with Alpha
Everything in Growth, plus:
- Historical API replay Since 2017
- SVI vol surfaces
- VRP analytics
- Greeks surfaces Vanna, charm, volga and speed grids