Do not collapse quotes into trades
Quotes describe the bid/ask market a workflow could face. Trades describe prints that happened.
Use both when judging liquidity.
A developer and buyer guide to OPRA-originating listed-options market data, why quotes and trades need separate handling, and how to evaluate an options API built on that market context.
OPRA is the consolidated reporting layer for U.S. exchange-listed options last-sale and quotation information. An OPRA-backed options API still has to make that data useful by preserving contract identity, bid/ask quotes, trade prints, timestamps, conditions, entitlement state, pagination, and missing-data behavior across the workflows developers actually build.
Primary market
U.S. listed options
OPRA context applies to exchange-listed securities options, not equities, futures, crypto, or broker execution.
Core objects
Quotes + trades
Quotation information and last-sale prints answer different implementation questions and should stay separate.
CuteMarkets workflow
Contracts to evidence
Use expirations, contracts, chains, snapshots, quotes, trades, aggregates, and plan labels together.
Source context
OPRA provides consolidated listed-options quote and last-sale context from U.S. options exchanges, but a production API has to turn that feed context into a developer workflow. On CuteMarkets, that means connecting Options Data API requests to listed Expirations, exact Contracts, Quotes, Trades, Aggregates, and focused contract snapshots.
When a chain is loaded, keep the OCC ticker, expiration date, strike, contract type, multiplier, open interest, implied volatility, Greeks, latest quote, latest trade, and day stats together. When the workflow drills into one leg, the quote row should preserve bid, ask, size, timestamp, condition, spread width, midpoint, and quote age, while the trade row preserves printed price, size, exchange context, sequence, correction, and trade condition.
Quotes describe the bid/ask market a workflow could face. Trades describe prints that happened.
Use both when judging liquidity.
OPRA context does not remove look-ahead risk. Historical research still needs point-in-time contracts and quote windows.
Use `as_of` and timestamp filters.
Live, delayed, quote access, WebSocket access, and commercial-use terms affect what the app can show.
Label freshness and plan state.
Provenance
Options do not have one clean price that can be reused everywhere. A last price can be stale, a midpoint can be unexecutable, a bar can summarize prints without showing the current bid/ask, and a chain snapshot can be too broad for fill validation. The Options Quotes vs Trades guide separates these objects, while Why Last Price Is Bad for Options Backtesting explains why quote-aware fills need bid/ask evidence.
For a backtest, event study, scanner, or dashboard, provenance means the app can answer where the selected value came from. Store the request URL, OCC symbol, quote timestamp, trade timestamp, quote condition, trade condition, spread percent, quote age, and rejection reason beside the result. The Backtesting Execution Realism and Historical Options Quotes API pages turn those terms into fill policies.
Provider evaluation
A provider saying "OPRA data" is a starting point, not the full vendor review. Ask how the API exposes quote and trade conditions, timestamps, corrections, exchange or participant context, sequence fields, pagination, empty windows, stale quotes, delayed data labels, commercial-use rules, and support for both REST and streaming. The Options Data Provider Evaluation and Live, Delayed, and Entitlements docs cover the operational checks.
For procurement or migration, keep the source review tied to buildable use cases. A chain scanner needs moneyness, delta, IV, open interest, volume, spread percent, and quote freshness. A historical backtest needs contracts with `as_of`, quote windows, trade prints, aggregate bars, reject reasons, and audit artifacts. A production dashboard needs plan labels, WebSocket subscriptions, reconnect state, and REST backfills. The Compare page and Best Options Data APIs page organize those checks against provider alternatives.
Boundaries
OPRA source context does not make every options API equivalent. The developer experience still depends on authentication, endpoint names, response envelopes, pagination, filters, SDKs, examples, rate limits, historical lookback, WebSocket availability, pricing, support, and licensing. A strong evaluation checks the data source and then verifies whether the API can answer the exact product question.
CuteMarkets should be judged on the complete workflow: discover listed expirations, choose exact OCC contracts, inspect current chains, drill into snapshots, validate historical quotes, review trades, summarize aggregates, and preserve evidence for every fill, alert, chart, and research conclusion. That is how OPRA-originating market data becomes a usable options API rather than an abstract data-source claim.
These object boundaries keep scanner, dashboard, and backtest logic from treating unlike market-data fields as interchangeable.
| Object | What it tells you | Implementation use |
|---|---|---|
| Quotes | Bid, ask, size, quote timestamp, quote age, spread, and condition context. | Validate executable context, scanner liquidity, no-bid exits, stale quotes, and spread filters. |
| Trades | Printed price, size, timestamp, exchange context, sequence, correction, and condition context. | Review tape activity, unusual options flow, event response, and aggregate-bar interpretation. |
| Contracts and expirations | Listed series, OCC identity, expiration date, strike, contract side, and historical availability. | Avoid invalid dates, stale contracts, look-ahead selection, and wrong-symbol joins. |
| Aggregates | Trade-derived OHLC bars, volume, and VWAP over a selected interval. | Build charts and price-path context without treating bars as bid/ask fill proof. |
| Entitlement and freshness | Live or delayed state, quote access, WebSocket availability, and plan limits. | Label dashboards, explain missing fields, and prevent production support confusion. |
| Check | Why it matters | CuteMarkets reference |
|---|---|---|
| Quote fields | Bid/ask values, sizes, timestamps, and conditions determine whether a displayed option market is usable. | Quotes docs and historical quotes API. |
| Trade fields | Last-sale prints are activity evidence, not automatic fill prices. | Trades docs and options trades API. |
| Timestamp handling | Research needs UTC filters, quote age, market-session context, and reproducible event windows. | Market hours and timestamps docs. |
| Entitlements | Live, delayed, commercial, quote, and streaming access affect product behavior. | Pricing and live-delayed-entitlements docs. |
| Missing data | Empty pages, no-bid exits, stale quotes, unavailable Greeks, and incomplete pagination should be explicit. | Corrections and missing-data docs. |
| Need | Primary page | Reason |
|---|---|---|
| Build an API integration | Options Data API | Starts with contracts, chains, quotes, trades, aggregates, and expirations. |
| Validate fills | Historical Options Quotes API | Uses bid/ask windows around candidate entry and exit timestamps. |
| Rank live candidates | Options Chain API | Loads chain breadth, Greeks, IV, OI, volume, and latest quote/trade context. |
| Compare vendors | Options Data API Evaluation Framework | Turns source and endpoint claims into a testable review plan. |
| Review license fit | Market Data Licensing and Commercial Use | Separates internal tools, redistribution, display, and commercial terms. |
API example
request quote and trade evidence
# Start from a listed contract, then inspect the quote and trade evidence separately.
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.cutemarkets.com/v1/options/contracts/?underlying_ticker=AAPL&expiration_date=2026-06-19&limit=100"
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.cutemarkets.com/v1/options/quotes/O:AAPL260619C00225000/?timestamp.gte=2026-06-04T13:30:00Z×tamp.lt=2026-06-04T13:35:00Z"
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.cutemarkets.com/v1/options/trades/O:AAPL260619C00225000/?timestamp.gte=2026-06-04T13:30:00Z×tamp.lt=2026-06-04T13:35:00Z"quote quality model
type QuoteRow = {
bid_price: string;
ask_price: string;
sip_timestamp: string;
conditions?: string[];
};
function explainQuote(row: QuoteRow, decisionTimestampMs: number) {
const bid = Number(row.bid_price);
const ask = Number(row.ask_price);
const mid = bid > 0 && ask >= bid ? (bid + ask) / 2 : null;
const spreadPct = mid ? (ask - bid) / mid : Infinity;
const quoteAgeSeconds = (decisionTimestampMs - Date.parse(row.sip_timestamp)) / 1000;
return {
bid,
ask,
midpoint: mid,
spreadPct,
quoteAgeSeconds,
quoteConditions: row.conditions ?? [],
usableForFill: bid > 0 && ask >= bid && spreadPct <= 0.12 && quoteAgeSeconds <= 15,
};
}How to implement
Decide whether the workflow needs listed contracts, a chain snapshot, a quote window, a trade tape, an aggregate bar, or a live stream before writing the request.
Store the OCC ticker, underlying, expiration, strike, contract type, timestamp filter, quote timestamp, trade timestamp, and timezone context in the artifact.
Carry condition codes, correction state, exchange or participant context, sequence fields, and reject reasons into scanner, backtest, and dashboard output.
Show whether the result is live or delayed, whether quote fields are entitled, whether WebSocket updates are enabled, and when the row was last refreshed.
Use provider evidence only after proving the API can reproduce the workflow with contracts, quotes, trades, aggregates, and stored request URLs.
Last verified
This guide was last reviewed on June 4, 2026. Date-sensitive market calendars, provider docs, and listed contracts can change, so production workflows should verify the live source before trading or publishing an automated answer.
OPRA market data is consolidated U.S. exchange-listed options last-sale and quotation information. For developers, the practical objects are quote rows, trade rows, contract identity, timestamps, conditions, and entitlement context.
No. The source context is only one part of the evaluation. APIs differ in endpoint design, historical lookback, quote access, WebSockets, response fields, pricing, pagination, missing-data handling, support, and licensing.
Use both for different jobs. Trades show printed activity and bars, while quotes provide bid/ask context for plausible fills, spread filters, no-bid exits, and quote-age checks.
Ask each provider to reproduce the same workflow: expiration discovery, point-in-time contracts, chain selection, historical quote windows, trade validation, aggregate bars, entitlement labels, and stored request evidence.
Related pages
OPRA source docs
Read the CuteMarkets docs page for OPRA-originating listed-options source context.
Options data API
Use the main options API surface after reviewing source and provenance questions.
Historical options quotes API
Validate fills with bid/ask windows, spread checks, and quote-age policies.
Option quote and trade conditions
Keep condition-code context visible in scanner and backtest artifacts.
Options data provider evaluation
Turn source, endpoint, entitlement, and missing-data claims into a testable checklist.
Compare providers
Review CuteMarkets against alternatives with a workflow-based comparison frame.