Skip to main content

How supermarket price files actually work

Published by SaveSmart4 min read

The Price Transparency Law requires every large chain to publish its prices in public files. Here is how that works in practice – a full snapshot every night, change files during the day, and why store selection moved an entire chain in our own ranking.

About the data in this article

Every price and gap in this article was measured on 17/08/2026, on a basket of 50 products, across 9 chains, from one representative store per chain, using the price files chains publish as required by the Price Transparency Law. This is a single day's measurement – not a live price, not an average, and not a promise that you will save the same amount.

What the law requires

The short answer: the Price Transparency Law requires large retail chains to publish, publicly and per individual store, the prices of every product they sell – in machine-readable files, updated at least daily, with no fee and no commercial registration.

That is the only reason comparing Israeli supermarket prices is possible at all without sending people to photograph shelves. The data is already there, in a reasonably uniform format, and anyone can download it – us and you alike.

In practice each chain publishes several families of files:

  • A full price snapshot – every product in the store with its current price. This is the file a basket comparison is built from.
  • A change file – only what has changed since the previous publication, during the day.
  • Promotion files – promotions and discounts, separate from the regular price, including their conditions.
  • A store file – the chain's list of stores with their identifiers. Without it there is no way to know which file belongs to which shop.

What it looks like in practice

The daily flow is simple in principle: a full snapshot is published for every store at night, and change files follow during the day. Anyone who wants an exact price for a given moment needs the nightly snapshot plus every change published after it. Anyone comparing baskets – as we do – works from the full snapshot, and states plainly which date it is from.

The files themselves are compressed XML, and the filename carries the important information: file type, chain identifier, store identifier, date and time. The problem is that the real structure does not always match the documentation, and that is not a theoretical remark.

A trap we fell into ourselves

One chain's filenames carry an extra identifier segment beyond the documented shape, and we read the wrong segment as the store identifier. The result: all 305 of that chain's price files looked like a single store, and the measurement ran against whichever was newest – which happened to be a small-format branch. A misread filename became a misranked chain.

Character encoding is a trap too: not every file uses the same one. We saw three – UTF-8, UTF-16, and Windows-1255. A wrong decode crashes nothing; it merely turns Hebrew product names into garbage, and then every name-based match fails silently. So the encodings have to be tried in a fixed order and fail loudly, rather than quietly carrying on with corrupted data.

Why the store matters as much as the chain

A chain is not one catalogue. Store format – large supermarket, neighbourhood shop, forecourt store – decides how many products are there at all, and how many products there are decides which basket can be measured. At two chains we saw a threefold range in catalogue size inside the same chain:

Catalogue size at different stores of the same chain, on 17/08/2026
ChainStore IDProducts in catalogue
Keshet Teamim1032,587
Keshet Teamim00115,832
Rami Levy7325,198
Rami Levy05715,022

And that carries a cost in the ranking. We first measured Rami Levy from a store with 5198 products, and it landed at position 4 – 31.2% above the cheapest. With a representative store of 15022 products it lands at position 2, only 3% above. Same chain, same day, two stores.

The first measurement covered 8 chains and the second 9, so the positions themselves are not strictly comparable – but the gap against the cheapest is: 31.2% versus 3%. That is not a rounding difference. On the strength of the first measurement we would have told people to drive past one of the cheapest chains in the country.

The rule we adopted because of it

Never measure a chain from an arbitrary store. Pick a representative store per chain – by format and by catalogue completeness – and in the real world also by proximity to the user, which is the same requirement from another angle: the relevant store is one you can actually get to.

What this means for price comparison

A second, less intuitive rule follows: you must not require a product to appear at every chain. When we took the barcode intersection across 10 chains, 4 products were left – because a forecourt store and a neighbourhood shop sell thousands of products, not tens of thousands. Restricted to 8 grocery chains of comparable format, 914 shared barcodes remained.

So a correct comparison engine prices each chain separately and reports how much of the basket it managed to cover – rather than shrinking the basket down to the smallest common denominator. A basket of 4 products has nothing to do with anyone's actual shopping.

And the third rule is about freshness: a price file is a snapshot, not a live feed. The price in the file was correct at the moment of publication and can change afterwards. That is why every figure we show comes with the date it was measured – not as a legal disclaimer, but because it is the only thing that makes the figure mean anything.

How to check us

  • The files are public. You can download your own store's price snapshot and see for yourself.
  • Our measurement was taken on 17/08/2026, on 50 products, across 9 chains, one representative store per chain.
  • Every figure on the site appears with its measurement date. No date, no figure.

And if you find that our calculation does not match the files – that is exactly what we want to hear. A measurement nobody can contradict is not a measurement, it is a slogan.

Want to check your own basket?

Build your own list and compare it across the chains – with the prices, and the date they were measured, shown alongside. No promises.