CuteMarkets Docs

API Reference

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

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

Tick-level options trades for one contract: price, size, exchange, condition codes, and nanosecond timestamps. Use it for intraday analysis, building aggregates, microstructure work, and audit trails.

This page covers historical trades and the last trade shortcut.

Example Endpoint

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

Endpoints

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

Historical trades

Path parameters

ParameterTypeRequiredDescription
options_tickerstringYesFull options ticker (for example O:NFLX260402C00075000). Encode : as %3A in URLs if needed.

Query parameters

ParameterTypeRequiredDescription
timestampstringNoFilter by trade 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.
limitintegerNoMax rows returned. Default 1000, maximum 10000.
pagestringNoPagination continuation: use the URL in next_url, or pass the page query value from that URL here.

Response

FieldTypeDescription
statusstringOutcome (for example OK).
request_idstringUnique identifier for this request, assigned by CuteMarkets.
resultsarrayTrade objects (newest or oldest first per sort / order).
next_urlstringWhen more trades exist, full URL for the next page.

Use limit and time filters to narrow each page; follow next_url when present.

Each element of results may include:

FieldTypeDescription
sip_timestampintegerNanosecond time when the SIP recorded the trade.
participant_timestampintegerNanosecond exchange/participant time, when present.
pricenumberPremium per share (contract multiplier still applies to notional).
sizenumberContracts traded (volume).
exchangeintegerExchange / participant id (numeric OPRA/SIP id).
conditionsarray[integer]Sale condition codes.
correctionintegerCorrection indicator when present.
idstringTrade id, when present.
sequence_numberintegerSequence when supplied.
decimal_sizestringString form of size when supplied.

Example request

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

Time range (example):

bash
curl \
  "https://api.cutemarkets.com/v1/options/trades/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 (historical)

bash
{
  "results": [
    {
      "conditions": [209],
      "exchange": 313,
      "id": "",
      "price": 20.7,
      "sequence_number": 2634406060,
      "sip_timestamp": 1775071411326665293,
      "size": 5,
      "decimal_size": "5.0"
    },
    {
      "conditions": [209],
      "exchange": 307,
      "id": "",
      "price": 20,
      "sequence_number": 1491034441,
      "sip_timestamp": 1774973863784892318,
      "size": 2,
      "decimal_size": "2.0"
    },
    {
      "conditions": [233],
      "exchange": 302,
      "id": "",
      "participant_timestamp": 1774460986022000000,
      "price": 17.4,
      "sequence_number": 0,
      "sip_timestamp": 1774460986022000000,
      "size": 3,
      "decimal_size": "3.0"
    }
  ],
  "status": "OK",
  "request_id": "cm_b922dc90c9e74f0f98305e72a57955af"
}

Related workflow pages

How trades differ from quotes

Trades are executed prints. They prove that contracts changed hands, but they do not prove that the same price was available to your strategy at a later timestamp. Quotes show the bid and ask market; trades show what actually printed. A realistic options workflow usually needs both, because trade activity and executable context answer different questions.

Use trades to measure activity, tape behavior, volume bursts, and whether an aggregate bar was supported by real prints. Use quotes to test entries, exits, spread constraints, and fill assumptions. If a model buys at the midpoint but only stores trades, the fill logic cannot prove that the midpoint was available. If a model stores only quotes, it may miss whether there was actual printed activity around the signal.

Backtesting guidance

When trades feed a backtest, preserve the exact contract, timestamp bounds, sort order, and page sequence. Option contracts are sparse compared with stocks, so a query can return no trades even though the contract had an active quote market. That is not necessarily an error. It means the research code needs a fallback policy: reject the fill, use quotes for execution evidence, or widen the activity window while labeling the assumption.

Condition codes and corrections also matter. A production-grade research pipeline should keep the raw condition array and correction indicator, then decide which prints are eligible for volume, VWAP, or signal calculations. Do not silently collapse all prints into one price series without documenting the eligibility rule.

Last trade caveats

The last-trade endpoint is convenient for UI cards, current-state panels, and quick diagnostics. It should not be used as a historical fill model. A last trade can be stale, off the current bid/ask, or affected by sale conditions. Display the timestamp with the price and pair it with the latest quote when the user needs to evaluate whether the contract is currently actionable.


Last trade

Returns the latest trade for one options contract in a compact object (nanosecond timestamps, abbreviated field names). The shape differs from rows in Historical trades, use the field table below.

Path parameters

ParameterTypeRequiredDescription
options_tickerstringYesFull options ticker (for example O:NFLX260410C00060000).

Query parameters

None.

Response

FieldTypeDescription
statusstringOutcome (for example OK).
request_idstringUnique identifier for this request, assigned by CuteMarkets.
resultsobjectSingle last-trade payload (short keys below).

Fields on results when a last sale is available (names are abbreviated):

FieldTypeDescription
TstringOptions contract symbol.
pnumberTrade price per share (premium).
snumberSize (contracts / volume).
tintegerSIP nanosecond Unix timestamp (when the SIP received the trade).
xintegerExchange id (numeric).
carray[integer]Condition codes.
yintegerParticipant / exchange nanosecond timestamp (when the trade was generated).
fintegerTRF nanosecond timestamp (when the trade reporting facility received the message), when present.
rintegerTrade reporting facility id, when present.
istringTrade id (scoped by ticker, exchange, and TRF rules), when present.
qintegerSequence number (increasing per symbol; not always contiguous), when present.
eintegerTrade correction indicator, when present.
zintegerTape id: 1 = Tape A (NYSE-listed), 2 = B (NYSE Arca / NYSE American), 3 = C (NASDAQ), when present.
dsstringDecimal size as a string, when present.

When no last trade exists for the contract, the response uses the usual error envelope, treat non-OK statuses like other options routes.

Example request

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

Sample response

bash
{
  "results": {
    "T": "O:NFLX260410C00060000",
    "c": [233],
    "ds": "10.0",
    "i": "",
    "p": 35.14,
    "q": 2765195189,
    "s": 10,
    "t": 1775072777652877667,
    "x": 302
  },
  "status": "OK",
  "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.