---
title: "Unusual contract activity"
method: GET
path: "/options-flow/unusual"
tags: ["Options Flow"]
---

# Unusual contract activity

`GET /options-flow/unusual`

## Request

- Base URL: `https://stockmarketscan.com/api/v1`
- URL: `https://stockmarketscan.com/api/v1/options-flow/unusual`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer
  - API key in header `X-RapidAPI-Key`

Individual option contracts from the latest trading day, ranked by
vol/OI times ln(premium), descending (ties by contract id). All filters
apply before paging. Fixed floor: open interest at least 100. The cursor
pins the trading day. Pro tier required.

## Query parameters

- `symbol` string
- `side` 'call' | 'put' | 'both'
- `min_vol_oi` number
- `min_premium_usd` number
- `max_dte` integer
- `limit` integer
- `cursor` string

## Headers

- `If-None-Match` string

## Response `200`

Unusual contracts

- object
  - `data` UnusualContract[], required
    - `symbol` string, required
    - `option_symbol` string, nullable, required
    - `symbol_type` 'Call' | 'Put' | 'null', nullable, required
    - `base_last_price` number, nullable, required: Underlying price.
    - `strike_price` number, nullable, required
    - `expiration_date` string, date, nullable, required
    - `days_to_expiration` integer, nullable, required
    - `last_price` number, nullable, required
    - `bid_price` number, nullable, required
    - `midpoint` number, nullable, required
    - `ask_price` number, nullable, required
    - `volume` integer, nullable, required
    - `open_interest` integer, nullable, required
    - `volume_oi_ratio` number, nullable, required
    - `volatility` number, nullable, required: Implied volatility in percent.
    - `delta` number, nullable, required
    - `trade_time` string, nullable, required: As delivered by the source: a date ("09/03/26") or a time ("16:00 ET").
    - `data_date` string, date, required
  - `meta` object, required: Response metadata. Endpoint-specific keys are documented per operation.
    - `as_of` string, date, nullable, required: Trading date of the underlying data. Null when there is no data.
    - `generated_at` string, date-time, required: When this response was produced (RFC 3339 UTC).
    - `pagination` Pagination, required: Present on list endpoints. Follow `next_cursor` until it is null.
      - `limit` integer, required: Page size that was applied.
      - `next_cursor` string, nullable, required: Cursor for the next page; null on the last page.
      - `total` integer: Rows across all pages. Only where it is cheap and exact.
    - `parameters` object, required: Parameters applied after defaults.
      - `symbol` string, nullable, required
      - `side` 'call' | 'put' | 'both', required
      - `min_vol_oi` number, required
      - `min_premium_usd` number, required
      - `max_dte` integer, nullable, required
      - `limit` integer, required

## Other responses

- `304`: Not modified since the ETag in `If-None-Match`. No body; not counted against your quota.
- `400`: Invalid parameter, cursor or body. Not counted against your quota.
- `401`: Missing or invalid credentials.
- `403`: Your plan does not include this endpoint or screener. Not counted against your quota.
- `429`: Rate limit or quota exceeded. `Retry-After` says when to retry.
- `500`: Unexpected server error. Quote `request_id` when reporting it.
- `503`: A dependency (database or key store) is unavailable.

---

[API](https://skmtc.dev/stockmarketscan/apis/stockmarketscan-api.md) · [All operations](https://skmtc.dev/stockmarketscan/apis/stockmarketscan-api/llms.txt) · [OpenAPI document](https://skmtc.dev/stockmarketscan/apis/stockmarketscan-api/revisions/2cca1387a5fe?raw)
