Flow Alerts
https://api.unusualwhales.com/api/option-trades/flow-alerts
Request
Authorization: Bearer <token>
Query Parameters
ticker_symbol
Ticker
optional
A comma separated list of tickers. To exclude certain tickers prefix the first ticker with a `-`.
AAPL,INTC
unusual
boolean
optional
Convenience preset for "unusual" flow, matching the [live options flow](https://unusualwhales.com/live-options-flow) default criteria: volume>OI, size>OI, all-opening, OTM, single-leg, DTE≤60, ask-side≥50%, premium≥$10k, size≥5, issue types ADR/Common Stock/ETF. Applied as defaults, so any of those filters you pass explicitly (e.g. `min_ask_perc=0.9`, `max_dte=40`) overrides the preset.
min_premium
optional
The minimum premium on that alert. Min: 0.
12500.5
>= 0
max_premium
optional
The maximum premium on that alert. Min: 0.
12500.5
>= 0
min_size
optional
The minimum size on that alert. Size is defined as the sum of the sizes of all transactions that make up the alert. Min: 0.
125
>= 0
max_size
optional
The maximum size on that alert. Min: 0.
125
>= 0
min_volume
optional
The minimum volume on that alert's contract at the time of the alert. Min: 0.
125
>= 0
max_volume
optional
The maximum volume on that alert's contract at the time of the alert. Min: 0.
125
>= 0
min_open_interest
optional
The minimum open interest on that alert's contract at the time of the alert. Min: 0.
125
>= 0
max_open_interest
optional
The maximum open interest on that alert's contract at the time of the alert. Min: 0.
125
>= 0
all_opening
optional
Boolean flag whether all transactions are opening transactions based on OI, Size & Volume. Since Flow Alerts with rule_name values of RepeatedHits, RepeatedHitsAscendingFill, and RepeatedHitsDescendingFill are composed of many individual transactions, it is extremely unlikely that the all_opening value will be true, so if you are interested in these Flow Alerts you should not set this query param to true.
true
Default:
true
is_floor
optional
Boolean flag whether a transaction is from the floor.
true
Default:
true
is_sweep
optional
Boolean flag whether a transaction is a intermarket sweep.
true
Default:
true
is_call
optional
Boolean flag whether a transaction is a call.
true
Default:
true
is_put
optional
Boolean flag whether a transaction is a put.
true
Default:
true
is_ask_side
optional
Boolean flag whether a transaction is ask side.
true
Default:
true
is_bid_side
optional
Boolean flag whether a transaction is bid side.
true
Default:
true
rule_name[]
Rule Name
optional
An array of 1 or more rule name.
RepeatedHitsRepeatedHitsAscendingFill
enum: FloorTradeSmallCap, FloorTradeMidCap, RepeatedHits, RepeatedHitsAscendingFill, RepeatedHitsDescendingFill, FloorTradeLargeCap, OtmEarningsFloor, LowHistoricVolumeFloor, SweepsFollowedByFloor
min_diff
Min Contract Diff
optional
The minimum OTM diff of a contract. Given a strike price of 120 and an underlying price of 98 the diff for a call option would equal to: (120 - 98) / 98 = 0.2245 The diff for a put option would equal to: -1 * (120 - 98) / 98 = -0.2245.
0.53
max_diff
Min Contract Diff
optional
The minimum OTM diff of a contract. Given a strike price of 120 and an underlying price of 98 the diff for a call option would equal to: (120 - 98) / 98 = 0.2245 The diff for a put option would equal to: -1 * (120 - 98) / 98 = -0.2245.
0.53
min_volume_oi_ratio
Min Volume OI Ratio
optional
The minimum ratio of contract volume to contract open interest. If the open interest of a contract is zero, then this ratio is evaluated as if the open interest of the contract was one (to avoid divide by zero errors). For example, if you set this ratio to 10, then a contract with zero open interest and 7 volume will NOT be included in your results.
0.32
>= 0
max_volume_oi_ratio
Max Volume OI Ratio
optional
The maximum ratio of contract volume to contract open interest. If the open interest of a contract is zero, then this ratio is evaluated as if the open interest of the contract was one (to avoid divide by zero errors). For example, if you set this ratio to 50, then a contract with zero open interest and 75 volume will NOT be included in your results.
1.58
>= 0
is_otm
Is OTM Contract
optional
Only include contracts which are currently out of the money.
true
issue_types[]
Issue types
optional
An array of 1 or more issue types.
Common StockIndex
enum: Common Stock, ETF, Index, ADR
min_dte
Min DTE
optional
The minimum days to expiry. Min: 0.
1
>= 0
max_dte
Max DTE
optional
The maximum days to expiry. Min: 0.
3
>= 0
min_ask_perc
Flow Alerts Min Ask Percentage
optional
The minimum ask percentage. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.25
>= 0
<= 1
max_ask_perc
Flow Alerts Max Ask Percentage
optional
The maximum ask percentage. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.75
>= 0
<= 1
min_bid_perc
Flow Alerts Min Bid Percentage
optional
The minimum bid percentage. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.25
>= 0
<= 1
max_bid_perc
Flow Alerts Max Bid Percentage
optional
The maximum bid percentage. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.75
>= 0
<= 1
min_bull_perc
Flow Alerts Min Bull Percentage
optional
The minimum bull percentage. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.5
>= 0
<= 1
max_bull_perc
Flow Alerts Max Bull Percentage
optional
The maximum bull percentage. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.9
>= 0
<= 1
min_bear_perc
Flow Alerts Min Bear Percentage
optional
The minimum bear percentage. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.5
>= 0
<= 1
max_bear_perc
Flow Alerts Max Bear Percentage
optional
The maximum bear percentage. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.9
>= 0
<= 1
min_skew
Flow Alerts Min Skew
optional
The minimum skew. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.3
>= 0
<= 1
max_skew
Flow Alerts Max Skew
optional
The maximum skew. Decimal proxy for percentage (0 to 1). Min: 0. Max: 1.
0.7
>= 0
<= 1
min_price
Flow Alerts Min Price
optional
The minimum price of the underlying asset. Min: 0.
10.5
>= 0
max_price
Flow Alerts Max Price
optional
The maximum price of the underlying asset. Min: 0.
500.75
>= 0
min_iv_change
Flow Alerts Min IV Change
optional
The minimum IV change. Unbounded decimal proxy for percentage (e.g., 0.01 for minimum +1% change).
0.01
max_iv_change
Flow Alerts Max IV Change
optional
The maximum IV change. Unbounded decimal proxy for percentage (e.g., 0.05 for maximum +5% change).
0.05
min_size_vol_ratio
Flow Alerts Min Size Volume Ratio
optional
The minimum size to volume ratio. Min: 0.
1.5
>= 0
max_size_vol_ratio
Flow Alerts Max Size Volume Ratio
optional
The maximum size to volume ratio. Min: 0.
10.0
>= 0
min_spread
Flow Alerts Min Spread
optional
The minimum spread. Min: 0.
0.05
>= 0
max_spread
Flow Alerts Max Spread
optional
The maximum spread. Min: 0.
5.0
>= 0
min_marketcap
Min Marketcap
optional
The minimum marketcap. Min: 0.
1000000
>= 0
max_marketcap
Max Marketcap
optional
The maximum marketcap. Min: 0.
250000000
>= 0
is_multi_leg
Flow Alerts Is Multi Leg
optional
Boolean flag whether the transaction is a multi-leg transaction.
true
size_greater_oi
Flow Alerts Size Greater Than Open Interest
optional
Only include alerts where the size is greater than the open interest.
true
vol_greater_oi
Flow Alerts Volume Greater Than Open Interest
optional
Only include alerts where the volume is greater than the open interest.
true
min_days_between_expiry_and_earnings
MinDaysBetweenExpiryAndEarnings
optional
Minimum value of (contract_expiry_date - underlying_next_earnings_date) in days. Negative = contract expires BEFORE earnings; zero = same day; positive = AFTER earnings. Use together with `max_days_between_expiry_and_earnings` to target a window around the next earnings announcement. Examples: to exclude contracts that expire after the next earnings, set `max_days_between_expiry_and_earnings=-1`. To target contracts that expire the same week as (and after) earnings, set `min_days_between_expiry_and_earnings=1&max_days_between_expiry_and_earnings=6`. Contracts whose underlying has no known next earnings date are excluded whenever this filter is used.
1
max_days_between_expiry_and_earnings
MaxDaysBetweenExpiryAndEarnings
optional
Maximum value of (contract_expiry_date - underlying_next_earnings_date) in days. Negative = contract expires BEFORE earnings; zero = same day; positive = AFTER earnings. Use together with `min_days_between_expiry_and_earnings` to target a window around the next earnings announcement. Examples: to exclude contracts that expire after the next earnings, set `max_days_between_expiry_and_earnings=-1`. To target contracts that expire the same week as (and after) earnings, set `min_days_between_expiry_and_earnings=1&max_days_between_expiry_and_earnings=6`. Contracts whose underlying has no known next earnings date are excluded whenever this filter is used.
6
newer_than
NewerThan
optional
The unix time in milliseconds or seconds at which no older results will be returned. Can be used with `older_than` to paginate by time. Also accepts an ISO date or RFC 3339 datetime (example: 2024-01-25).
1_715_083_417
older_than
OlderThan
optional
The unix time in milliseconds or seconds at which no newer results will be returned. Can be used with `newer_than` to paginate by time. Also accepts an ISO date or RFC 3339 datetime (example: 2024-01-25).
1_715_083_417
limit
Default 100 Max 200 Min 1
optional
How many items to return. Default: 100. Max: 200. Min: 1.
10
Default:
100
>= 1
<= 200
Responses
200 422 500Response Body 200 OK
alert_rule
Alert Rule Name
The name of the alert rule.
RepeatedHits
all_opening_trades
Option Contract All Opening Trades
created_at
General UTC Timestamp
A UTC timestamp.
2023-12-12T16:35:52.168490Z
expiry
Option Contract Expiry
The contract expiry date in ISO format.
2023-12-22
expiry_count
Option Contract Expiry Count
The amount of expiries belonging to the trade. This is only greater than 1 if it is a multileg trade.
2
has_floor
Option Contract Has Floor
has_multileg
Single Trade Has Multileg
Whether the trade is a multileg trade.
has_singleleg
Single Trade Is Single Leg
Whether the trade is a singleleg trade.
true
has_sweep
Single Trade Is Sweep
Whether the trade is a sweep.
true
issue_type
Stock Issue Type
The issue type of the ticker.
Common Stock
open_interest
ToBeDone
option_chain
Option Contract Symbol
The option symbol of the contract. You can use the following regex to extract underlying ticker, option type, expiry & strike: `^(?<symbol>[\w]*)(?<expiry>(\d{2})(\d{2})(\d{2}))(?<type>[PC])(?<strike>\d{8})$` Keep in mind that the strike needs to be multiplied by 1,000.
price
ToBeDone
strike
Option Contract Strike
The contract strike.
375
ticker
ToBeDone
total_ask_side_prem
ToBeDone
total_bid_side_prem
ToBeDone
total_premium
ToBeDone
total_size
ToBeDone
trade_count
ToBeDone
type
Option Contract Type
The contract type.
call
underlying_price
ToBeDone
volume
ToBeDone
volume_oi_ratio
ToBeDone
curl -X GET "https://api.unusualwhales.com/api/option-trades/flow-alerts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"data": [
{
"alert_rule": "RepeatedHits",
"all_opening_trades": false,
"created_at": "2023-12-12T16:35:52.168490Z",
"expiry": "2023-12-22",
"expiry_count": 1,
"has_floor": false,
"has_multileg": false,
"has_singleleg": true,
"has_sweep": true,
"issue_type": "Common Stock",
"open_interest": 7913,
"option_chain": "MSFT231222C00375000",
"price": "4.05",
"strike": "375",
"ticker": "MSFT",
"total_ask_side_prem": "151875",
"total_bid_side_prem": "405",
"total_premium": "186705",
"total_size": 461,
"trade_count": 32,
"type": "call",
"underlying_price": "372.99",
"volume": 2442,
"volume_oi_ratio": "0.30860609124226"
}
]
}