---
title: "Daily market call/put statistics"
method: GET
path: "/options-flow/sentiment"
tags: ["Options Flow"]
---

# Daily market call/put statistics

`GET /options-flow/sentiment`

## Request

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

One row per trading day, newest first. `date_from` and `date_to` are
inclusive and either may be sent alone; without both, the last 60 days
before the latest day. Pro tier required.

## Query parameters

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

## Headers

- `If-None-Match` string

## Response `200`

Daily statistics

- object
  - `data` SentimentDay[], required
    - `date` string, date, required
    - `market_breadth_score` integer, nullable, required: Combined advance/decline and new-highs/new-lows score, 0 to 100.
    - `market_call_put_ratio` number, nullable, required: Market-wide call volume divided by put volume.
    - `context` 'bullish_only' | 'bearish_only' | 'mixed', required
    - `bullish_count` integer, required
    - `bearish_count` integer, required
    - `sentiment_score` integer, required: clamp(round((market_call_put_ratio - 0.5) * 100), 0, 100); 50 when the ratio is missing.
    - `sentiment_label` 'bullish' | 'neutral' | 'bearish', required: 65 and above bullish, 45 to 64 neutral, below 45 bearish.
  - `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)
