The Numbeo Supermarket Prices API returns what groceries and branded products cost in supermarkets around the world. Prices are collected automatically from online supermarkets, matched to the same product across stores, and returned as JSON: the median price across stores, together with the cheapest and the most expensive store price, in the local currency or any currency you choose. It is part of the Numbeo Data API.
You can browse the same data on the website: Grocery Prices and Branded Supermarket Prices.
All endpoints require an api_key parameter. Replace YOUR_API_KEY below with your own key. For every parameter, see the full API documentation.
Generic products grouped by category. The country can be a name or an ISO 3166 code; add currency to convert:
curl "https://www.numbeo.com/api/country_supermarket_prices?api_key=YOUR_API_KEY&country=Germany" curl "https://www.numbeo.com/api/country_supermarket_prices?api_key=YOUR_API_KEY&country=DE¤cy=USD"
Sample response (truncated):
{
"name": "Germany",
"country_code": "DE",
"currency": "EUR",
"last_update": "2026-10-23",
"price_index": { "index": 77.0, "low": 72.4, "high": 81.9, "rank": 31, "of": 77,
"items": 342, "coverage": 0.95, "currency": "EUR", "base": "US = 100" },
"categories": [
{
"category": "FRESH_PRODUCE",
"category_name": "Fresh Produce",
"prices": [
{
"gkey": "fruit_apple",
"name": "Apple",
"family": "Apple",
"median_price": 3.39,
"lowest_price": 1.59,
"highest_price": 3.48,
"currency": "EUR",
"ref_qty": 1,
"unit": "kg",
"per": "per 1 kg",
"stores": 7,
"listings": 52,
"as_of": "2026-10-23"
}
]
}
]
}
By default, branded products sold in at least 10 countries. Add all=true for every product, paged with offset and limit (up to 5000 per call); total tells you how many there are:
curl "https://www.numbeo.com/api/country_branded_supermarket_prices?api_key=YOUR_API_KEY&country=Spain" curl "https://www.numbeo.com/api/country_branded_supermarket_prices?api_key=YOUR_API_KEY&country=ES&all=true&offset=1000&limit=500"
Sample response (truncated):
{
"name": "Spain",
"country_code": "ES",
"total": 554,
"offset": 0,
"limit": 1000,
"last_update": "2026-10-23",
"price_index": { "index": 89.4, "low": 88.7, "high": 90.1, "rank": 137, "of": 153,
"items": 3998, "currency": "EUR", "base": "US = 100" },
"prices": [
{
"name": "Alpro Barista Oat Drink 1 l",
"brand": "Alpro",
"product_name": "Barista Oat Drink",
"generic_name": "Plant-Based Drink",
"category": "Food & Non-Alcoholic Drinks",
"pack": "1 l",
"pack_value": 1,
"pack_unit": "l",
"pack_count": 1,
"median_price": 2.29,
"lowest_price": 2.29,
"highest_price": 2.29,
"currency": "EUR",
"median_unit_price": 2.29,
"unit_price_unit": "l",
"stores": 2,
"listings": 2,
"as_of": "2026-10-23"
}
]
}
We collect product listings automatically from the websites of supermarkets in each country, recognise the same product across stores, and keep each store's price. The published price is the median across stores, so a single unusually cheap or expensive store does not move it; the lowest and highest store prices show the spread. Every price carries the date it was observed, and listings that have not been seen recently are dropped. Prices are in the currency the stores use; when you ask for another currency, each price is converted at current exchange rates and labelled with its currency.
See plans and pricing on the Numbeo Data API page, or read the complete API documentation for every available endpoint and parameter. Want to use our data in spreadsheets, or just for a one-time project? See the commercial Data License.
What is the difference between generic and branded prices?
Generic prices describe a kind of product (whole milk, apples, chicken breast) across all brands, quoted per reference quantity such as 1 kg or 1 l. Branded prices describe one specific product, such as a particular brand's oat drink in a 1 l pack, so you can compare exactly the same item between countries.
Which countries are covered?
Every country where we collect prices from online supermarkets. Each response lists the country's own products; the Supermarket Price Index and the Branded Products Price Index are included for countries with enough products to be indexed.
What does the median price mean?
It is the middle price across the stores selling the product: half of the stores charge less and half charge more. The lowest and highest prices show the cheapest and the most expensive store.
How often is the data updated?
Prices are collected continuously and the published figures are recomputed regularly. Every price carries an as_of date, and each response reports its last_update.
How do I track a branded product over time?
Match it on brand, product name and pack size. Generic products have a stable gkey key; branded products are identified by what they are, not by an internal number, because our internal product numbers can change as matching improves.
Is the Supermarket Prices API free?
Numbeo offers paid API plans with monthly request quotas. See the Numbeo Data API page for current plans and pricing.