---
title: "Pull option chains"
description: "Fetch index option chains, IV history and per-expiry analytics from the Tapetide API, and read the fields correctly."
canonical: "https://developers.tapetide.com/guides/option-chains/"
---

# Pull option chains

Three routes cover options:

| Route | What it returns | Coverage |
| --- | --- | --- |
| `GET /v1/options/{symbol}/chain` | Strike ladder with IV, Greeks, bid/ask, OI and volume | Index underlyings: NIFTY, BANKNIFTY, FINNIFTY, MIDCPNIFTY |
| `GET /v1/options/{symbol}/iv-history` | ATM IV, IV rank and percentile, realised vol, PCR, max pain, skew over time | About 556 underlyings including stocks |
| `GET /v1/stocks/{symbol}/options` | The same analytics per expiry for one underlying, latest snapshot | Stocks and indices with listed options |

## Fetch a chain

```bash
curl -s -H "Authorization: Bearer $TAPETIDE_TOKEN" \
  "https://api.tapetide.com/v1/options/NIFTY/chain?strikes=10"
```

Omit `expiry` for the nearest one. `strikes` is the number of strikes each side of ATM. The response lists every expiry in `available_expiries`, so a second call can target a later one:

```bash
curl -s -H "Authorization: Bearer $TAPETIDE_TOKEN" \
  "https://api.tapetide.com/v1/options/NIFTY/chain?expiry=2026-10-27&strikes=10"
```

Abridged response:

```json
{
  "data": {
    "underlying": "NIFTY",
    "expiry_date": "2026-10-19",
    "snapshot_ts": "2026-10-15 10:00:00+00",
    "grain": "eod",
    "spot": 22997.35,
    "atm_strike": 23000,
    "atm_iv_pct": 11.71,
    "pcr": 1.65,
    "max_pain_strike": 22900,
    "lot_size": 65,
    "ladder": [
      {
        "strike": 23000,
        "atm_offset": 0,
        "call": { "ltp": 91.85, "bid": 91.45, "ask": 91.85, "iv_pct": 8.05, "delta": 0.5496, "oi": 8564465, "iv_unsolved": false, "illiquid": false },
        "put":  { "ltp": 140,   "bid": 139.3, "ask": 140,   "iv_pct": 15.38, "delta": -0.4716, "oi": 5971355, "iv_unsolved": false, "illiquid": false }
      }
    ]
  }
}
```

## Read it correctly

-   **It is a snapshot, not a stream.** Quote `snapshot_ts` with any number you take from the chain.
-   **IV fields are percents.** `iv_pct: 8.05` means 8.05%. Do not multiply by 100.
-   **Nulls mean unpublished.** `iv_unsolved: true` means IV and Greeks are `null` for that leg (common deep in the money). `illiquid: true` means no OI or volume, so the premium is indicative. Render these as missing, never as `0`.
-   **`atm_offset`** is the signed distance in strikes from ATM, handy for selecting “ATM±2” without arithmetic on strike steps.

## IV history

```bash
curl -s -H "Authorization: Bearer $TAPETIDE_TOKEN" \
  "https://api.tapetide.com/v1/options/RELIANCE/iv-history?range=1y"
```

`range` of `2y` and longer returns weekly bars: read `bar_interval` before counting points as sessions. `iv_rank_pct` (position in the trailing high-low band) and `iv_percentile_pct` (share of sessions below today) are different measures, both in percent.

Data is for information only and is not investment advice.
