Dark Pool Levels

Overview

Dark Pool Levels returns off-exchange print activity for one ticker, aggregated by price level over a date range. Each level carries the total notional, share count, and trade count of dark-venue prints at that price.

POST/v1/equities/tool/dark-pool-levels
curl -X POST https://api.quantdata.us/v1/equities/tool/dark-pool-levels \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "sessionDateRange": {
      "startDate": "2026-05-06",
      "endDate": "2026-05-13"
    },
    "filter": { "ticker": "AAPL" }
  }'

Required: ticker and sessionDateRange

filter.ticker and the top-level sessionDateRange are required. The endpoint scopes to one ticker over the inclusive date range you supply.

  • ticker (string): the underlying symbol, e.g. AAPL.
  • sessionDateRange (object): startDate is required; endDate is optional. Both endpoints are inclusive.

No other request fields are accepted. filterExpression, aggregationPeriod, projection, and pagination do not apply to this endpoint. There is no sessionDate, timeRange, or snapshotTime: sessionDateRange is the only time selector.

Selecting the date range

startDate is required. endDate may be omitted, in which case it defaults to tomorrow in New York time. That lets you pass just a startDate to get every session from that date forward through today.

Open-ended range · startDate only

Request · open-ended date range
{
  "sessionDateRange": { "startDate": "2026-05-06" },
  "filter": { "ticker": "AAPL" }
}

Response shape

data walks price level (dollars) -> level statistics. Keys are dollar price levels as strings (e.g. "215.00") sorted ascending. latestStockPrice is the latest available price for the ticker at request time.

200 OK · application/json
{
  "latestStockPrice": 218.42,
  "data": {
    "210.00": { "notionalValue": 4820100.0, "size": 22950, "tradeCount": 184 },
    "212.50": { "notionalValue": 6132040.0, "size": 28851, "tradeCount": 220 },
    "215.00": { "notionalValue": 18420100.0, "size": 85675, "tradeCount": 612 },
    "217.50": { "notionalValue": 11320400.0, "size": 52050, "tradeCount": 401 },
    "220.00": { "notionalValue": 8124030.0, "size": 36927, "tradeCount": 312 }
  }
}

Per-level cell fields:

  • notionalValue (double, dollars): the total notional traded at this price level over the date range.
  • size (long, shares): the total share count traded at this price level over the date range.
  • tradeCount (integer): the count of distinct prints at this price level over the date range.

Where errors come from

Malformed input surfaces as ValidationFailure (400). Two other failures surface as 500-class errors instead of 400: LevelsUnavailable when no dark-pool levels exist for the ticker over the requested range, and StockPriceNotFound when the latest stock price lookup fails. Treat both as transient if you see them in production.

Where to go next