CuteMarkets Docs

API Reference

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

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

Expert or Commercial plan required. This endpoint is available on Expert and Commercial plans.

Historical National Best Bid and Offer (NBBO)–style quotes for one options contract: bid and ask price, sizes, exchange ids, sequence number, and nanosecond SIP timestamps. Expert and Commercial users can request either live quote rows or a 15-minute delayed view. Use it to study spread behavior, liquidity, backtests, and strategy refinement.

Learning the market columns? Read Options Bid Ask Spread Explained before using quotes for fills or backtests.

Example Endpoint

/v1/options/quotes/O:NFLX260402C00075000/?limit=10

Endpoint

bash
GET /v1/options/quotes/{options_ticker}
GET /v1/options/quotes/{options_ticker}/last

Path parameters

ParameterTypeRequiredDescription
options_tickerstringYesFull options ticker (for example O:NFLX260402C00075000). Encode : as %3A if your HTTP client requires it.

Query parameters

ParameterTypeRequiredDescription
timestampstringNoFilter by time: YYYY-MM-DD or a nanosecond Unix timestamp string.
timestamp.gtestringNoLower bound (date or nanosecond timestamp).
timestamp.gtstringNoStrictly greater than.
timestamp.ltestringNoUpper bound.
timestamp.ltstringNoStrictly less than.
sortstringNoField used for ordering.
orderstringNoSort direction for sort.
limitintegerNoMaximum quotes returned. Default 1000, maximum 10000.
timeframestringNolive (default) returns current quote rows. delayed caps results to data no newer than 15 minutes ago.
pagestringNoPagination continuation: use the URL in next_url, or pass the page query value from that URL here.

The /last endpoint accepts timeframe only. timeframe=live returns the current latest NBBO quote. timeframe=delayed returns the most recent historical quote row no newer than 15 minutes ago.

Response (historical quotes)

FieldTypeDescription
statusstringOutcome (for example OK).
request_idstringUnique identifier for this request, assigned by CuteMarkets.
timeframestringREAL-TIME for live responses, DELAYED for delayed responses.
delay_minutesintegerPresent only for delayed responses; currently 15.
resultsarrayQuote rows, ordered per sort / order.
next_urlstringWhen more quotes exist, full URL for the next page.

Use limit and time-window filters per page; follow next_url when present.

Each element of results:

FieldTypeDescription
bid_pricenumberBest bid (premium per share).
ask_pricenumberBest ask.
bid_sizenumberBid size in round lots (often 100 shares per lot unless your venue defines otherwise). A size of 2 means two round lots at that bid.
ask_sizenumberAsk size in the same round-lot units.
bid_exchangeintegerExchange id for the bid side.
ask_exchangeintegerExchange id for the ask side.
sequence_numberintegerMonotonic sequence for quote events for this symbol (not always contiguous).
sip_timestampintegerNanosecond Unix time when the SIP received this quote.

Response (latest quote)

GET /v1/options/quotes/{options_ticker}/last/ returns one normalized quote object in results. It preserves upstream fields and adds stable mark-friendly fields:

FieldTypeDescription
tickerstringRequested option ticker.
bidnumberCurrent or delayed best bid.
asknumberCurrent or delayed best ask.
midpointnumber(bid + ask) / 2 when bid and ask are available.
bid_sizenumberBid size.
ask_sizenumberAsk size.
bid_exchangeintegerExchange id for the bid side.
ask_exchangeintegerExchange id for the ask side.
quote_timestampintegerNanosecond quote timestamp.
timeframestringREAL-TIME or DELAYED.

If no usable quote exists, results is an empty object. Expired contracts can still have historical quote rows when the upstream retains them, but current latest quote lookups may return 404 after a contract is no longer listed.

Plan requirement (Expert or Commercial)

If the API key is not on Expert or Commercial, CuteMarkets returns 403:

bash
{
  "status": "ERROR",
  "request_id": "cm_4ba72c263423499ea3f5c54d03eda8d1",
  "error": {
    "code": "forbidden",
    "message": "This endpoint requires an Expert or Commercial subscription."
  }
}

Related workflow pages

Upgrade to Expert (€99/mo yearly or €119/mo monthly) for live quotes data, or Commercial (€399/mo yearly or €469/mo monthly) when the same data powers commercial applications.

Example requests

Live quotes are the default:

bash
curl \
  "https://api.cutemarkets.com/v1/options/quotes/O:NFLX260402C00075000/?limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Latest delayed quote row:

bash
curl \
  "https://api.cutemarkets.com/v1/options/quotes/O:NFLX260402C00075000/?timeframe=delayed&limit=1&sort=timestamp&order=desc" \
  -H "Authorization: Bearer YOUR_API_KEY"

Latest live quote for portfolio marks:

bash
curl \
  "https://api.cutemarkets.com/v1/options/quotes/O:NFLX260402C00075000/last/" \
  -H "Authorization: Bearer YOUR_API_KEY"

Latest delayed quote for portfolio marks:

bash
curl \
  "https://api.cutemarkets.com/v1/options/quotes/O:NFLX260402C00075000/last/?timeframe=delayed" \
  -H "Authorization: Bearer YOUR_API_KEY"

Time window (example):

bash
curl \
  "https://api.cutemarkets.com/v1/options/quotes/O:NFLX260402C00075000/?timestamp.gte=2026-03-01&timestamp.lte=2026-03-31&limit=500&sort=timestamp&order=desc" \
  -H "Authorization: Bearer YOUR_API_KEY"

Sample response (success)

bash
{
  "results": [
    {
      "ask_exchange": 323,
      "ask_price": 0.28,
      "ask_size": 10,
      "bid_exchange": 316,
      "bid_price": 0.25,
      "bid_size": 1,
      "sequence_number": 789539218,
      "sip_timestamp": 1645119125346243600
    },
    {
      "ask_exchange": 301,
      "ask_price": 0.27,
      "ask_size": 1,
      "bid_exchange": 323,
      "bid_price": 0.24,
      "bid_size": 10,
      "sequence_number": 788994206,
      "sip_timestamp": 1645119118474271000
    }
  ],
  "status": "OK",
  "timeframe": "REAL-TIME",
  "request_id": "cm_a1b2c3d4e5f6478990a1b2c3d4e5f678"
}

Expired contract behavior

Quotes are historical event data. Use timestamp filters around the trading session you want to inspect, including for same-week or expired contracts. For expired contracts, the latest quote endpoint represents current latest quote availability and may return 404 after the contract is no longer listed; use the historical quotes endpoint with explicit timestamps when reconstructing prior marks.

Delayed responses include delay metadata:

bash
{
  "results": [
    {
      "ask_exchange": 323,
      "ask_price": 0.28,
      "ask_size": 10,
      "bid_exchange": 316,
      "bid_price": 0.25,
      "bid_size": 1,
      "sequence_number": 789539218,
      "sip_timestamp": 1645119125346243600
    }
  ],
  "status": "OK",
  "timeframe": "DELAYED",
  "delay_minutes": 15,
  "request_id": "cm_a1b2c3d4e5f6478990a1b2c3d4e5f678"
}

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.