Historical options data API

Historical Options Data API for contracts, quotes, trades, and backtests

CuteMarkets provides a historical options data API with contracts using `as_of`, historical quote and trade data, aggregates, and open/close data for event studies, scanners, and backtests.

Quick answer

A historical options data API is useful for backtesting only when it can recreate the contract universe and market context that existed at the decision time. CuteMarkets supports that with `as_of` contract discovery, quote history, trade history, aggregate bars, and expiration lookups.

Real-time dataHistorical market dataQuotes & tradesAggregates & indicators

Historical workflow map

How to keep historical options research point-in-time

Historical options data is only useful if the page explains what the model was allowed to know at the decision timestamp. The workflow should separate listed universe, quote context, trade evidence, and replay output.

FactorPage-specific guidanceAPI implementation
Universe rebuildStart with the contracts that existed on the simulated date, not the current chain.Request `/v1/options/contracts/` with `underlying_ticker`, `as_of`, and expiration filters before selecting an OCC ticker.
Timestamp disciplineQuote and trade windows should be anchored to the modeled decision time, not to a broad day-level assumption.Use `timestamp.gte` and `timestamp.lt` around entry and exit windows, then store quote age and trade timestamp in the artifact.
Replay-safe joinsJoin contracts, quotes, trades, and aggregates by exact OCC ticker after selection.Avoid ticker-level shortcuts; carry the selected contract symbol through quote, trade, aggregate, and result rows.
Execution realismHistorical last price is context, not proof that a strategy could enter or exit at that level.Use bid/ask history for fill assumptions and trades for activity confirmation, with explicit rejects for missing or wide quotes.
Research outputUseful historical workflows lead from the endpoint to the audit trail a developer will need later.Record selected contracts, request windows, skipped trades, reject reasons, summary metrics, and source endpoint names.

Replay discipline

Historical data needs timestamped evidence beyond old rows

A historical options workflow starts with the decision timestamp, then reconstructs what contracts could actually be seen with contracts and as_of filters. It should join the selected OCC ticker to quote windows, trade prints, aggregate bars, and the historical options replay runbook before a backtest fill is trusted.

The core failure modes are covered in the backtesting data quality checklist, backtesting execution realism guide, and market hours and timestamps guide. Use those references when the historical workflow needs more than a curl example.

Event studies

For earnings or volatility events, use the historical options replay article and the NVDA earnings replay as concrete reading paths.

Execution checks

Before trusting a result, compare it with quote-aware fills, why option quotes matter, and the backtest realism checker.

Replay recipe

Historical options replay from event timestamp to audit artifact

This is the workflow a research team should expect from a serious historical options data API before it trusts a backtest, event replay, or scanner evaluation.

StepEndpoint layerAudit output
Define the eventExternal event log plus underlying reference dataEvent timestamp, pre-event observation window, post-event exit window, underlying price.
Discover expirationsExpirations endpointListed dates, selected cycle, DTE, and calendar assumptions.
Rebuild contractsContracts with `as_of`Exact OCC tickers that existed at the decision date.
Shortlist candidatesChain snapshot or contract filtersMoneyness, delta, IV, open interest, volume, and spread prefilters.
Price the entryHistorical quotesBid, ask, midpoint sensitivity, quote age, and spread reject status.
Validate activityTrades and aggregatesPrinted activity, bar path, tape context, and empty-interval notes.
Publish the artifactStored request URLs and result rowsSelected legs, skipped legs, rejects, PnL assumptions, and source endpoint names.

Backtest controls

Historical options data checks that stop false confidence

CheckBad shortcutBetter CuteMarkets workflow
Contract universeSelect from today's chain.Use contracts with `as_of` and selected expiration filters.
Fill priceUse last price or midpoint for every fill.Use bid/ask quotes with explicit side, spread, and quote freshness.
LiquidityRank only by same-day volume.Combine open interest, volume, quote size, spread percent, and no-bid checks.
Event timingUse the whole day as one state.Separate pre-event observation, entry, post-event exit, and market-open windows.
Missing dataDrop rows without explanation.Preserve reject reasons and incomplete-pagination warnings in the artifact.

Why teams use it

What makes a historical options data API usable for research

Contracts with `as_of`

Reconstruct the historical contract universe instead of accidentally using today's listings in a past event study.

Historical quote history

Inspect spread quality and bid/ask behavior instead of treating the midpoint as always available.

Historical trade history

Review actual prints and time-and-sales behavior to judge liquidity and entry quality around events.

OHLC aggregates and open/close

Support event-study pricing, daily snapshots, and broader historical analysis using bar data and single-day endpoints.

Expiration lookups

Align historical studies with the correct post-event expiry structure rather than guessing from today's chain.

Docs and examples

Go straight to the endpoint docs and historical-options research articles published on CuteMarkets.

Developer examples

Two code paths teams usually need first

Request 01

historical contracts

historical contracts
curl "https://api.cutemarkets.com/v1/options/contracts/?underlying_ticker=AAPL&as_of=2025-10-29&expiration_date=2025-11-21&limit=25" \
  -H "Authorization: Bearer YOUR_API_KEY"

Request 02

historical quotes

historical quotes
curl "https://api.cutemarkets.com/v1/options/quotes/O:AAPL251121C00225000/?timestamp.gte=2025-10-29T13:30:00Z&timestamp.lt=2025-10-29T20:00:00Z" \
  -H "Authorization: Bearer YOUR_API_KEY"

Research standard

Historical options data must rebuild what the market could see

A historical options guide needs more than a promise of older prices. It should teach point-in-time contract selection, quote windows, trade validation, and the specific failure modes that make many options backtests look better than they are.

Start from listed contracts

Use `as_of` contract discovery and expiration filters before choosing legs, especially around earnings, index events, splits, and short-dated cycles.

Replay quote windows, not daily summaries

Entry and exit assumptions should be tied to bid/ask rows around the decision timestamp, with quote age and spread gates logged beside each fill.

Keep rejects in the output

Rejected contracts are part of the evidence. Wide spreads, no-bid exits, missing quotes, and incomplete pages tell the reader what could not be traded.

FAQ

Common questions about this options data API

What should a historical options data API include for backtesting?

At minimum it should support historical contract discovery, historical quotes or trades, and historical pricing aggregates. Otherwise the backtest quickly becomes too optimistic.

Does CuteMarkets provide both real-time and historical options data?

Yes. CuteMarkets supports real-time snapshots and historical workflows across contracts, trades, quotes, aggregates, and expirations, with plan-specific live or delayed access.

Do you provide quotes, trades, and historical contracts?

Yes. The platform includes contracts, chain snapshots, contract snapshots, trade history, quote history, aggregates, and expiration lookups for U.S.-listed options.

Do you provide the earnings calendar too?

CuteMarkets provides the options data layer. Earnings timing should come from a dedicated earnings calendar source that you combine with the options data.

Build historical options workflows on more than a static chain snapshot

Use historically correct contracts, quote and trade context, and aggregate data from one API surface, then move from docs into production with a free key.