# Grocery prices across major US and Canadian chains

> The same basket of everyday groceries priced each day at stores of the big US and Canadian chains. See which stores are cheap or dear on the map, compare one item chain by chain, and find the cheapest stores in each country.

Canonical page: https://scrapercompany.com/data/grocery-prices. Collected daily.

## About this data

Grocery prices differ from chain to chain, and often from one store of a chain to the next. Each day we price a common basket of staples, milk, eggs, bread, produce, meat, pantry goods and a few household items, at a spread of stores of each chain, so stores, banners, chains and regions can be compared on the same items.

Each price is the store’s price for that product as the chain’s own website or app shows it with that store selected, read once a day. For each basket item we take the store’s cheapest matching product, store brand or national brand. ScraperCompany is not affiliated with any of these chains.

## How to read it

- **The basket.** About 40 staples in each country: milk, large eggs, butter, cheddar, plain yogurt, white and whole wheat bread, bananas, apples, potatoes, onions, chicken breast, ground beef, rice, pasta, flour, sugar, coffee, frozen peas, toilet paper, dish soap and more. Not every store carries every item, so each index counts only the items a store priced.
- **Shelf and online prices.** The price a shopper pays in the store, or the chain’s own online price for that store. These are the default on the map and in the rankings.
- **Pickup and delivery prices.** Some chains publish only their pickup or delivery prices online. These usually include a service markup over the shelf price, so they are kept apart: each is compared only with other pickup or delivery prices.
- **The basket index.** For each store, the average of its prices over the country’s median price for the same items and the same kind of price (shelf, pickup or delivery), times 100. 100 is a median store; 95 is about 5% cheaper on the items it carries. A store needs at least 10 basket items priced to get an index.
- **Price scope.** Most chains price store by store. Some set one price for a region or the whole chain; their stores share a price, and a chain-wide price has no single location, so it is listed under the map instead of on it.
- **Sizes differ by country.** US items come in US sizes (a gallon of milk, a pound of butter) and Canadian items in metric ones (4 L, 454 g), priced in US or Canadian dollars, so each country is compared only with itself.
- **Sold by weight.** Produce and meat sold by weight (bananas, Gala apples, Roma tomatoes, chicken breast, lean ground beef) are compared per kg, from each chain’s own price per weight, so a chain that prices by the pound and one that prices by the kilogram line up. Everything else is compared per pack, and a price that is only an estimate for one piece is left out of pack comparisons.

## What the free summary holds

The keyless summary JSON (`https://api.scrapercompany.com/datasets/summary?name=grocery-prices`) carries, besides a sample of the latest prices:

- `basket`: each basket item's description, category, the countries it is priced in, and `per`: `kg` for produce and meat sold by weight (their `basket_items` prices are per kilogram), `pack` for everything else.
- `basket_items`: per basket item, country, chain and channel: the currency, how many stores priced it, and the lowest, median and highest price.
- `store_index`: per store and kind of price (shelf, pickup, delivery): the banner, name, city, state or province, latitude and longitude, price scope, how many basket items it priced, and its basket index (100 = the country's median store; lower is cheaper).

## Columns

- Product (`product_name`)
- Basket item (`basket_key`)
- Banner (`banner`)
- Store (`store_name`)
- City (`city`)
- State or province (`region`)
- Channel (`channel`)
- Price (`price`)
- Unit price (`unit_price`)
- Since (the day the value was first seen)
- Source of each row

## Sources

- [Loblaw banners (Loblaws, Real Canadian Superstore, No Frills, Maxi, Provigo and others)](https://www.loblaws.ca)
- [Wegmans](https://www.wegmans.com)
- [Whole Foods Market](https://www.wholefoodsmarket.com)
- [Kroger banners](https://www.kroger.com)
- [Aldi](https://www.aldi.us)
- [Sprouts](https://www.sprouts.com)
- [Meijer](https://www.meijer.com)
- [The Fresh Market](https://www.thefreshmarket.com)
- [Publix](https://www.publix.com)
- [Safeway](https://www.safeway.com)
- [Costco](https://www.costco.com)
- [T&T Supermarket](https://www.tntsupermarket.com)
- [Supermarché PA](https://www.supermarchepa.com)

## Get the data

- Latest values, free (a sample, keyless, rate limited per IP): `https://api.scrapercompany.com/datasets/summary?name=grocery-prices`
- Every item: `GET https://api.scrapercompany.com/v1/datasets/grocery-prices/latest`, 1 credit per call
- One item's history: `GET https://api.scrapercompany.com/v1/datasets/grocery-prices/history`, 1 credit per call
- Full history as SQLite: `GET https://api.scrapercompany.com/v1/datasets/grocery-prices/download`, 500 credits

Sources in one line: the websites and apps of Loblaw, Kroger, Wegmans, Whole Foods, Aldi, Costco and other major US and Canadian grocery chains. Sign-up: https://api.scrapercompany.com/signup. Pricing: https://scrapercompany.com/pricing. More datasets: https://scrapercompany.com/data.md

## Frequently asked questions

### Is the Grocery prices by store page free?

Yes. This page shows a sample of the latest build for free, with no account. To get every item, call GET /v1/datasets/grocery-prices/latest on the API for 1 credit per call.

### How often is it refreshed?

The data is collected daily. A value is stored only when it changes, with the first and last day it was seen, so the history is complete without repeating unchanged rows.

### Can I download the full history?

Yes. GET /v1/datasets/grocery-prices/download returns a short-lived link to the whole dataset as one SQLite file, every item and every recorded change since collection started, for 500 credits. Open it with sqlite3, DuckDB, pandas or Datasette.

### Where does the data come from?

It is collected from the websites and apps of Loblaw, Kroger, Wegmans, Whole Foods, Aldi, Costco and other major US and Canadian grocery chains, and every row records its source.

### Which grocery chain is cheapest?

It depends on the store and the item, which is why the page shows each store’s basket index rather than one answer per chain. The rankings list the cheapest and dearest stores in each country on shelf prices, and the comparison shows each chain’s lowest, median and highest price for one item.

### Can I compare US and Canadian prices?

Not directly. The basket uses each country’s usual sizes (a gallon of milk in the US, 4 L in Canada) and its own currency, so each store is compared with its own country’s median.
