---
title: "Unusual Whales"
description: "Options flow, dark pool, Congress trades, insider activity, Greek exposure, IV analytics, and market sentiment via the Unusual Whales API."
icon: "binoculars"
---

[Unusual Whales](https://unusualwhales.com) provides institutional-grade options flow data, dark pool prints, Congress and insider trading disclosures, Greek exposure analytics, and volatility surfaces.

## Setup

<Steps>
  <Step title="Get an API key">
    Sign up at [unusualwhales.com/pricing](https://unusualwhales.com/pricing?product=api) and get your API key from the [API dashboard](https://unusualwhales.com/settings/api-dashboard).
  </Step>
  <Step title="Set environment variable">
    ```bash
    export UNUSUAL_WHALES_API_KEY="your-api-key"
    ```
  </Step>
  <Step title="Start using">
    ```python
    from horizon.providers import UnusualWhalesProvider as UW

    flow = UW.options_flow(ticker="AAPL", min_premium=100000)
    ```
  </Step>
</Steps>

## Options Flow

The core feature — detect unusual options activity, sweeps, and large premium prints.

<Tabs>
  <Tab title="Python">
    ```python
    from horizon.providers import UnusualWhalesProvider as UW

    # All unusual flow
    flow = UW.options_flow(limit=50)

    # Filtered: AAPL call sweeps, $100k+ premium
    flow = UW.options_flow(
        ticker="AAPL",
        is_sweep=True,
        is_call=True,
        min_premium=100000,
    )

    # Flow for a specific ticker
    recent = UW.stock_flow("TSLA", min_premium=50000)
    ```
  </Tab>
  <Tab title="CLI">
    ```bash
    # All unusual flow
    horizon providers uw flow

    # Filtered
    horizon providers uw flow --ticker AAPL --sweep --calls --min-premium 100000

    # Per-ticker flow
    horizon providers uw stock-flow TSLA
    ```
  </Tab>
</Tabs>

**Filter parameters:**

| Parameter | Description |
|-----------|-------------|
| `ticker` | Filter by ticker symbol |
| `min_premium` | Minimum premium in dollars |
| `is_sweep` | Only sweep orders |
| `is_call` / `is_put` | Filter by option type |
| `is_otm` | Only out-of-the-money |
| `min_dte` / `max_dte` | Days to expiration range |
| `limit` | Number of results (default 50) |

## Dark Pool

Institutional block trades executed off-exchange.

<Tabs>
  <Tab title="Python">
    ```python
    # Market-wide dark pool prints
    prints = UW.dark_pool_recent()

    # Per-ticker with size filter
    nvda_dp = UW.dark_pool("NVDA", min_size=10000)
    ```
  </Tab>
  <Tab title="CLI">
    ```bash
    # Market-wide
    horizon providers uw dark-pool

    # Per-ticker
    horizon providers uw dark-pool NVDA --min-size 10000
    ```
  </Tab>
</Tabs>

## Congress Trades

Track stock trades disclosed by members of Congress (STOCK Act).

<Tabs>
  <Tab title="Python">
    ```python
    # Recent trades
    trades = UW.congress_trades(limit=20)

    # Filter by ticker
    nvda = UW.congress_trades(ticker="NVDA")

    # Specific member
    pelosi = UW.congress_trader("Pelosi")
    ```
  </Tab>
  <Tab title="CLI">
    ```bash
    horizon providers uw congress
    horizon providers uw congress --ticker NVDA
    horizon providers uw congress --name "Pelosi"
    ```
  </Tab>
</Tabs>

## Insider Transactions

SEC Form 4 filings — officer, director, and 10% owner trades.

<Tabs>
  <Tab title="Python">
    ```python
    # Large insider buys
    insiders = UW.insider_trades(min_value=1000000, limit=20)

    # Per-ticker, officers only
    aapl = UW.insider_trades(ticker="AAPL", is_officer=True)
    ```
  </Tab>
  <Tab title="CLI">
    ```bash
    horizon providers uw insiders --min-value 1000000
    horizon providers uw insiders --ticker AAPL --officer
    ```
  </Tab>
</Tabs>

## Greek Exposure & IV

Options positioning analytics — gamma exposure (GEX), delta exposure (DEX), IV rank, and term structure.

<Tabs>
  <Tab title="Python">
    ```python
    # Aggregate Greek exposure
    gex = UW.greek_exposure("SPY")

    # By strike
    gex_strikes = UW.greek_exposure_by_strike("SPY")

    # IV rank (percentile)
    iv = UW.iv_rank("TSLA")

    # Term structure
    term = UW.vol_term_structure("AAPL")

    # Max pain
    pain = UW.max_pain("SPY")
    ```
  </Tab>
  <Tab title="CLI">
    ```bash
    horizon providers uw greeks SPY
    horizon providers uw greeks SPY --by-strike
    horizon providers uw iv TSLA
    horizon providers uw max-pain SPY
    ```
  </Tab>
</Tabs>

## Short Interest

Short interest, short volume, and failures to deliver.

<Tabs>
  <Tab title="Python">
    ```python
    si = UW.short_interest("GME")
    vol = UW.short_volume("AMC")
    ftds = UW.ftd("TSLA")
    ```
  </Tab>
  <Tab title="CLI">
    ```bash
    horizon providers uw shorts GME
    ```
  </Tab>
</Tabs>

## Market Sentiment

Proprietary market-wide indicators.

<Tabs>
  <Tab title="Python">
    ```python
    # Market Tide (net premium flow)
    tide = UW.market_tide()

    # SPIKE volatility indicator
    spike = UW.spike()
    ```
  </Tab>
  <Tab title="CLI">
    ```bash
    horizon providers uw tide
    horizon providers uw spike
    ```
  </Tab>
</Tabs>

## Screeners

Scan stocks and option chains for setups.

<Tabs>
  <Tab title="Python">
    ```python
    # Stock screener
    stocks = UW.screener_stocks()

    # Hottest option chains
    options = UW.screener_options(min_premium=500000, is_otm=True)
    ```
  </Tab>
  <Tab title="CLI">
    ```bash
    horizon providers uw screener --type stocks
    horizon providers uw screener --type options --min-premium 500000
    ```
  </Tab>
</Tabs>

## Calendars & Earnings

Economic events, FDA catalysts, and earnings schedules.

<Tabs>
  <Tab title="Python">
    ```python
    econ = UW.economic_calendar()
    fda = UW.fda_calendar()
    earnings = UW.earnings("AAPL")
    premarket = UW.earnings_premarket()
    ```
  </Tab>
  <Tab title="CLI">
    ```bash
    horizon providers uw calendar --type economic
    horizon providers uw calendar --type fda
    horizon providers uw earnings AAPL
    horizon providers uw earnings --schedule premarket
    ```
  </Tab>
</Tabs>

## Additional Endpoints

| Function | Description |
|----------|-------------|
| `UW.stock_info(ticker)` | Stock information (price, market cap, sector) |
| `UW.stock_state(ticker)` | Current stock state |
| `UW.option_chains(ticker)` | Full option chains |
| `UW.institutions()` | List tracked institutions |
| `UW.institution_holdings(name)` | Holdings for an institution |
| `UW.institution_ownership(ticker)` | Institutional ownership of a ticker |
| `UW.etf_holdings(ticker)` | ETF holdings breakdown |
| `UW.etf_flow(ticker)` | ETF inflow/outflow |
| `UW.seasonality(ticker)` | Monthly return seasonality |
| `UW.news()` | Financial news headlines |
| `UW.prediction_whales()` | Prediction market whales |
| `UW.prediction_unusual()` | Unusual prediction market activity |
| `UW.crypto_whales()` | Recent crypto whale transactions |

## Rate Limits

| Limit | Value |
|-------|-------|
| Daily requests | 15,000 |
| Per-minute | 120 |
| Daily reset | 8 PM ET |

Rate limit headers are returned with every response: `x-uw-daily-req-count`, `x-uw-req-per-minute-remaining`.

## MCP Tools

All functions are available as MCP tools with the `uw_` prefix:

```
uw_options_flow, uw_stock_flow, uw_dark_pool, uw_congress_trades,
uw_congress_trader, uw_insider_trades, uw_market_tide, uw_spike,
uw_economic_calendar, uw_stock_info, uw_greek_exposure, uw_iv_rank,
uw_vol_term_structure, uw_max_pain, uw_short_interest,
uw_screener_options, uw_earnings, uw_etf_holdings, uw_seasonality,
uw_news, uw_prediction_unusual
```
