---
title: "Ranked daily flow records"
method: GET
path: "/options-flow/signals"
tags: ["Options Flow"]
---

# Ranked daily flow records

`GET /options-flow/signals`

## Request

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

Stored flow records with screener confluence and subsequent price
data, ordered by signal_date desc, strength_score desc, symbol asc,
signal_type asc. `date_from` and `date_to` are inclusive and either
may be sent alone. Without both, the window starts 60 days before the
latest record day; the effective start is in
`meta.parameters.date_from` and is pinned by the cursor. Data only,
not a recommendation. Pro tier required.

## Query parameters

- `date_from` string, date
- `date_to` string, date
- `limit` integer
- `cursor` string

## Headers

- `If-None-Match` string

## Response `200`

Flow records

- object
  - `data` OptionsFlowRecord[], required
    - `symbol` string, required
    - `signal_date` string, date, required: Trading day of the record.
    - `signal_type` 'strong_bullish' | 'strong_bearish' | 'accumulation' | 'distribution' | 'high_vol_bullish' | 'high_vol_bearish' | 'bullish' | 'bearish', required: Classification of the day's flow by call/put ratio, streak, and volume.
    - `side` 'bullish' | 'bearish', required: `bullish` when the call/put volume ratio is above 1.
    - `call_put_ratio` number, nullable, required: Call/put volume ratio.
    - `call_put_oi_ratio` number, nullable, required: Call/put open-interest ratio.
    - `near_earnings` boolean, required: An earnings report falls within 14 days after the record date.
    - `next_earnings_date` string, date, nullable, required
    - `call_volume` integer, required
    - `put_volume` integer, required
    - `total_volume` integer, required
    - `total_oi` integer, required
    - `call_avg_iv` number, nullable, required: Average implied volatility of calls, in percent.
    - `put_avg_iv` number, nullable, required
    - `total_premium` number, nullable, required: Call plus put premium, USD.
    - `consecutive_days` integer, required: Streak length of the same flow regime up to the record date.
    - `signal_price` number, nullable, required: Underlying price on the record date.
    - `entry_price` number, nullable, required: Open of the first daily candle after the record was published. Null until that candle exists.
    - `entry_date` string, date, nullable, required
    - `net_delta` number, nullable, required
    - `avg_days_to_expiry` number, nullable, required
    - `strength_score` integer, required: Composite ranking score.
    - `bullish_screener_hits` integer, required
    - `bearish_screener_hits` integer, required
    - `bullish_screener_list` string[], required
    - `bearish_screener_list` string[], required
    - `market_breadth_score` integer, nullable, required
    - `market_call_put_ratio` number, nullable, required
    - `market_context` 'bullish_only' | 'bearish_only' | 'mixed' | 'null', nullable, required
    - `current_price` number, nullable, required: Latest daily close.
    - `high_since` number, nullable, required: Highest high since entry_date.
    - `low_since` number, nullable, required: Lowest low since entry_date.
    - `price_change_pct` number, nullable, required: (current_price - entry_price) / entry_price * 100.
    - `max_gain_pct` number, nullable, required: (high_since - entry_price) / entry_price * 100.
    - `max_drawdown_pct` number, nullable, required: (low_since - entry_price) / entry_price * 100.
    - `max_high_date` string, date, nullable, required
    - `min_low_date` string, date, nullable, 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.
      - `date_from` string, date, nullable, required
      - `date_to` string, date, 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)
