free expiry day ↓

blog /

NIFTY expiry day 1-second data download: the final hour, one row per second

Download NIFTY 1-second option and index data for expiry days: what the files contain, how to slice the last hour, and how to resample to any bar size.

On expiry afternoon a cheap option can double and halve again inside a minute. One-minute bars show where it ended; one-second bars show the path. This guide covers what a NIFTY expiry day 1-second download holds and how to work with it.

What is in the 1-second files

Option files named like NIFTY_OPT_1sec_2025-10-14_exp2025-10-14.parquet hold the nearest NIFTY expiries with strikes around the money, one row per contract per second that traded. A matching NIFTY_SPOT_1sec_ file holds the index. Both are on the same IST clock.

Slice the last hour and resample

import pandas as pd

sec = pd.read_parquet("NIFTY_OPT_1sec_2025-10-14_exp2025-10-14.parquet")
sec["datetime"] = pd.to_datetime(sec["datetime"])
last = sec.set_index("datetime").between_time("14:30", "15:29:59")

# any bar size you like: 5 seconds, 15 seconds, 30 seconds
bars = (last.groupby(["strike_price", "right"])
            .resample("15s")["close"].ohlc()
            .dropna())

When it is worth it

Single years: 2024, 2025, 2026 to date, or the full 1-second archive from 2023.

FAQ

From when is NIFTY 1-second data available?

From January 2023, in single-year packs and a full-archive pack.

Does 1-second data include every strike?

It holds the nearest expiries with strikes around the money, which is where expiry-day trading happens.

Is this tick-by-tick data?

No. It is 1-second bars: open, high, low, close and volume for each second that traded.

more guides

Building an expiry-day dataset in Python: pandas and DuckDB recipesOne-second or one-minute bars for the last hour of expiry?Does NIFTY pin to max pain on expiry day? Testing it with open interest by strike