image

Options flow analysis is the practice of tracking institutional trading activity to gauge market sentiment. Because institutional traders, often referred to as "smart money", move large amounts of capital, their trades can significantly impact stock prices. By monitoring specific trade conditions, developers can build tools to identify Block Trades and Sweep Orders.

A Block Trade is a privately negotiated order executed apart from the public auction market, typically involving a large volume of contracts printed on a single exchange. In contrast, a Sweep Order indicates an aggressive buyer or seller who splits a large order across multiple exchanges to fill the position as quickly as possible, often signaling an expectation of immediate price movement.

Obtain API key:
Get your SteadyAPI key


The Endpoint

To access this data programmatically, SteadyAPI provides the GET /v1/markets/options/options-flow endpoint. This endpoint returns significant option transactions across various US option exchanges, allowing you to analyze strikes, premiums, and trade sides.

Documentation:
SteadyAPI Options Flow Endpoint Documentation


Detailed Parameter Analysis

To filter the flow data effectively, you must understand the required and optional parameters:

  • type: This required parameter defines the asset class you wish to filter. Accepted values are STOCKS, ETFS, or INDICES.
  • page: This optional integer allows you to paginate through the flow data to retrieve older transactions from the current trading session.

Python Example

The following script demonstrates how to fetch the latest options flow and filter for "Whale" trades, transactions with a premium value greater than $100,000.

import requests
import json

# Configuration
url = 'https://api.steadyapi.com/v1/markets/options/options-flow'
api_key = 'YOUR_AUTH_KEY'  # Replace with your actual API Key

# Parameters
params = {
    'type': 'STOCKS',
    'page': '1'
}

headers = {
    'Authorization': f'Bearer {api_key}'
}

try:
    response = requests.get(url, headers=headers, params=params)
    response.raise_for_status()
    data = response.json()

    print(f"Tracking Large Block Trades (Premium > $100k)...\n")

    # Iterate through the body of the response
    for trade in data.get('body', []):
        # Clean premium string (e.g., "$41,500,000") to float for comparison
        premium_str = trade.get('premium', '$0').replace('$', '').replace(',', '')
        premium_val = float(premium_str)

        # Filter for high-value trades
        if premium_val > 100000:
            print(f"Symbol: {trade['baseSymbol']}")
            print(f"Contract: {trade['expiration']} ${trade['strikePrice']} {trade['symbolType']}")
            print(f"Side: {trade['side'].upper()} | Condition: {trade['tradeCondition']}")
            print(f"Premium: {trade['premium']}")
            print("-" * 30)

except requests.exceptions.RequestException as e:
    print(f"Error fetching data: {e}")

Understanding the Response

The API returns a JSON object containing metadata and a body array of trade objects. Below is the structure you can expect:

{
  "meta": {
    "version": "v1.0",
    "status": 200,
    "copywrite": "https://steadyapi.com",
    "count": 20,
    "total": 11984,
    "page": "1"
  },
  "body": [
    {
      "symbol": "AMD|20240621|150.00C",
      "baseSymbol": "AMD",
      "symbolType": "Call",
      "strikePrice": "150.00",
      "expiration": "06/21/24",
      "tradePrice": "41.50",
      "tradeSize": "10,000",
      "side": "ask",
      "premium": "$41,500,000",
      "tradeCondition": "SLCN",
      "tradeTime": "02/22/24 12:23:58"
    }
  ]
}

Key Fields

To build an effective analysis tool, you must interpret these specific fields correctly:

  • premium: The total notional value of the trade. High premiums indicate high conviction from the institutional trader.
  • tradeSize: The number of contracts exchanged in a single transaction.
  • side: Indicates whether the trade occurred at the ask (buying pressure), bid (selling pressure), or mid (neutral). Trades executed at the Ask are generally considered aggressive bullish bets for Calls or bearish bets for Puts.
  • tradeCondition: Codes such as SLCN (Sold Last Sale) or SLFT (Sold Last Form T) provide context on how the trade was reported to the exchange.
  • expiration: Helps determine the time horizon of the sentiment. Short-term expirations suggest an immediate expected move, while LEAPS (long-term expirations) suggest a structural position.

Practical Use Cases

Whale Watching Algorithms

By setting a high threshold for the premium field (e.g., $1M+), developers can create alerts for massive capital inflows, allowing retail traders to see where "smart money" is positioning.

Sentiment Analysis based on Put/Call Flow

You can aggregate the total premium of Calls versus Puts over a rolling time window. If the Call Premium on the "Ask" side significantly outweighs the Put Premium, it generates a bullish flow signal for that specific ticker.


Learn more or explore other endpoints:
SteadyAPI Stock and Options Data API

How to Search Rental Listings Using SteadyAPI Oct 14, 2026

How to Search Rental Listings Using SteadyAPI

Search rental listings by location. Show price.display, and move to the next page with offset.

How to Get a Property Estimate Using SteadyAPI Oct 14, 2026

How to Get a Property Estimate Using SteadyAPI

Current and historical value for one property id. The optional bounds are calendar dates, not year counts.

How to Get an NHL Roster Using SteadyAPI Oct 12, 2026

How to Get an NHL Roster Using SteadyAPI

Load forwards, defensemen, and goalies for one NHL abbreviation. Player names are objects with a default field.

How to Estimate Vehicle Depreciation Using SteadyAPI Oct 11, 2026

How to Estimate Vehicle Depreciation Using SteadyAPI

Project trade-in value across years from a vehicle id, mileage, and condition. Mileage here is an integer.