---
title: "Sector unusual-flow rollup"
method: GET
path: "/options-flow/sectors"
tags: ["Derived Analytics"]
---

# Sector unusual-flow rollup

`GET /options-flow/sectors`

## Request

- Base URL: `https://optionsbell.com/api/v1`
- URL: `https://optionsbell.com/api/v1/options-flow/sectors`
- Auth: API key in header `X-API-Key`

The day's unusual-flow premium, volume, average net delta and
bullish/bearish symbol counts per sector label, ordered by total
premium descending.

One row per label that had at least one symbol with unusual flow on
the day; labels with no activity are not returned (no zero rows).
Labels are the 11 GICS sectors (Communication Services, Consumer
Discretionary, Consumer Staples, Energy, Financials, Health Care,
Industrials, Information Technology, Materials, Real Estate,
Utilities) plus `Diversified` and `Unknown` as delivered by the
classification source, and `Unclassified` for symbols missing from
the sector map - at most 14 rows, so the default limit always returns
every group and `count` is the number of active labels.

## Query parameters

- `date` string, date
- `limit` integer

## Response `200`

Sector rows

- object
  - `date` string, date, nullable, required
  - `count` integer, required
  - `data` SectorRow[], required
    - `sector` string: GICS sector or `Unclassified`.
    - `symbol_count` string: Numeric string.
    - `total_volume` string: Numeric string.
    - `call_premium_usd` string: Numeric string.
    - `put_premium_usd` string: Numeric string.
    - `total_premium_usd` string: Numeric string.
    - `avg_net_delta` string, nullable: Numeric string.
    - `bullish_count` string: Numeric string.
    - `bearish_count` string: Numeric string.

## Other responses

- `400`: Invalid input: `INVALID_DATE`, `INVALID_PARAM`.
- `401`: Missing or invalid API key: `MISSING_API_KEY`, `INVALID_API_KEY_FORMAT`, `INVALID_API_KEY`. No rate-limit headers.
- `403`: Key is valid but has no usable subscription: `NO_ACTIVE_SUBSCRIPTION` (no Personal plan on the key) or `SUBSCRIPTION_INACTIVE` (past due, paused, expired, or canceled past its period end). No rate-limit headers.
- `429`: Rate limit exceeded: `RATE_LIMIT_MINUTE` (60/min) or `RATE_LIMIT_DAY` (4,000/day). Carries both rate-limit header sets and `Retry-After` (seconds until the exhausted window opens again). Rejected requests count against the minute window, so back off instead of retrying immediately.
- `500`: Unexpected server error: `INTERNAL_ERROR`. The body and the X-Request-Id header carry the request id.
- `503`: Authentication backend unreachable: `AUTH_UNAVAILABLE`. Retry later. No rate-limit headers.

---

[API](https://skmtc.dev/optionsbell/apis/optionsbell-options-flow-api.md) · [All operations](https://skmtc.dev/optionsbell/apis/optionsbell-options-flow-api/llms.txt) · [OpenAPI document](https://skmtc.dev/optionsbell/apis/optionsbell-options-flow-api/revisions/42db9bcaa61f?raw)
