Stocks · Dark pool, large prints and captured events
Stocks dark pool levels
/v1/stocks/dark-pool/levelsstocksDarkPoolLevelsThe prices at which the most off-exchange dollar value printed, rounded to whole cents and ranked by notional, aggregated over one date or, without date, over the last five trading sessions. Odd-lot, contingent, official and corrected prints are excluded. Served from the platform's capture of equity prints: the tickers it captures are the always-on liquid ETFs plus tickers requested on demand (up to eight at a time, each for five minutes after the last request), so a symbol seen for the first time returns data only from the moment capture began; meta.coverage.captured_since says when. Use /v1/stocks/dark-pool/trades for the full tape of any symbol.
Example request
curl -sS --get "https://api.ordermap.si/v1/stocks/dark-pool/levels" \
-H "Authorization: Bearer $ORDERMAP_API_KEY" \
--data-urlencode symbol=AAPLconst params = new URLSearchParams({
symbol: "AAPL",
});
const res = await fetch(`https://api.ordermap.si/v1/stocks/dark-pool/levels?${params}`, {
headers: { Authorization: `Bearer ${process.env.ORDERMAP_API_KEY}` },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const { data, meta } = await res.json();
console.log(data, meta.coverage);Set ORDERMAP_API_KEY to your key. Replace the dates with a recent trading date.
Parameters
4 parameters, 1 required.
| Parameter | Type and limits | Description |
|---|---|---|
symbolqueryrequired | stringat most 11 characterspattern ^[A-Za-z]{1,6}(\.[A-Za-z0-9]{1,4})?$ | Ticker symbol, for example SPY. |
datequeryoptional | stringdate | A single exchange date, YYYY-MM-DD. Defaults to the last five trading sessions. |
topqueryoptional | integerdefault 25min 1max 200 | Number of price levels to return, ranked by notional. |
min_queryoptional | numbermin 0max 1000000000000000 | Only levels with at least this dollar value. |
Response
| Status | Meaning | Body |
|---|---|---|
200 | Successful response. | Schema below |
400 | Invalid, unknown or repeated parameters, or an invalid cursor. | Error object |
401 | Missing or invalid API key. | Error object |
403 | The plan, dataset release or account state does not allow this request. | Error object |
422 | The request is valid but no data exists for it. | Error object |
429 | Rate limit, burst limit or cooldown; wait Retry-After seconds.Retry-After | Error object |
500 | Internal error. | Error object |
503 | Data temporarily unavailable; retry after Retry-After seconds.Retry-After | Error object |
504 | The request timed out. | Error object |
Authenticated responses carry the X-RateLimit-* headers (see rate limits); 429 and 503 add Retry-After.
200 response body
dataobjectrequiredOff-exchange price levels.11 fields insidecomplete_sessionsarray<string>daterequiredDates captured from the open.latest_pricenumber | nullrequiredLatest price of the stock.levelsarray<object>requiredPrice levels, highest notional first.5 fields insidelast_timestampintegerunix-msrequiredTime of the latest print at the level. Unix epoch milliseconds (UTC).notionalnumberrequiredDollar value printed at the level.pricenumberrequiredPrice level in dollars, to the cent.sizenumberrequiredShares printed at the level.tradesintegerrequiredPrints at the level.
partial_sessionsarray<string>daterequiredDates captured only from part of the day.sessionsarray<string>daterequiredExchange dates the levels aggregate.symbolstringrequiredTicker symbol.
metaobjectrequiredMeta object
Example response
{
"data": {
"complete_sessions": [
"2026-10-15"
],
"latest_price": 601.25,
"levels": [
{
"last_timestamp": 1792101600000,
"notional": 412000000,
"price": 600,
"size": 686000,
"trades": 1840
}
],
"partial_sessions": [],
"sessions": [
"2026-10-15"
],
"symbol": "SPY"
},
"meta": {
"as_of": 1760659200123,
"coverage": {
"complete": true
},
"delay_ms": 0,
"delayed": false,
"request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
"source": "sip"
}
}Values are illustrative. Missing values are null, never 0.