CuteMarkets Docs

API Reference

Everything you need to integrate market data, build faster, and scale.

Tip: open /docs/option-chain.md directly for raw markdown (easy copy/paste into an LLM).

Returns a snapshot of options contracts for one underlying equity: per-contract pricing context, Greeks, implied volatility, open interest, latest quote and trade (when your plan includes them), and underlying reference. Use it for chain overviews, comparing strikes and expirations, research, and strategy work.

Quick definition: an option chain snapshot is the current cross-section of listed contracts for one underlying, useful for comparing strikes and expirations before drilling into one contract's history.

If you are still learning what the columns mean, read How to Read an Options Chain and Options Greeks Explained first.

For one contract by underlying + OCC ticker, use Contract snapshot instead.

Example Endpoint

/v1/options/chain/NFLX/?limit=2

When to use a chain snapshot

Use the chain endpoint when the user or model needs to compare many candidate contracts at once. It is the right surface for strike ladders, expiration views, scanner filters, watchlist setup, and pre-trade diagnostics. It is not the right surface for replaying a historical fill, because the snapshot describes current or plan-specific latest state rather than a timestamped quote stream.

For a robust workflow, treat the chain as a candidate generator. First select the underlying and expiration, then filter by contract type, strike range, liquidity, open interest, volume, Greeks, or implied volatility. After a contract survives those filters, request quotes, trades, aggregates, or a contract snapshot depending on the next decision.

DecisionUse chain snapshot?Better endpoint when chain is not enough
Show a current strike tableYes. It returns many contracts with latest state in one response.Use pagination when the visible table spans many strikes.
Discover historical contractsNot by itself. Current chain state can leak future listings into a backtest.Contracts with as_of.
Price an entry or exit in a backtestNo. A latest quote or trade is not proof of prior executable state.Quotes with timestamp bounds.
Audit recent activityPartly. last_trade is useful context but not a full tape.Trades and Aggregates.
Refresh one selected legUsually no. Loading the full chain is unnecessary.Contract snapshot.

Implementation checklist

  • Narrow the request by expiration_date, contract_type, and strike range when the UI already knows those filters.
  • Store the returned OCC ticker for any contract the user selects.
  • Display quote and trade timestamps when those fields influence a decision.
  • Treat missing Greeks, IV, quote, or trade fields as data availability states, not rendering errors.
  • Use quotes or trades for historical replay instead of reusing the latest chain snapshot.

Endpoint

bash
GET /v1/options/chain/{ticker}

Path parameters

ParameterTypeRequiredDescription
tickerstringYesUnderlying symbol (for example NFLX or AAPL).

Query parameters

ParameterTypeRequiredDescription
strike_pricenumberNoExact strike filter.
expiration_datestringNoExpiration date, YYYY-MM-DD.
contract_typestringNoFilter by type (for example call or put).
strike_price.gtenumberNoStrike greater than or equal.
strike_price.gtnumberNoStrike greater than.
strike_price.ltenumberNoStrike less than or equal.
strike_price.ltnumberNoStrike less than.
expiration_date.gtestringNoExpiration on or after this date (YYYY-MM-DD).
expiration_date.gtstringNoExpiration after this date.
expiration_date.ltestringNoExpiration on or before this date.
expiration_date.ltstringNoExpiration before this date.
sortstringNoField used for ordering.
orderstringNoSort direction for sort.
limitintegerNoMaximum contracts returned. Default 10, maximum 100.
pagestringNoPagination continuation: use the URL in next_url, or pass the page query value from that URL here.

Response

Top-level fields:

FieldTypeDescription
statusstringOutcome of the request (for example OK).
request_idstringUnique identifier for this request, assigned by CuteMarkets.
resultsarraySnapshot objects, one per contract.
next_urlstringWhen more contracts exist for the query, full URL for the next page.

Each element of results may include:

FieldTypeDescription
break_even_pricenumberUnderlying price at which the position breaks even (call: strike + premium; put: strike − premium).
dayobjectLatest daily bar: open, high, low, close, volume, VWAP, change fields, last_updated (nanoseconds).
detailsobjectticker, contract_type, exercise_style, expiration_date, strike_price, shares_per_contract.
greeksobjectdelta, gamma, theta, vega when available; some deep ITM or illiquid lines may omit values.
implied_volatilitynumberIV implied by the option price, when available.
last_quoteobjectLatest quote (bid/ask, sizes, exchanges, midpoint, last_updated, timeframe) when quotes are enabled for your plan.
last_tradeobjectLatest trade when your plan includes trade data: price, size, exchange, sip_timestamp, conditions, timeframe, and related fields.
open_interestnumberOpen interest.
underlying_assetobjectUnderlying: ticker, price, change_to_break_even, last_updated, timeframe.
fmvnumberFair market value estimate when your tier includes it.
fmv_last_updatedintegerNanosecond timestamp of last FMV update when fmv is present.

Example requests

bash
curl \
  "https://api.cutemarkets.com/v1/options/chain/NFLX/?limit=2" \
  -H "Authorization: Bearer YOUR_API_KEY"

Filtered chain (example):

bash
curl \
  "https://api.cutemarkets.com/v1/options/chain/NFLX/?contract_type=call&limit=50&sort=strike_price&order=asc" \
  -H "Authorization: Bearer YOUR_API_KEY"

Higher limit (up to 100):

bash
curl \
  "https://api.cutemarkets.com/v1/options/chain/NFLX/?limit=100" \
  -H "Authorization: Bearer YOUR_API_KEY"

Sample response

Sample with two results.

bash
{
  "results": [
    {
      "break_even_price": 100.025,
      "day": {
        "change": -0.08,
        "change_percent": -80,
        "close": 0.02,
        "high": 0.15,
        "last_updated": 1775016000000000000,
        "low": 0.02,
        "open": 0.11,
        "previous_close": 0.1,
        "volume": 11788,
        "vwap": 0.03614
      },
      "details": {
        "contract_type": "call",
        "exercise_style": "american",
        "expiration_date": "2026-04-02",
        "shares_per_contract": 100,
        "strike_price": 100,
        "ticker": "O:NFLX260402C00100000"
      },
      "greeks": {
        "delta": 0.02481795338171621,
        "gamma": 0.022072818287936315,
        "theta": -0.13121396656786571,
        "vega": 0.0019964356066287225
      },
      "implied_volatility": 0.6950024226241469,
      "last_quote": {
        "ask": 0.03,
        "ask_size": 486,
        "ask_exchange": 309,
        "bid": 0.02,
        "bid_size": 238,
        "bid_exchange": 322,
        "last_updated": 1775072652441254747,
        "midpoint": 0.025,
        "timeframe": "REAL-TIME"
      },
      "last_trade": {
        "sip_timestamp": 1775073506446593186,
        "conditions": [
          227
        ],
        "price": 0.02,
        "size": 50,
        "exchange": 312,
        "timeframe": "REAL-TIME"
      },
      "open_interest": 14078,
      "underlying_asset": {
        "change_to_break_even": 5.235,
        "last_updated": 1775123022067431274,
        "price": 94.79,
        "ticker": "NFLX",
        "timeframe": "DELAYED"
      }
    },
    {
      "break_even_price": 97.255,
      "day": {
        "change": -0.45,
        "change_percent": -65.2,
        "close": 0.24,
        "high": 1.11,
        "last_updated": 1775016000000000000,
        "low": 0.16,
        "open": 0.91,
        "previous_close": 0.69,
        "volume": 11096,
        "vwap": 0.3416
      },
      "details": {
        "contract_type": "call",
        "exercise_style": "american",
        "expiration_date": "2026-04-02",
        "shares_per_contract": 100,
        "strike_price": 97,
        "ticker": "O:NFLX260402C00097000"
      },
      "greeks": {
        "delta": 0.18593220522845647,
        "gamma": 0.10775236828790113,
        "theta": -0.5784063493211438,
        "vega": 0.010167595059336215
      },
      "implied_volatility": 0.6600286584180963,
      "last_quote": {
        "ask": 0.27,
        "ask_size": 63,
        "ask_exchange": 318,
        "bid": 0.24,
        "bid_size": 60,
        "bid_exchange": 315,
        "last_updated": 1775073599203471487,
        "midpoint": 0.255,
        "timeframe": "REAL-TIME"
      },
      "last_trade": {
        "sip_timestamp": 1775073599506207795,
        "conditions": [
          209
        ],
        "price": 0.24,
        "size": 1,
        "exchange": 309,
        "timeframe": "REAL-TIME"
      },
      "open_interest": 13473,
      "underlying_asset": {
        "change_to_break_even": 2.465,
        "last_updated": 1775123022067431274,
        "price": 94.79,
        "ticker": "NFLX",
        "timeframe": "DELAYED"
      }
    }
  ],
  "status": "OK",
  "request_id": "cm_adce10cb073745c7b859fc8131b203b0"
}

Related workflow pages

How to use chain snapshots well

The chain endpoint is the right starting point when the application needs to compare many contracts at once. A scanner can filter by expiration, strike range, contract type, delta, implied volatility, open interest, volume, or bid/ask width after the response arrives. A strategy builder can use the chain to choose candidate legs, then request historical quotes, trades, or aggregates for the exact OCC tickers that survive the filter.

Keep the chain request narrow enough for the job. If a user has already selected an expiration, pass expiration_date instead of loading every listed contract. If the workflow only needs calls near the money, use contract_type=call and a strike range. Narrow requests make the UI faster and reduce the chance that pagination splits a user-visible chain across multiple pages.

Do not treat every field as equally fresh. The underlying price, latest quote, latest trade, open interest, and daily bar can have different update behavior and plan-dependent freshness. When a chain powers an order-ticket-like UI or a backtest, display or store the relevant timestamp fields beside the values. That is especially important for short-dated options where stale quotes and wide spreads can change the conclusion.

Common chain patterns

  • Expiration table: fetch listed expirations first, then request one expiration at a time.
  • Strike ladder: sort by strike_price and filter by contract_type.
  • Liquidity scan: combine open interest, volume, quote freshness, and spread width.
  • Greeks screen: filter the chain response by delta, gamma, theta, or vega after checking liquidity.
  • Backtest setup: use the chain to select a contract, then use historical quotes for fill evidence.

The main rule is simple: use the chain for selection, then use contract-specific endpoints for proof. A chain snapshot tells you which contracts are interesting now; historical quotes and trades tell you what was available at the timestamp your model is trying to reconstruct.

Next steps

Move from the docs into the product workflow

If you are evaluating the API rather than implementing a specific endpoint right now, the product pages map live and historical workflows for stocks, options, and WebSockets.