CuteMarkets is backtesting built by traders: a clean, developer-friendly REST and WebSocket API for U.S. options and stocks market data. Data is delivered with consistent authentication, response envelopes, pagination, and live stream behavior.
New to options mechanics? Start with Learn Options Trading From Zero before you wire chains, quotes, Greeks, or historical contracts into an app.
Base URL
https://api.cutemarkets.com
All endpoints are versioned under /v1/.
WebSocket streams are available at wss://api.cutemarkets.com/v1/ws/{market}/ on Expert (€99/mo yearly or €119/mo monthly) and Commercial (€399/mo yearly or €469/mo monthly) plans only. See WebSockets for authentication, subscription, and single-connection rules.
OpenAPI
The OpenAPI 3.1 specification is published at https://cutemarkets.com/openapi.json. See OpenAPI for scope and usage notes.
Quick Start
curl \
"https://api.cutemarkets.com/v1/options/chain/NFLX/?limit=1" \
-H "Authorization: Bearer YOUR_API_KEY"
curl \
"https://api.cutemarkets.com/v1/stocks/snapshot/AAPL/" \
-H "Authorization: Bearer YOUR_API_KEY"
Sample Response (Option Chain)
{
"status": "OK",
"request_id": "cm_adce10cb073745c7b859fc8131b203b0",
"results": [
{
"break_even_price": 100.025,
"details": {
"contract_type": "call",
"expiration_date": "2026-04-02",
"strike_price": 100,
"ticker": "O:NFLX260402C00100000"
}
}
]
}
What's available
| Category | Endpoints |
|---|---|
| Option Chain | Full chain snapshot by underlying ticker |
| Contract snapshot | One contract snapshot (Greeks, IV, quote, trade, underlying) |
| Contracts | List and detail view of contracts |
| Options trades | Tick-level options trade data |
| Options quotes | Bid/ask quotes - Expert or Commercial options plan |
| Stocks | Snapshots, movers, ticker reference, trades, quotes, grouped bars, open-close, aggregates, indicators |
| Aggregates | OHLC bars at any timespan |
| Indicators | SMA, EMA, MACD, RSI |
| Reference | Ticker search, expiration dates, stock ticker reference |
| WebSockets | Live event streams for options and stocks - Expert or Commercial only |
Research and backtesting
If you are building a simulator instead of a simple data integration, start with the Backtesting Framework knowledge base. It covers the architecture spine for realistic options backtests: point-in-time contract discovery, causal replay loops, quote-aware execution, contract selection, robustness checks, and regression tests.
The public CuteMarkets backtesting package is documented in cutebacktests.
Market data sources
Options integrations should keep source, freshness, and field semantics visible. Start with Data Sources and OPRA when you need to explain OPRA-originating options data. The related guides cover the common questions teams run into when evaluating or building with market data:
- Market Data SIPs and Direct Feeds for OPRA, CTA, UTP, SIP, and direct-feed distinctions.
- Quotes, Trades, and Aggregates for field semantics and "what is a price?" decisions.
- Option Symbols and Contract Identity for OCC-style tickers and point-in-time contract identity.
- Live, Delayed, and Entitlements for plan-aware freshness, quote access, and WebSocket eligibility.
- Corporate Actions and Adjusted Options for splits, mergers, adjusted deliverables, and contract sizing.
- Backtesting Data Quality Checklist for production-grade research artifacts.
Response format
Every response follows a standard envelope:
{
"status": "OK",
"request_id": "cm_6a7e466379af0a71039d60cc78e72282",
"results": [ ... ],
"next_url": "https://api.cutemarkets.com/v1/options/contracts/?page=..."
}
request_id is unique to every request and useful for debugging. On a few routes (for example Contract snapshot), results is a single object instead of an array.
The next_url field appears only on paginated list endpoints when more data is available after the current page. It is a full URL you can request as-is with the same Authorization header. When there is no next page, next_url is omitted.
Error responses
{
"status": "ERROR",
"request_id": "cm_abc123...",
"error": {
"code": "unauthorized",
"message": "Invalid or inactive API key."
}
}
See Error Handling for the full list of error codes. Start stock integrations at Stocks REST Overview.
System Status
CuteMarkets provides a public health endpoint you can poll from your own uptime monitors; no authentication required.
curl https://api.cutemarkets.com/v1/status/
{
"status": "ok",
"request_id": "cm_a1b2c3...",
"services": {
"api": { "status": "ok" },
"database": { "status": "ok", "latency_ms": 1.42 },
"cache": { "status": "ok", "latency_ms": 0.87 }
}
}
status is either "ok" (all systems nominal) or "degraded" (one or more services impacted). You can also view the live dashboard at cutemarkets.com/status.
How to choose the first endpoint
Start from the object your workflow needs to prove. A current options screen usually starts with Expirations and Option Chain. A historical options backtest starts with Contracts and an as_of date before it requests Quotes, Trades, or Aggregates. A stock dashboard starts with Stock Reference, Stock Snapshots, or Stock Aggregates and Indicators, depending on whether the UI needs identity, current state, or completed bars.
Keep the response envelope in every client wrapper. status, request_id, results, and next_url are not decorative fields. They tell support which request created the row, tell ingestion jobs whether pagination completed, and tell research code whether the artifact can be replayed. For live systems, add plan state, freshness label, and WebSocket connection state from Live and Delayed Entitlements and WebSockets.
When a workflow crosses products, carry timestamps forward. A stock signal should pass its stock timestamp into the options expiration and chain request. An option chain row should pass its OCC symbol into quotes, trades, snapshots, paper orders, or alerts. That convention keeps the docs, API calls, UI labels, and stored artifacts aligned.