FlowScan - Unusual Options Activity
See where the smart money is positioning — institutional-scale options sweeps and blocks, served as clean JSON.
FlowScan surfaces unusual options activity sourced from Benzinga's options-activity signal feed: large sweeps, blocks, and notable prints with the strike, expiry, premium, and bullish/bearish read already parsed for you. Instead of scraping a terminal or paying for an enterprise data plan, you get a small REST API that returns the latest flow, the biggest bets, per-ticker activity, and a daily sentiment summary. Data is refreshed on a rolling cadence and cached, so calls are fast and cheap.
Endpoints
| Endpoint | What it returns |
|---|---|
GET /flow/latest |
The most recent unusual options prints (up to 50), newest first. Each item carries id, timestamp, ticker, expiry, strike, type (CALL/PUT), sentiment (BULLISH/BEARISH/NEUTRAL), premium_usd, option_price, open_interest, volume, trade_type (e.g. SWEEP/BLOCK/TRADE), execution, aggressor_ind, underlying_price, and description. |
GET /flow/big-bets |
The premium-threshold subset of the feed: SWEEP prints with premium_usd at or above the threshold (default 500000). Same item shape as /flow/latest. Optional query param min_premium overrides the threshold, e.g. ?min_premium=1000000. |
GET /flow/ticker/{ticker} |
All current flow prints for a single symbol, e.g. /flow/ticker/AAPL. Symbol is case-insensitive and must be 1–5 letters. Same item shape as /flow/latest. |
GET /flow/summary/daily |
An aggregate roll-up of the current feed: total, bullish, bearish, neutral counts, bullish_ratio, bearish_ratio, a by_trade_type breakdown, top_tickers (up to 10, by print count), and total_premium_usd. |
GET /flow/expiry/{date} |
All prints expiring on a given date in YYYY-MM-DD format, e.g. /flow/expiry/2026-07-18. Same item shape as /flow/latest. |
GET /health |
Liveness check — returns { "status": "ok", "ts": "..." }. |
Why this API
- Parsed and structured, not raw. Every print arrives as typed JSON with the call/put side, sentiment, premium in USD, and trade type already extracted — no XML, no HTML scraping on your end.
- Institutional flow, not retail noise.
/flow/big-betsisolates large sweep orders (default $500K+ premium) so you can focus on size that moves markets, with a tunablemin_premiumthreshold. - Built-in sentiment aggregation.
/flow/summary/dailygives you bullish/bearish ratios, top tickers, and total premium in a single call, so you don't have to aggregate the raw feed yourself. - Fast and cached. Responses serve from cache and are refreshed on a rolling cadence, so endpoints stay snappy under load.
- Simple, predictable REST. Five focused flow endpoints plus a health check, consistent item shape across all of them, and plain query params.
Typical use cases
- Power an unusual-options-activity dashboard or alert bot that watches
/flow/big-betsfor large sweeps as they appear. - Pull
/flow/ticker/{ticker}to show options flow context on a stock or watchlist page. - Feed
/flow/summary/dailyinto a daily market-sentiment digest (bullish/bearish ratio, top tickers, total premium). - Track flow into a specific expiry with
/flow/expiry/{date}ahead of earnings, OPEX, or known catalysts. - Backfill a quant/screener pipeline with structured sweep and block data without standing up your own scraper.
Good to know
- Empty arrays are normal during quiet windows.
/flow/big-betsis a premium-threshold subset of the live feed — when no recent trade crosses the "big" bar, it legitimately returns an empty array[]. This is expected behavior, not an error. - Per-ticker results can be empty.
/flow/ticker/{ticker}returns only the prints currently in the feed for that symbol. If there has been no recent flow for that ticker, you'll get an empty array with a200status. - Market-hours dependent. Unusual options activity is driven by live trading. Expect rich data during US market hours and a thinner, slower-changing feed overnight, on weekends, and on market holidays.
- Freshness. Data is refreshed on a rolling cadence and served from cache, so a single print may take a few minutes to appear and the same set can be returned across closely-spaced calls.
/flow/latestreturns up to the 50 most recent prints. - Field availability varies by print. Numeric fields such as
premium_usd,open_interest,volume,strike, andunderlying_pricereflect what the upstream feed provides for each record and may benullwhen not reported;iv_percentis not currently populated. - Source. Data originates from Benzinga's options-activity signal feed and is normalized into the JSON shape documented above.