Zerodha or other broker don't provide data for expired contracts. You should reach out to authorized like vendors trudata/gdfl or buy it from a fellow trader who collects it. I bought it from trudata but they are not very affordable and from what I've heard recently they have stopped selling to indie traders at all.
For future, fetch and save all fno data on expiry day so you don't have to spend money on it later.
Depending on data vendors for historical data is an extremely bad way of development. They are charging heavily and squeezing us. A better way to do this is to just store tick data in the DB through WS for any use. The kite is sufficient for that use.
For future, fetch and save all fno data on expiry day so you don't have to spend money on it later.