Option contracts
Discover chains by underlying, expiration and strike; expired contracts remain addressable. Status is evaluated at effective_date. Covers equity and ETF options listed in the US, not index options. Contracts are American-style; a standard contract delivers 100 shares of its underlying and settles physically, while one adjusted by a corporate action (its OCC root is not the underlying's ticker) lists no deliverables and settlement unknown. Default order: id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.
/v1/options/contracts- Required capability
- options.read
- Data timing
- End of day; quotes the next morning
- Credits
- 50 credits per request.
Parameters
underlying_idsstringoptional · query- Underlying instrument IDs.
contract_idsstringoptional · query- Option instrument IDs.
typestringoptional · query- Option right.
callput expiration_fromstringoptional · query- Inclusive expiration date.
expiration_tostringoptional · query- Inclusive expiration date; must be on or after expiration_from.
strike_minstringoptional · query- Inclusive strike in the contract currency.
strike_maxstringoptional · query- Inclusive strike; must be >= strike_min.
statusstringoptional · query- Defaults to active; all includes expired contracts.
activeexpiredall effective_datestringoptional · query- Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.
as_ofstringoptional · query- Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.
known_fromstringoptional · query- First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.
known_tostringoptional · query- Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.
orderstringoptional · query- Direction on id; ties use ID ascending.
Default:ascdescasc limitintegeroptional · query- Maximum records per page.Default:
100 cursorstringoptional · query- Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.
formatstringoptional · query- Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.
jsoncsv
Response fields
Returns data as an array of records. All example values are illustrative.
idstring- Record identifier, stable across revisions.
instrument_idstring- Opaque stable public identifier; never an internal database key.
underlying_instrument_idstring- Opaque stable public identifier; never an internal database key.
contract_symbolstring- Canonical option symbol.
typestring- Option right.
callput strikeobject- strike
expiration_datestring- expiration date
exercise_stylestring- Exercise style.
americaneuropeanbermudanunknown settlementstring- Settlement method.
physicalcashunknown multiplierstring- Underlying units per standard contract.
deliverablesarray- deliverables
statusstring- Contract status: active until its expiration date, then expired; inactive is not used.
activeexpiredinactive
Response metadata
Responses include meta.timezone. Dataset responses include next_cursor; health and exports have their own metadata. Request tracing uses the X-Request-ID header.
When something goes wrong
An empty data: [] is a successful query with no matching records. Invalid symbols, permissions and malformed parameters produce an RFC 9457 problem with an actionable detail.
Plans
Requires options.read. Access, recency and history depth come from the plan definitions the API enforces.
| Plan | Access | Recency | History |
|---|---|---|---|
| Free | Not included | — | — |
| Developer | Not included | — | — |
| Pro | Included | End of day; quotes the next morning | 15 years |
| Commercial | Included | End of day; quotes the next morning | Full history |
| Scale | Included | End of day; quotes the next morning | Full history |
History is how far back a plan may request. How far records actually go for a symbol is history_from in dataset coverage. Nothing is real-time. Compare plans