# ⚡ Options Unusual Activity — Volume, OI, Sweep Tracker (`nexgendata/options-unusual-activity`) Actor

Track unusual options activity: high volume/OI ratios, large premium flows, calls vs puts skew, near-term expirations. Filter by strike, moneyness, days to expiration. Cheddar Flow / Unusual Whales alternative for options vol traders, retail trading apps, market-makers. Pay-per-result.

- **URL**: https://apify.com/nexgendata/options-unusual-activity.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 options activity records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## ⚡ Options Unusual Activity — Volume, OI, Sweep Tracker

Surface the contracts where the smart money is leaning. This actor crawls the live US options chain for a curated universe of the most liquid optionable underlyings (or for any tickers you specify), computes the canonical "unusual activity" signals on every contract — **volume / open-interest ratio**, **total premium traded**, **near-term DTE skew**, **moneyness**, **implied volatility** — and emits the contracts that pass your filters, ranked by a composite `unusual_score`.

### 📊 Sample Output

[![⚡ Options Unusual Activity — Volume, OI, Sweep Tracker sample output — ⚡ Options Unusual Activity — Volume, OI, Sweep Tracker, premium API, JSON output, NexGenData premium dataset for analysts, hedge ](https://api.apify.com/v2/key-value-stores/8gLgXMBveEI1tTz1z/records/options-unusual-activity-output.png)](https://apify.com/nexgendata/options-unusual-activity)

Unusual options activity is the single highest-signal flow indicator that public market data exposes for free. It's used by:

- **Options volatility traders** building directional theses or volatility-skew trades
- **Retail trading apps** (Robinhood / Webull / Public / Moomoo style) surfacing "where the action is" feeds for their users
- **Market-makers** monitoring single-name flow into their books to manage delta / gamma risk
- **Long/short hedge funds** layering options confirmation onto equity setups
- **Newsletter writers, quant researchers, and prop-shop developers** who need a programmable feed instead of a paid GUI

This actor is the **pay-per-result** alternative to Cheddar Flow ($75–$150/mo), Unusual Whales ($60–$120/mo), FlowAlgo ($75+/mo), and Bloomberg's $24K/year terminal. You pay **$0.10 per record** plus a $0.01 actor-start fee — typically a **$1–$10 query** for a fully-filtered, sorted unusual activity scan.

---

### What you get per record

Every emitted record is **one options contract** flagged as unusual, with full chain-quality context:

| Field | Meaning |
|---|---|
| `symbol`, `company_name`, `current_stock_price` | Underlying identity + live spot |
| `option_type` | `Call` or `Put` |
| `strike_price`, `expiration_date`, `days_to_expiration` | Contract specifics |
| `volume`, `open_interest` | Today's contract volume and OI |
| `volume_oi_ratio` | Today's volume / open interest — the primary "unusual" signal. > 2× is unusual, > 10× is highly unusual / probable sweep |
| `last_trade_price`, `bid`, `ask`, `mid` | Pricing context |
| `implied_volatility_pct` | Implied vol as a percentage |
| `delta`, `gamma`, `theta`, `vega` | First-order Greeks (where source provides them) |
| `total_premium_traded_usd` | `volume × 100 × mid` — actual dollars committed |
| `moneyness` | `ITM` (in-the-money), `ATM` (within 2.5%), `OTM` (out-of-the-money) |
| `unusual_score` | 0–100 composite score (see scoring formula below) |
| `occ_symbol` | Full OCC option symbol (e.g. `AAPL260619C00200000`) |
| `data_source`, `as_of_date`, `fetched_at_utc` | Provenance |

Records are returned **sorted by `unusual_score` descending**, so the top of the dataset is always the loudest flow first.

---

### Input parameters

| Parameter | Purpose | Default |
|---|---|---|
| `symbols` | Specific tickers to scan. Empty = sweep the curated 70-ticker high-volume universe. | `[]` |
| `limit` | Max records returned per run (billed at $0.10 each). | `25` |
| `option_type` | `all` / `Call` / `Put`. Calls dominating = bullish skew; puts = bearish / hedging skew. | `all` |
| `min_volume` | Minimum contract volume. Filters out illiquid noise. | `500` |
| `min_volume_oi_ratio` | Minimum vol / OI ratio. The canonical unusual threshold. | `2.0` |
| `max_days_to_expiration` | Cap DTE. Near-term flow (≤ 30 DTE) is often the strongest signal. `0` = no cap. | `60` |
| `min_open_interest` | Floor on OI — avoids inflated ratios on brand-new contracts. | `100` |
| `min_premium_traded_usd` | Floor on dollar premium traded. `$10K+` surfaces serious money. | `10000` |
| `moneyness` | `any` / `ITM` / `ATM` / `OTM`. Far-OTM unusual flow is the most speculative / highest-conviction. | `any` |

Every input parameter has a description and prefill — the actor is usable from the Apify console with zero configuration.

---

### How the `unusual_score` is computed

A 0–100 deterministic composite. Each component contributes to the total — no single dimension can dominate.

| Component | Points | Notes |
|---|---|---|
| Volume / OI ratio | 0–40 | Plateaus at 20× |
| Absolute volume | 0–20 | Plateaus at 10K contracts |
| Premium dollars | 0–25 | Logarithmic; $10K ≈ 10 pts, $100K ≈ 17 pts, $1M = 25 pts |
| DTE skew | 0–10 | Peak credit at 14–45 DTE (the unusual-flow sweet spot) |
| Moneyness skew | 0–5 | Slight premium for OTM (speculative) > ATM > ITM |

The score is intentionally tuned so a **single $100K OTM 30-DTE call with vol/OI = 15× on a $50B cap underlying** comes out as a 90+ — the textbook "unusual flow alert" shape.

---

### Vs. the paid competition

| Platform | Pricing | Strengths | Weaknesses |
|---|---|---|---|
| **Bloomberg Terminal** (OMON / OPSA) | $24,000/year per seat | Real-time order book, complete flow, OPRA tape | Terminal-only — no programmatic feed without separate $$ B-PIPE license |
| **Cheddar Flow** | $75–$150/month | Live flow alerts, scanners, sweep detection | Fixed monthly cost; GUI-first; API gated to top tier |
| **Unusual Whales** | $60–$120/month | Politician trades, dark-pool prints, options + crypto flow | Subscription model; high noise floor on free tier |
| **FlowAlgo** | $75+/month | Sweep / block alerts, level-2 context | Single-source dependency, API access is paid add-on |
| **Barchart Premier** | ~$40/month | Solid unusual-activity ranked list, downloadable CSV | Login-walled, IP-rate-limited, frequent dead lists during off-hours |
| **NexGenData Options Unusual Activity (this actor)** | **$0.10/record** | Pay-per-row, fully filterable, ranked by `unusual_score`, no subscription, full chain context | Delayed (not real-time tape), no sweep/block tagging (requires OPRA) |

Translation: if your use case is **screening / surveillance / historical pattern building**, this actor is the cheapest serious option on the market. If your use case is **real-time sub-second sweep detection**, you still need an OPRA-licensed feed — those start at $5K–$50K/month. We're explicitly the publicly-derivable "unusual volume by strike" tier of the stack.

---

### Example runs

#### Quick smoke test
```json
{ "limit": 10, "option_type": "all" }
````

10 highest-`unusual_score` rows across the default universe. Cost: $0.01 + 10 × $0.10 = **$1.01**.

#### Bullish call sweeps only, near-term

```json
{
  "option_type": "Call",
  "min_volume_oi_ratio": 5,
  "max_days_to_expiration": 30,
  "min_premium_traded_usd": 50000,
  "moneyness": "OTM",
  "limit": 50
}
```

Just calls, vol/OI ≥ 5×, expiring within 30 days, ≥ $50K premium committed, out-of-the-money — the canonical "smart money loading speculative directional calls" pattern. Cost: $5.01.

#### Bearish put hedging signal

```json
{
  "option_type": "Put",
  "min_volume_oi_ratio": 3,
  "moneyness": "OTM",
  "max_days_to_expiration": 45,
  "limit": 30
}
```

Far-OTM put flow with elevated vol/OI within ~6 weeks — what fund managers buy when they want crash protection. Cost: $3.01.

#### Single-name focus

```json
{
  "symbols": ["NVDA", "TSLA", "META"],
  "min_volume": 1000,
  "limit": 100
}
```

Drill into the unusual options chain on three specific underlyings (e.g. ahead of earnings). Cost: $10.01.

#### Pre-earnings scan

```json
{
  "symbols": ["AAPL"],
  "max_days_to_expiration": 7,
  "min_volume_oi_ratio": 4,
  "limit": 50
}
```

What's happening on the front-week AAPL chain — IV crush plays, gamma squeezes, post-earnings speculation. Cost: $5.01.

***

### Data sources

- **Primary**: `api.nasdaq.com/api/quote/{SYMBOL}/option-chain` — Nasdaq's public option-chain endpoint exposes the full options chain per underlying with bid/ask/last/volume/open-interest. Issued by the listing exchange. Public, no auth.
- **Fallback**: `cdn.cboe.com/api/global/delayed_quotes/options/{SYMBOL}.json` — CBOE delayed quotes feed. Adds per-contract Greeks (delta / gamma / theta / vega) and implied volatility on top of the same vol/OI signals. Public, no auth. Used when Nasdaq is unavailable for a symbol.
- **Routing**: requests are routed through the Apify residential US proxy pool when available, so a single-IP rate limit at either source does not interrupt the scan.
- **Per-row attribution**: every emitted record carries the originating `data_source` and a `source_url` so consumers can trace every signal back to the upstream feed.
- **Update cadence**: delayed (typically 15–20 minutes intraday). For real-time / live OPRA tape you need a licensed feed — not included.

The actor parses the **OCC option symbol** (e.g. `AAPL260619C00200000` → AAPL / 2026-06-19 / Call / $200) to derive strike, expiration, and option type. Nasdaq exposes these as separate fields; for CBOE we extract them from the OCC code.

***

### Use cases

- **Volatility traders**: programmatic feed of unusual contracts, ranked. Filter to OTM puts on indices for crash-protection demand, or OTM calls on single names for momentum loading.
- **Retail trading apps**: power a "Where the action is today" feed without paying a Cheddar Flow / Unusual Whales redistribution license.
- **Market-makers**: monitor single-name flow into your book — sized premium, OI build-up, IV pressure.
- **Quant researchers**: backtest "unusual activity precedes return" hypotheses with a clean schema across thousands of tickers.
- **Newsletter writers** (Seeking Alpha contributors, Substack stock-pickers): generate daily "Top 10 unusual options" digests with one $1 actor run.
- **Compliance / surveillance**: flag suspicious pre-event options accumulation for review.
- **AI / LLM agents**: a structured options-flow tool call ("what's unusual on $NVDA today?") that fits in a context window.

***

### Sister actors in the NexGenData equity-research fleet

This actor lives inside a fleet of pay-per-result US equity intelligence scrapers — combine them for full market-microstructure coverage:

- **[Short Interest Tracker](https://apify.com/nexgendata/short-interest-tracker)** — FINRA bi-monthly short interest, days to cover, squeeze score. Combine with unusual call flow to spot gamma squeeze setups.
- **[FinViz Stock Screener](https://apify.com/nexgendata/finviz-stock-screener)** — programmatic FinViz screener output: technicals, fundamentals, descriptive filters. The discovery layer above this flow data.
- **[SEC Form 4 Insider Tracker](https://apify.com/nexgendata/sec-form4-insider-tracker)** — corporate insider buys / sells. Insider buys + unusual call flow = highest-conviction long signal in the public-data stack.
- **[Earnings Calendar](https://apify.com/nexgendata/earnings-calendar)** — upcoming earnings dates with consensus EPS / revenue. Sync with this actor's `max_days_to_expiration` filter to scan pre-earnings IV setups.
- **[Analyst Price Targets](https://apify.com/nexgendata/analyst-price-targets)** — Wall Street consensus PTs, recent upgrades / downgrades. Catch analyst-revision-driven options flow.
- **[Finance MCP Server](https://apify.com/nexgendata/finance-mcp-server)** — wraps the whole equity fleet behind a Model Context Protocol server so Claude / Cursor / OpenAI agents can call every actor as a tool.

***

### Pricing model

**Pay-per-event**, transparent:

- `$0.01` per actor start (one-time, per run)
- `$0.10` per unusual options activity record emitted

A 10-row smoke test = $1.01. A 100-row deep scan = $10.01. A 1000-row scrape (full default universe, broad filters) = $100.01. No subscription, no commitments, no minimums.

***

### FAQ

**Is this real-time?** No — Nasdaq and CBOE delayed quotes are typically 15–20 minutes behind tape. For real-time you need an OPRA-licensed feed (starts at thousands per month). This actor covers the publicly-derivable "unusual volume by strike" signal, which is what 90% of unusual-activity use cases need.

**Can it detect sweep orders / block trades?** Not directly — sweep / block tagging requires reading the OPRA tape (where each individual trade's exchange split and trade-condition flags are recorded). This actor surfaces the **aggregate** unusual signal (vol/OI ratio + premium size + DTE skew) which is the closest free proxy.

**Why does premium use `mid` not `last`?** Mid-price reflects current consensus value. Last trade can be stale or off-market. Premium dollars compute as `volume × 100 × mid`, which is the standard "notional value committed today" measure.

**Why does my run return fewer rows than `limit`?** Filters might be too tight, the market might be closed (overnight runs see static OI / volume from prior session), or the underlying ticker might have no options listed. The actor logs each underlying's row count before/after filtering — check the run log.

**Can I scan my own watchlist?** Yes. Pass `symbols: ["TICKER1", "TICKER2", ...]` — the curated default universe is only used when `symbols` is empty.

**Is this allowed?** Yes — Nasdaq's `option-chain` and CBOE's `delayed_quotes` are both public, unauthenticated, CDN-fronted endpoints designed for public consumption. We rate-limit, randomize user agents, and route through Apify's residential proxy pool. No auth tokens are required.

***

### Get started

Run from the Apify console with prefilled defaults, or call via the API:

```bash
curl -X POST "https://api.apify.com/v2/acts/nexgendata~options-unusual-activity/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"limit": 25, "min_volume_oi_ratio": 3, "max_days_to_expiration": 45}'
```

Built and maintained by **NexGenData** — the pay-per-result equity intelligence fleet on Apify.

**👉 [Start free with $5 in Apify credit — referral link](https://apify.com/nexgendata?fpr=2ayu9b)**

# Actor input Schema

## `symbols` (type: `array`):

Limit the scan to a specific list of optionable US tickers (e.g. NVDA, TSLA, SPY, AAPL). Leave empty to sweep the curated high-volume optionable universe (mega-cap names + actively-traded ETFs).

## `limit` (type: `integer`):

Maximum number of unusual options activity records returned per run. Each record is billed at $0.10. Records are emitted ranked by unusual\_score descending. Use a small limit to validate output, then scale up.

## `option_type` (type: `string`):

Filter by option type. 'Call' returns only call options, 'Put' returns only puts, 'all' returns both. Calls dominating unusual flow = bullish skew, puts dominating = bearish/hedging skew.

## `min_volume` (type: `integer`):

Only return contracts where today's volume is at or above this threshold. Filters out low-liquidity noise. Typical unusual-activity threshold is 500+ contracts.

## `min_volume_oi_ratio` (type: `number`):

Only return contracts where today's volume divided by open interest is at or above this ratio. Vol/OI > 2 is typically unusual, > 10 is highly unusual (potential sweep / smart-money flow).

## `max_days_to_expiration` (type: `integer`):

Only return contracts that expire within this many days. Near-term unusual activity (DTE <= 30) is often the strongest directional signal. Set to 0 to disable the filter.

## `min_open_interest` (type: `integer`):

Only return contracts where open interest is at or above this threshold. Avoids brand-new contracts with tiny OI that produce inflated vol/OI ratios. Default 100.

## `min_premium_traded_usd` (type: `integer`):

Only return contracts where total premium traded today (volume x 100 x mid price) is at or above this dollar amount. Filters out small retail flow. $10K+ surfaces serious money.

## `moneyness` (type: `string`):

Filter by moneyness. ITM = in-the-money (intrinsic value), ATM = at-the-money (strike near spot), OTM = out-of-the-money (no intrinsic value). Far OTM unusual flow is often the most speculative / highest-conviction.

## Actor input object example

```json
{
  "symbols": [],
  "limit": 25,
  "option_type": "all",
  "min_volume": 500,
  "min_volume_oi_ratio": 2,
  "max_days_to_expiration": 60,
  "min_open_interest": 100,
  "min_premium_traded_usd": 10000,
  "moneyness": "any"
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "symbols": [],
    "limit": 25,
    "option_type": "all",
    "min_volume": 500,
    "min_volume_oi_ratio": 2,
    "max_days_to_expiration": 60,
    "min_open_interest": 100,
    "min_premium_traded_usd": 10000,
    "moneyness": "any"
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/options-unusual-activity").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "symbols": [],
    "limit": 25,
    "option_type": "all",
    "min_volume": 500,
    "min_volume_oi_ratio": 2,
    "max_days_to_expiration": 60,
    "min_open_interest": 100,
    "min_premium_traded_usd": 10000,
    "moneyness": "any",
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/options-unusual-activity").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "symbols": [],
  "limit": 25,
  "option_type": "all",
  "min_volume": 500,
  "min_volume_oi_ratio": 2,
  "max_days_to_expiration": 60,
  "min_open_interest": 100,
  "min_premium_traded_usd": 10000,
  "moneyness": "any"
}' |
apify call nexgendata/options-unusual-activity --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/options-unusual-activity",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "⚡ Options Unusual Activity — Volume, OI, Sweep Tracker",
        "description": "Track unusual options activity: high volume/OI ratios, large premium flows, calls vs puts skew, near-term expirations. Filter by strike, moneyness, days to expiration. Cheddar Flow / Unusual Whales alternative for options vol traders, retail trading apps, market-makers. Pay-per-result.",
        "version": "0.0",
        "x-build-id": "UY5Ffs4TunAZtlK4z"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~options-unusual-activity/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-options-unusual-activity",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/nexgendata~options-unusual-activity/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-options-unusual-activity",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/nexgendata~options-unusual-activity/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-options-unusual-activity",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "symbols": {
                        "title": "Specific tickers (optional)",
                        "type": "array",
                        "description": "Limit the scan to a specific list of optionable US tickers (e.g. NVDA, TSLA, SPY, AAPL). Leave empty to sweep the curated high-volume optionable universe (mega-cap names + actively-traded ETFs).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "limit": {
                        "title": "Maximum records to return",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of unusual options activity records returned per run. Each record is billed at $0.10. Records are emitted ranked by unusual_score descending. Use a small limit to validate output, then scale up.",
                        "default": 25
                    },
                    "option_type": {
                        "title": "Option type",
                        "enum": [
                            "all",
                            "Call",
                            "Put"
                        ],
                        "type": "string",
                        "description": "Filter by option type. 'Call' returns only call options, 'Put' returns only puts, 'all' returns both. Calls dominating unusual flow = bullish skew, puts dominating = bearish/hedging skew.",
                        "default": "all"
                    },
                    "min_volume": {
                        "title": "Minimum option volume",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Only return contracts where today's volume is at or above this threshold. Filters out low-liquidity noise. Typical unusual-activity threshold is 500+ contracts.",
                        "default": 500
                    },
                    "min_volume_oi_ratio": {
                        "title": "Minimum volume / open interest ratio",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "number",
                        "description": "Only return contracts where today's volume divided by open interest is at or above this ratio. Vol/OI > 2 is typically unusual, > 10 is highly unusual (potential sweep / smart-money flow).",
                        "default": 2
                    },
                    "max_days_to_expiration": {
                        "title": "Maximum days to expiration",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Only return contracts that expire within this many days. Near-term unusual activity (DTE <= 30) is often the strongest directional signal. Set to 0 to disable the filter.",
                        "default": 60
                    },
                    "min_open_interest": {
                        "title": "Minimum open interest",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Only return contracts where open interest is at or above this threshold. Avoids brand-new contracts with tiny OI that produce inflated vol/OI ratios. Default 100.",
                        "default": 100
                    },
                    "min_premium_traded_usd": {
                        "title": "Minimum total premium traded (USD)",
                        "minimum": 0,
                        "maximum": 100000000,
                        "type": "integer",
                        "description": "Only return contracts where total premium traded today (volume x 100 x mid price) is at or above this dollar amount. Filters out small retail flow. $10K+ surfaces serious money.",
                        "default": 10000
                    },
                    "moneyness": {
                        "title": "Moneyness filter",
                        "enum": [
                            "any",
                            "ITM",
                            "ATM",
                            "OTM"
                        ],
                        "type": "string",
                        "description": "Filter by moneyness. ITM = in-the-money (intrinsic value), ATM = at-the-money (strike near spot), OTM = out-of-the-money (no intrinsic value). Far OTM unusual flow is often the most speculative / highest-conviction.",
                        "default": "any"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
