/v2/quotes Latest price and change for up to 180 symbols
market_getQuotes
One row per requested symbol, in request order, with the latest price, the prior close, the percent change and the session volume. Use it to fill a watchlist or heatmap in one request.
Query parameters
symbolsstringComma-separated symbols, at most 180 (required).
Details
net_gex and gex_change are always null for now; read GEX from GET /v2/gex/{symbol}/grid.
Units
spot(the latest ITMatrixHQ price) andofficial_close(the prior session's close) are dollars.change_pctis percent (-0.72= -0.72%);volumeis shares.session_dateis the exchange session ofspot, ISOYYYY-MM-DD;event_ts_msis epoch milliseconds of the price event,nullwhen the price comes from a daily bar.
Freshness
The latest price of the current session as it trades, otherwise the last completed session's close.
Limits
At most 180 symbols per request. No other per-operation limit applies.
Empty results
A symbol with no recent price is a row of null values. A symbol your plan cannot read is served as an empty row and listed in meta.restricted, rather than failing the whole request.
Example
GET /v2/quotes?symbols=AAPL{
"data": [
{
"symbol": "AAPL",
"spot": 341.44,
"change_pct": 1.64,
"net_gex": null,
"gex_change": null,
"volume": 30001611,
"official_close": 335.92,
"session_date": "2026-09-25",
"event_ts_ms": 1790380731536
}
],
"meta": { "count": 1 }
}Response
Prices are dollars, timestamps epoch milliseconds, strikes integer thousandths of a dollar; null means unknown. Units →
200application/json
Quote rows in data, in request order. meta.restricted (when present) lists symbols served as an empty row because your plan cannot read them (tier floor or a missing attestation), rather than failing the whole request
object
A successful response: the payload consumers parse plus response metadata. data shapes are the platform types — never reshaped by the envelope.
data array<object> required
change_pct number · double nullable Percent change vs official_close (prior session), or null.
event_ts_ms integer · int64 nullable epoch ms Epoch milliseconds of the price event behind spot; null when it comes from a daily bar.
gex_change number · double nullable Always null for now.
net_gex number · double nullable Always null for now; read GEX from GET /v2/gex/{symbol}/grid.
official_close number · double nullable USD Prior-session official close, dollars, or null.
session_date string nullable Exchange session of spot, not the request's wall-clock date.
spot number · double nullable USD Latest price, dollars, or null when no recent price is available.
symbol string required volume integer · int64 nullable Latest session volume, shares, or null.
meta object required
Response metadata.
caps object nullable
meta.caps — the entitlement caps that shaped this response. applied lists the caps that actually changed it (for example range_clamped).
applied array<string> required Which caps actually shaped this response (e.g. range_clamped). Empty = nothing was clamped.
darkpool boolean nullable Whether this account can use Off-Exchange in the site.
flow boolean nullable Whether the OPRA option-flow capability (flow) is granted to this principal in the app: site Pro plus a CBOE non-professional attestation (never on an itm_ key). Emitted explicitly — true and false — by the account endpoints, so the app reads the grant instead of inferring it from tier and attestation; absent on routes that do not report it.
gexDepth string nullable GEX data depth when the route reports it. Camel-cased to match the browser capability bundle; absent on unrelated routes.
tier string required The tier the request was served under.
cursor string nullable Opaque continuation cursor (pass back as ?cursor=); absent when there is nothing more to read.
plane string nullable Which serving tier answered the read (meta.plane). Informational provenance: treat it as an opaque label, because new values may appear.
Errors
Every error is the JSON error envelope; branch on error.code.
| Status | Meaning |
|---|---|
| 400 |
|
| 401 |
|
| 503 |
|