---
title: "F&O securities in ban and near it"
method: GET
path: "/v1/market/fno-ban"
tags: ["market"]
---

# F&O securities in ban and near it

`GET /v1/market/fno-ban`

## Request

- Base URL: `https://api.tapetide.com`
- URL: `https://api.tapetide.com/v1/market/fno-ban`
- Auth: HTTP bearer

Securities on the exchange's published F&O ban list for the latest trading day, plus those approaching it (open interest at or above 80% of the market-wide position limit). Banned first, then by utilisation. A ban is only ever taken from the published list, never inferred from utilisation. When the newest published list is more than 4 days old or unavailable, `meta.ban_list_stale` is true and the endpoint still returns the securities at or above 80% of the limit, each with `status` null (unknown), never a guessed ban; the old list's symbols are in `meta.stale_ban_list`. A cursor keeps the dates of its first page, so a new trading day arriving mid-walk does not mix two days.

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` FnoBanItem[], required
    - `symbol` string, required: Stock symbol.
    - `name` string, nullable, required: Company name.
    - `isin` string, nullable, required: ISIN.
    - `status` 'in_ban' | 'near_ban', nullable, required: in_ban = on the exchange's published ban list for `ban_list_date`; near_ban = not banned but open interest is at or above 80% of the market-wide position limit. null = unknown: the published list is stale or unavailable (`meta.ban_list_stale`), so a ban can be neither confirmed nor ruled out.
    - `ban_since` string, nullable, required: First trading day of the current consecutive ban (in_ban rows only).
    - `mwpl_utilisation_pct` number, nullable, required: Futures-equivalent open interest as % of the market-wide position limit on `mwpl_date`.
    - `prev_mwpl_utilisation_pct` number, nullable, required: The same figure for the previous trading day.
    - `ltp` number, nullable, required: Last close, INR.
    - `change_pct` number, nullable, required: Day change at that close, percent.
    - `high_52w` number, nullable, required: 52-week high, INR.
    - `low_52w` number, nullable, required: 52-week low, INR.
    - `ban_list_date` string, nullable, required: Trading day the published ban list is for; null when the list is stale or unavailable (then `status` is null too).
    - `mwpl_date` string, nullable, required: Trading day the position-limit figures are for.
  - `meta` object, required
    - `as_of` string, date-time, required: When this response was assembled (UTC).
    - `route` string, required: operationId that served the request.
    - `count` integer, required: Items in this page.
    - `limit` integer, required: Page size applied.
    - `has_more` boolean, required: Whether another page exists.
    - `next_cursor` string, nullable, required: Pass as `cursor` to fetch the next page; null on the last page.
    - `mwpl_date` string, nullable, required: Trading day the position-limit figures are for; null when none is published.
    - `ban_list_date` string, nullable, required: Trading day of the newest published ban list, even when it is stale; null when none is available.
    - `ban_list_stale` boolean, required: true when the newest published ban list is older than 4 days or unavailable. Rows are then only the securities at or above 80% of the position limit, all with status null; no ban is inferred from utilisation.
    - `stale_ban_list` string[], nullable, required: When `ban_list_stale` is true: the symbols on that old list, for reference only (not a current ban). null otherwise.
  - `links` Links, required
    - `next` string, nullable: Relative URL of the next page, or null.

## Other responses

- `400`: Malformed or out-of-range parameter. Not charged.
- `401`: Missing or invalid bearer token.
- `404`: The requested resource does not exist. Not charged.
- `429`: Per-minute burst cap (`rate_limited`) or plan quota (`quota_exhausted`) reached.
- `500`: Unexpected server error. Not charged.
- `502`: A data dependency was unavailable. Not charged.
- `503`: Authentication or quota service temporarily unavailable (`service_unavailable`). Not charged; retry after `Retry-After` seconds.

---

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