Market Data
tastytrade exposes REST endpoints for fetching market data. These endpoints are available to funded account holders, and they return real-time quotes — there is no REST endpoint for delayed quotes. For continuous, low-latency updates, prefer the streaming feed over polling (see below).
All requests use the standard base URLs (sandbox https://api.cert.tastyworks.com, production https://api.tastyworks.com) and require the User-Agent: <product>/<version> header plus a valid OAuth access token. See Get Started for authentication details.
Fetch quotes by instrument type
The core endpoint is GET /market-data/by-type. It fetches quotes for several securities at once. You pass each instrument type as a query-string parameter whose value is a comma-delimited list of symbols. The parameter key is the security type and the value is the list of symbols for that type.
| Parameter | Description | Example symbol |
|---|---|---|
cryptocurrency | Cryptocurrency pairs | BTC/USD |
equity | Equities | AAPL |
equity-option | OCC equity options | SPY 250428P00355000 |
index | Indices | SPX |
future | Futures | /CLM5 |
future-option | Future options | ./MESU5EX3M5 250620C6450 |
Symbols follow tastytrade symbology: a leading / for futures, ./ for future options, OCC format for equity options, and BASE/QUOTE pairs for crypto. You can combine multiple instrument-type parameters in a single request.
curl -s "https://api.tastyworks.com/market-data/by-type?equity=AAPL,TSLA&cryptocurrency=BTC/USD" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "User-Agent: my-app/1.0.0"
Combined symbol limit
The total number of symbols across all instrument-type parameters in one request is capped at 100. Count every symbol in every parameter toward that limit — e.g. 60 equities plus 40 future options reaches the 100-symbol cap. If you need quotes for more symbols, split them across multiple requests, or switch to streaming.
Response fields
The response wraps a list of quote objects under data.items. JSON keys are dasherized. Each item carries the symbol, its instrument-type, and an updated-at timestamp, along with pricing and session fields:
{
"data": {
"items": [
{
"symbol": "AAPL",
"instrument-type": "Equity",
"updated-at": "2025-04-29T21:33:25.535Z",
"bid": "210.55",
"bid-size": "2.0",
"ask": "210.6",
"ask-size": "1.0",
"mid": "210.575",
"mark": "210.55",
"last": "210.511",
"last-mkt": "211.21",
"open": "208.693",
"day-high-price": "212.24",
"day-low-price": "208.37",
"close": "211.21",
"prev-close": "210.14",
"is-trading-halted": false,
"year-low-price": "169.11",
"year-high-price": "260.1",
"volume": "35348839.0"
}
]
},
"pagination": null
}
Common fields include bid/ask (and their bid-size/ask-size), mid (the midpoint), mark, last (last traded price) and last-mkt (last price from the regular/primary market), session prices (open, day-high-price, day-low-price, close, prev-close), 52-week range (year-low-price, year-high-price), volume, and trading-halt flags (is-trading-halted). Some instrument types add fields — equities may include beta, dividend-amount, dividend-frequency, and low-limit-price/high-limit-price. See the Market Data reference for the full field list per instrument type.
Prefer streaming over polling
REST quotes are best for one-off snapshots. For live data, the DXLink streaming feed is strongly preferred — it pushes updates as the market moves instead of forcing you to poll, which avoids hitting rate limits and stale data. See Streaming for setup.
Errors
This endpoint documents 400, 401, 403, and 429 responses; other standard HTTP codes may occur API-wide. A 429 means you should back off and retry; see Rate Limits and Backoff. For the API-wide catalog, see /reference/errors.
Market data is read-only and does not move money. For order placement, dry-run first and supply a unique external-identifier in the request body; see Idempotency and Retries.