I am repeatedly getting incorrect prices in kite through websocket and API calls where best bid price is higher than best ask price. This is an impossible scenario.
I have been getting this issue throughout the last 2 days, with multiple and different instruments every second
To verify if it is an exchange issue or broker issue whenever I received such a tick, I simultaneously placed an API call to kite and another broker to compare and the prices on second broker are always correct. So this is clearly a Zerodha issue and not an issue with the exchange feed.
For example, this is the quote sent for GOLD26JAN134000PE:
Kite showing best bid 14308.5 and best ask 78
{‘124050183’: {‘instrument_token’: 124050183, ‘timestamp’: datetime.datetime(2026, 1, 20, 15, 55, 9), ‘last_trade_time’: datetime.datetime(2026, 1, 20, 15, 54, 37), ‘last_price’: 87.5, ‘last_quantity’: 1, ‘buy_quantity’: 41, ‘sell_quantity’: 30, ‘volume’: 378, ‘average_price’: 64.01, ‘oi’: 235, ‘oi_day_high’: 274, ‘oi_day_low’: 235, ‘net_change’: 0, ‘lower_circuit_limit’: 0.5, ‘upper_circuit_limit’: 2124.5, ‘ohlc’: {‘open’: 72, ‘high’: 100, ‘low’: 50, ‘close’: 73.5}, ‘depth’: {‘buy’: [{‘price’: 14308.5, ‘quantity’: 2, ‘orders’: 2}, {‘price’: 78, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 79.5, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 74, ‘quantity’: 3, ‘orders’: 2}, {‘price’: 73.5, ‘quantity’: 1, ‘orders’: 1}], ‘sell’: [{‘price’: 74, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 86, ‘quantity’: 2, ‘orders’: 2}, {‘price’: 85, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 88, ‘quantity’: 2, ‘orders’: 1}, {‘price’: 91, ‘quantity’: 1, ‘orders’: 1}]}}}
Broker 2 showing best bid at 79.5 and best ask at 85
{‘message’: ‘’, ‘code’: 200, ‘d’: [{‘n’: ‘MCX:GOLD26JAN134000PE’, ‘v’: {‘ask’: 85, ‘bid’: 79.5, ‘chp’: 19.05, ‘ch’: 14, ‘description’: ‘MCX:GOLD26JAN134000PE’, ‘exchange’: ‘MCX’, ‘fyToken’: ‘1120260127484571’, ‘high_price’: 100, ‘low_price’: 50, ‘lp’: 87.5, ‘open_price’: 72, ‘original_name’: ‘MCX:GOLD26JAN134000PE’, ‘prev_close_price’: 73.5, ‘short_name’: ‘GOLD26JAN134000PE’, ‘spread’: 5.5, ‘symbol’: ‘MCX:GOLD26JAN134000PE’, ‘tt’: ‘1768867200’, ‘volume’: 378, ‘atp’: 64.01}, ‘s’: ‘ok’}], ‘s’: ‘ok’}
You can see best buy price as per kite is 14308.5 and best sell price as per kite is 78. This is an impossible situation as sell price always must be > buy price otherwise exchange will match the prices and trades will execute. Not just this, the best bid is higher than the upper circuit limit of 2124.5
On broker 2, best buy price (bid) is 61116 and best sell price (ask) is 63800 which is correct
Similarly, yesterday there are some ticks where Zerodha has sent price of NATURALGAS JANUARY FUTURE in the quote/websocket of NATURALGAS FEBRUARY FUTURE. The 1 tick where the mismatch has happened is showing higher volume than the entire day volume of the contract.
This is visible on the chart also
NATURALGAS26FEBFUT:
NATURALGAS26JANFUT:
**Anyone using these prices to trade/calculate indicators would have seen disastrous results. **
Raising the issues to support is pointless as they have no clue and no one from the tech side ever gets looped in. What is the solution here?
More examples:
GOLD26JAN137000PE on kite showing best bid 136.5 and best ask 131.5
{‘126231047’: {‘instrument_token’: 126231047, ‘timestamp’: datetime.datetime(2026, 1, 20, 15, 50, 20), ‘last_trade_time’: datetime.datetime(2026, 1, 20, 15, 50, 7), ‘last_price’: 137, ‘last_quantity’: 1, ‘buy_quantity’: 42, ‘sell_quantity’: 38, ‘volume’: 554, ‘average_price’: 108.67, ‘oi’: 447, ‘oi_day_high’: 487, ‘oi_day_low’: 447, ‘net_change’: 0, ‘lower_circuit_limit’: 0.5, ‘upper_circuit_limit’: 4580, ‘ohlc’: {‘open’: 116, ‘high’: 155.5, ‘low’: 84.5, ‘close’: 118}, ‘depth’: {‘buy’: [{‘price’: 136.5, ‘quantity’: 2, ‘orders’: 2}, {‘price’: 134.5, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 133.5, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 132, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 132, ‘quantity’: 2, ‘orders’: 1}], ‘sell’: [{‘price’: 131.5, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 140.5, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 142.5, ‘quantity’: 2, ‘orders’: 2}, {‘price’: 142.5, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 145, ‘quantity’: 2, ‘orders’: 1}]}}}
GOLD26JAN137000PE on broker 2 showing best bid 136.5 and best ask 140.5
{‘message’: ‘’, ‘code’: 200, ‘d’: [{‘n’: ‘MCX:GOLD26JAN137000PE’, ‘v’: {‘ask’: 140.5, ‘bid’: 136.5, ‘chp’: 16.1, ‘ch’: 19, ‘description’: ‘MCX:GOLD26JAN137000PE’, ‘exchange’: ‘MCX’, ‘fyToken’: ‘1120260127493090’, ‘high_price’: 155.5, ‘low_price’: 84.5, ‘lp’: 137, ‘open_price’: 116, ‘original_name’: ‘MCX:GOLD26JAN137000PE’, ‘prev_close_price’: 118, ‘short_name’: ‘GOLD26JAN137000PE’, ‘spread’: 4, ‘symbol’: ‘MCX:GOLD26JAN137000PE’, ‘tt’: ‘1768867200’, ‘volume’: 554, ‘atp’: 108.82}, ‘s’: ‘ok’}], ‘s’: ‘ok’}
SILVERM26JAN262000CE on kite showing best bid 92511.5 and best ask 63800
{‘130384135’: {‘instrument_token’: 130384135, ‘timestamp’: datetime.datetime(2026, 1, 20, 15, 27, 14), ‘last_trade_time’: datetime.datetime(2026, 1, 20, 14, 48, 10), ‘last_price’: 60980.5, ‘last_quantity’: 1, ‘buy_quantity’: 3, ‘sell_quantity’: 5, ‘volume’: 144, ‘average_price’: 59097.47, ‘oi’: 375, ‘oi_day_high’: 412, ‘oi_day_low’: 375, ‘net_change’: 0, ‘lower_circuit_limit’: 24619.5, ‘upper_circuit_limit’: 92511.5, ‘ohlc’: {‘open’: 52486.5, ‘high’: 69616.5, ‘low’: 52451, ‘close’: 51213.5}, ‘depth’: {‘buy’: [{‘price’: 92511.5, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 35000.5, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 35000, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 0, ‘quantity’: 0, ‘orders’: 0}, {‘price’: 0, ‘quantity’: 0, ‘orders’: 0}], ‘sell’: [{‘price’: 63800, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 63801, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 63826, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 63830, ‘quantity’: 1, ‘orders’: 1}, {‘price’: 86800, ‘quantity’: 1, ‘orders’: 1}]}}}
SILVERM26JAN262000CE on broker 2 showing best bid 61116 and best ask 63800
{‘message’: ‘’, ‘code’: 200, ‘d’: [{‘n’: ‘MCX:SILVERM26JAN262000CE’, ‘v’: {‘ask’: 63800, ‘bid’: 61116, ‘chp’: 19.07, ‘ch’: 9767, ‘description’: ‘MCX:SILVERM26JAN262000CE’, ‘exchange’: ‘MCX’, ‘fyToken’: ‘1120260127509313’, ‘high_price’: 69616.5, ‘low_price’: 52451, ‘lp’: 60980.5, ‘open_price’: 52486.5, ‘original_name’: ‘MCX:SILVERM26JAN262000CE’, ‘prev_close_price’: 51213.5, ‘short_name’: ‘SILVERM26JAN262000CE’, ‘spread’: 2684, ‘symbol’: ‘MCX:SILVERM26JAN262000CE’, ‘tt’: ‘1768867200’, ‘volume’: 144, ‘atp’: 59097.47}, ‘s’: ‘ok’}], ‘s’: ‘ok’}
Like I said, multiple examples every single second.



