Options Block Trades API - Large Print Detection - FlashAlpha Lab API
Lab API Options Blocks

Options Block Trades API

Large option trades across all contracts for an underlying, newest first, filtered by minimum contract size.

Endpoint

GET /v1/flow/options/{symbol}/blocks
Auth required (X-Api-Key) Rate Limited: Yes Alpha plan+

Parameters

Name In Required Default Description
symbol path yes - Underlying symbol
minSize query no 100 Minimum contract size
expiry query no - Filter to a single expiration cycle, YYYY-MM-DD. Omit to include all expiries.
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/flow/options/SPY/blocks?minSize=250"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/flow/options/SPY/blocks",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"{data['count']} blocks at minSize {data['minSize']}")
const resp = await fetch(
  "https://lab.flashalpha.com/v1/flow/options/SPY/blocks",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(data.count + " blocks at minSize " + data.minSize);

Response

{
  "symbol": "SPY",
  "minSize": 250,
  "count": 2,
  "blocks": [
    {
      "ts": "2026-05-12T18:41:55.108Z",
      "expiry": "2026-05-15",
      "strike": 600.0,
      "right": "C",
      "price": 1.85,
      "size": 1500,
      "side": "buy"
    },
    {
      "ts": "2026-05-12T18:38:12.402Z",
      "expiry": "2026-06-20",
      "strike": 590.0,
      "right": "P",
      "price": 4.30,
      "size": 800,
      "side": "sell"
    }
  ]
}

Key Response Fields

Field Type Description
symbolstringUppercase underlying symbol
minSizeintegerMinimum block size applied
countintegerNumber of block trades returned
blocks[]arrayBlock rows: ts, expiry, strike, right, price, size, side

Errors

Status Description
403Requires Alpha plan or higher
502Upstream flow data source unavailable

About

Filters the option tape to only prints at or above minSize contracts. Default is 100 contracts but you can raise it for institutional-only filtering. Returns rows in the same shape as the recent feed minus instrument id, bid, and ask.

Common Use Cases

  • Track institutional-only flow - raise minSize to 500+ and watch blocks[] to surface only large single-ticket prints worth reacting to
  • Detect multi-leg sweeps - cluster blocks[] by ts across strikes and expiries to identify a single sweep routed across venues
  • Read directional intent - combine side with right (e.g. buy calls vs buy puts) to tell bullish bets from hedges or bearish positioning
  • Score conviction by notional - multiply size by price on each block to rank prints by dollars committed, not just contract count
  • Spot event positioning - scan large prints on specific expiry legs into earnings or macro catalysts
  • Build a day sentiment overlay - tally buy-side versus sell-side size across blocks to gauge net institutional pressure

Related reading

Complementary endpoints

Ready to build?

Get your free API key and start pulling live options data in 30 seconds.