Price index · 2026

What does it cost today?

India publishes a CPI. It does not publish the prices underneath it. Bhav collects them — every night, from five retailers across 81 cities — canonicalises the SKUs so the same product matches across shops, and chains them into an index you can check.

Bhav on screen
5.0M
price observations
193,227
distinct SKUs, 41,588 canonical products
81
cities, 5 retailers
401,869
mandi quotes · 3,052 markets, 28 states
Built with
PythonPostgreSQLPlaywrightsystemdCaddy

The problem with counting prices

An index that grows its sample can fake a price move: add a cheap shop and inflation falls, add an expensive one and it rises. Bhav links only on shops matched across both periods, the way the RBI's own chained index does, so the frame can grow from 25 cities to 77 sites without moving the number.

Making the same product the same product

"Aashirvaad Atta 5kg" and "Aashirvaad Whole Wheat Flour 5 kg" are one SKU. Resolving that across 193,487 listings is the actual work. A local rule handles what it can and a model keys the rest — but 92% of parked SKUs were paying for a model call and then being refused by a rule anyway, so the filter now runs first. Re-keying 461 SKUs cost nothing after that, against a $26 re-buy.

The night it collected 8 sites out of 77

For nine nights the sweep visited a handful of cities and stopped. A refusal from one retailer made the worker take the next city instead of waiting, so both workers burned the entire frame against a single egress-wide cooldown. It now holds every worker and retries the same city, with a deadline coupled to the watchdog's orphan floor so the two alarms cannot disagree about whether a day happened.