Docs
GET /gex/{underlying}/strikes

Per-strike GEX rows for one session (legacy, unversioned)

gex_getStrikesLegacyDeprecated

Deprecated: use /v2/gex/{symbol}/grid instead. Served until 2026-12-31.

Path parameters

underlying string required

Underlying symbol, e.g. SPY

Query parameters

date string ISO date

Session date, ISO YYYY-MM-DD. Optional for the chain (absent = live), required for GEX.

source string

Reserved for ITMatrixHQ tooling; omit it. GEX reads ignore it.

Details

Per-(strike, expiry) GEX rows from the latest capture of one session. Use GET /v2/gex/{symbol}/grid instead: by_expiry=true serves the same rows, plus grid totals, live reads and at=.

Units

  • gex and delta_adj_gex are dollars of dealer hedging per $1 move in the underlying (calls positive, puts negative).
  • Share-denominated GEX is dollar GEX ÷ the underlying price.
  • strike is in integer thousandths of a dollar (600000 = $600.00); call_oi and put_oi are contracts.
  • meta.captured_at_ms is the capture instant, epoch milliseconds.

GEX on this route is in dollars. For shares or delta-adjusted figures and how to convert, see Units: dollars, shares and delta-adjusted.

Limits

No per-operation limit applies to requests with an API key.

Example

http
GET /gex/SPY/strikes?date=2026-09-24
json
{
  "data": [
    {
      "strike": 760000,
      "expiry": "2026-09-25",
      "gex": -83854412.96,
      "delta_adj_gex": -18382624.27,
      "call_oi": 5143,
      "put_oi": 30041
    }
  ],
  "meta": {
    "underlying": "SPY",
    "date": "2026-09-24",
    "captured_at_ms": 1790256713559,
    "row_count": 3293
  }
}

Response

Prices are dollars, timestamps epoch milliseconds, strikes integer thousandths of a dollar; null means unknown. Units →

200application/json

Per-strike GEX rows in data (strikes in integer thousandths); capture instant in meta.captured_at_ms

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
call_oi integer · int32 nullable
delta_adj_gex number · double nullable USD

Delta-adjusted dealer gamma exposure at this strike (× expiry), per-$1-move dollars.

expiry string · date nullable ISO date

Present = a per-expiry row; absent = the all-expiry net.

gex number · double required USD

Net dealer gamma exposure at this strike (× expiry), per-$1-move dollars; calls +, puts −.

gex_0dte number · double nullable

0DTE component (daily-rollup rows only).

put_oi integer · int32 nullable
strike integer · int64 required 1/1000 $

Strike in integer thousandths of a dollar (exact OSI unit)

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.

StatusMeaning
400

invalid_params

401

unauthenticated / token_expired

403

not_entitled_tier / attestation_required

502

internal — the db source failed upstream

503

internal — the db source is not configured here