Filtered options chain
Per-contract data (greeks, OI, IV, bid/ask) plus aggregate stats. Filters supported:
- expiries — CSV of tokens (e.g. 28MAR25,25APR25).
- dte_min / dte_max — days-to-expiry bounds.
- oi_min / oi_max — open interest bounds.
- delta_min / delta_max — applied to |delta| (0..1).
- strike_min / strike_max — absolute strike bounds.
- moneyness_min / moneyness_max — strike / spot ratio bounds, e.g. 0.9..1.1 keeps strikes within ±10% of spot. Useful for cross-symbol screens since it normalises the strike grid.
- option_type — call, put, or both.
Two layers of projection:
- fields (top-level): comma-sep subset of aggregates,available_expiries,contracts — drops whole sections of the response, e.g. ?fields=contracts to skip aggregates.
- include (per-contract): comma-sep subset of bid_ask,gex,greeks,iv,oi,volume — keeps only the named sub-sections of each contract dict. Core identity fields (strike,expiry,dte,type) are always present. Default is every section, matching v1 shape.
Payload is capped at ?max_contracts= (default 2000, hard ceiling 5000). On overflow the response is truncated to the closest-to-spot subset and truncated=true is set with total_matching_count so the client knows to narrow the filter.
Response is cached for 30s keyed by the exact filter combination, so repeated calls with identical filters are sub-millisecond.
Request
- Base URL: https://docs.backquant.com/v2
- URL: https://docs.backquant.com/v2/options/chain
- Auth: API key in header X-API-Key
Query parameters
Trading symbol: BTCUSDT, ETHUSDT, SOLUSDT, or HYPEUSDT.
CSV of expiry tokens (e.g. 28MAR25,25APR25)
Inclusive lower bound on days-to-expiry.
Inclusive upper bound on days-to-expiry.
Minimum open interest per contract.
Maximum open interest per contract.
Minimum |delta| (0..1).
Maximum |delta| (0..1).
Minimum strike price (absolute).
Maximum strike price (absolute).
Strike/spot lower bound (e.g. 0.9 for ATM-10%).
Strike/spot upper bound (e.g. 1.1 for ATM+10%).
Filter to call, put, or both contract types.
Cap on the number of contracts returned (default 2000, hard ceiling 5000). When more contracts match the filters, the response is truncated to the closest-to-spot subset and truncated=true is set with total_matching_count so the client knows to narrow the filter.
Top-level projection: aggregates,available_expiries,contracts
Per-contract projection: bid_ask,gex,greeks,iv,oi,volume. Default is all sections.
Headers
Response
Successful Response
Changes
No recorded changes to this operation across all 1 revision of this API.