Lab API
Options Recent
Options Recent Trades API
Recent option trades across all contracts for an underlying, newest first. Each row carries timestamp, contract instrument id, expiry, strike, right, price, size, side, block flag, and the prevailing bid/ask.
Endpoint
Auth required (
X-Api-Key)
Rate Limited: Yes
Alpha plan+
Parameters
| Name | In | Required | Default | Description |
|---|---|---|---|---|
symbol |
path | yes | - | Underlying symbol |
limit |
query | no | 50 | Number of trades, clamped to 1..500 |
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/flow/options/SPY/recent?limit=10"
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/flow/options/SPY/recent",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"{data['count']} of {data['totalAvailable']} buffered trades")
const resp = await fetch(
"https://lab.flashalpha.com/v1/flow/options/SPY/recent",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(data.count + " of " + data.totalAvailable + " buffered trades");
Response
{
"symbol": "SPY",
"count": 3,
"totalAvailable": 482,
"trades": [
{
"ts": "2026-05-12T18:42:09.812Z",
"instrumentId": 12345678,
"expiry": "2026-05-15",
"strike": 600.0,
"right": "C",
"price": 1.85,
"size": 250,
"side": "buy",
"isBlock": true,
"bid": 1.83,
"ask": 1.86
},
{
"ts": "2026-05-12T18:42:08.441Z",
"instrumentId": 12345701,
"expiry": "2026-05-15",
"strike": 595.0,
"right": "P",
"price": 0.72,
"size": 12,
"side": "sell",
"isBlock": false,
"bid": 0.71,
"ask": 0.73
},
{
"ts": "2026-05-12T18:42:07.205Z",
"instrumentId": 12345689,
"expiry": "2026-05-15",
"strike": 597.0,
"right": "C",
"price": 1.20,
"size": 5,
"side": "mid",
"isBlock": false,
"bid": 1.19,
"ask": 1.21
}
]
}
Key Response Fields
| Field | Type | Description |
|---|---|---|
symbol | string | Uppercase underlying symbol |
count | integer | Number of trades returned |
totalAvailable | integer | Trades available in the in-memory buffer |
trades[] | array | Recent trade rows: ts, instrumentId, expiry, strike, right, price, size, side, isBlock, bid, ask |
Errors
| Status | Description |
|---|---|
403 | Requires Alpha plan or higher |
502 | Upstream flow data source unavailable |
About
Returns the most recent option trades for an underlying across all of its contracts in a single stream, newest first. Trades come from the in-memory buffer fed by the ingest service, and totalAvailable reports how deep that buffer currently is. Useful for a live time-and-sales feed or for sampling the most recent activity on a name.
Common Use Cases
- Live time-and-sales widget for a watched symbol
- Recent-flow sidebar in a trading dashboard
- Sampling latest trades to feed downstream classifiers (toxic/sweep detection)
- Quick visual check on whether a tape is buy- or sell-pressured right now
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.