Unusual Activity

Per-symbol unusual activity

Every contract on a single ticker that passed the unusual filter, ranked by score (volume_oi_ratio * ln(premium_estimate + 1) descending, then data_date, symbol, option_symbol). Same filters, paging and freshness rules as /options-flow/unusual; symbols is ignored here.

Default scope is the latest scan day that has data for this symbol. date, date_from / date_to take precedence. Unlike /unusual, since on its own is not combined with a day scope - it selects matching rows across all days.

get/options-flow/{symbol}

Request

  • Base URL: https://optionsbell.com/api/v1
  • URL: https://optionsbell.com/api/v1/options-flow/{symbol}
  • Auth: API key in header X-API-Key

Path parameters

symbolstring required
Example:AAPL

Ticker, case-insensitive. Must match ^[A-Z][A-Z0-9.\-]{0,9}$ after upper-casing, otherwise 400 INVALID_SYMBOL.

Query parameters

datestring date

A specific trading day, YYYY-MM-DD (must be a real calendar day). Default is the latest available day.

date_fromstring date

Inclusive lower bound, YYYY-MM-DD.

date_tostring date

Inclusive upper bound, YYYY-MM-DD. Must not be before date_from (400 INVALID_DATE_RANGE).

sincestring date-time

ISO-8601 timestamp. Only contracts whose last_seen_at is at or after this instant. A polling window, not a monotonic cursor.

type'c' | 'p' | 'all' | 'call' | 'calls' | 'put' | 'puts'

Contract side, case-insensitive: c / call / calls, p / put / puts, or all.

min_voloinumber

Minimum volume / open-interest ratio. Negative values are clamped to 0.

min_premiumnumber

Minimum estimated premium in USD (last_price * volume * 100). Negative values are clamped to 0.

min_ivnumber

Minimum implied volatility in percent (60 = 60%).

max_dteinteger

Maximum days to expiration. Floats are floored.

min_volumenumber

Minimum contract volume.

min_oinumber

Minimum open interest.

rawboolean

1 or true: skip the always-on base floor (Vol/OI >= 1.5, OI >= 100, premium >= $25k).

limitinteger

Max rows per page. Floats are floored; out-of-range values are clamped.

offsetinteger

Rows to skip. Combine with limit to enumerate every matching row; the envelope reports filtered_total and has_more.

Response

Contracts for the symbol

symbolstring required
datestring date nullable required

Resolved scan day; null in range / since mode or when the symbol has no data.

date_fromstring date nullable required
date_tostring date nullable required
sincestring date-time nullable required
countinteger required
limitinteger required
offsetinteger required
filtered_totalinteger required
has_moreboolean required
sort'score_desc,symbol,option_symbol' required

Example response

{
  "symbol": "AAPL",
  "data": [
    {
      "symbol": "TSLA",
      "option_symbol": "TSLA|20260605|460.00P"
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.