Indian Options Archive

Guides /

NIFTY strike-wise historical data download: one strike's full history in a few lines

Download NIFTY option history strike by strike: pull one strike's minute bars across its whole life, compare neighbouring strikes, and export to CSV.

Sometimes you want one contract, not the whole chain: the 25,000 call of a particular expiry, from the day it listed to the day it expired. Strike-wise history is a filter over the same files.

One strike across its life

from pathlib import Path
import pandas as pd

EXP, STRIKE, RIGHT = "2025-10-28", 25000, "Call"
files = sorted(Path("NIFTY").rglob(f"NIFTY_OPT_1min_*_exp{EXP}.parquet"))
one = pd.concat(
    pd.read_parquet(f, filters=[("strike_price", "==", STRIKE), ("right", "==", RIGHT)])
    for f in files)
one.to_csv(f"NIFTY_{EXP}_{STRIKE}_{RIGHT}.csv", index=False)

The filters argument reads only matching rows, so this is quick even over many files.

Neighbouring strikes

NIFTY strikes are 50 points apart. To compare the strikes around a level, filter with ("strike_price", "in", [24900, 24950, 25000, 25050, 25100]) and pivot on strike.

Older files

Earlier years use strike and option_type (CE/PE). Rename them after reading, or filter on those names.

Packs: any NIFTY option pack, for example 2024 or last 3 years.

Questions

Can I get historical data for a single NIFTY strike?

Yes. Every strike that traded is in the files, so one strike is a filter on strike, call or put, and expiry.

Does it include expired strikes?

Yes. Expired contracts are kept with every day they traded.

Can I export one strike to CSV?

Yes, as in the code above, or ask for CSV delivery of the whole pack.

Data for this guide

Or start with the free samples.

More guides