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.