Canadian grocery price history
A price series can show how an observed listing changed. To use it well, keep the retailer identity, province and observation dates together.
Start with the question
For a product-level question, retrieve the history of a retailer SKU in one province. For a broad measure of price movement, use the weekly Canadian Grocery Price Index and its matched-model methodology. A single listing is not a national average.
Vynn collects retailer price observations on a scheduled reference-store panel. A requested lookback window does not guarantee a record on every date or for every product.
Request a product's history
Use a retailer SKU from a resolved product result. Replace RETAILER_SKU below and set VYNN_API_KEY privately in your server environment. Keep keys out of browser code, URLs and shared files.
curl --get 'https://vynn.ai/v1/prices/history' \
--data-urlencode 'product_id=RETAILER_SKU' \
--data-urlencode 'province=ON' \
--data-urlencode 'period=30d' \
--header "Authorization: Bearer $VYNN_API_KEY"product_id means the retailer's SKU here. A UPC barcode is not a substitute. The route also accepts an older parameter named upc, but it treats that value as a SKU; it does not resolve a barcode into a product.
The current public route accepts product_id, province and period. It does not accept a banner filter. Inspect each returned observation's banner before using the result as a series for one retailer.
Read the response without filling the gaps
Illustrative response using the API's field names. These sample values are not collected product data.
{
"sku": "SAMPLE_SKU",
"product_name": "Sample product",
"province": "ON",
"period_days": 30,
"observations": [
{
"date": "2026-08-31",
"price": 4.49,
"banner": "Sample retailer — Ontario"
},
{
"date": "2026-09-02",
"price": 4.79,
"banner": "Sample retailer — Ontario"
}
]
}In this example, the observed price is $4.49 on August 31 and $4.79 on September 2. There is no observation for September 1. You cannot infer that day's price, or when the change occurred, from these two records.
| Field | How to use it |
|---|---|
sku | The requested listing identifier. The same text at another retailer is not automatically the same product. |
province | The requested Canadian scope. It does not make the result representative of every store in that province. |
period_days | The lookback requested, not the number of observed days. |
observations | Dated prices with a banner where available. An empty array is not a zero price or evidence that the item was unavailable. |
Before charting or comparing
- Keep different returned banners in separate series. Do not join them into one continuous price line.
- If a banner is null, leave the observation unattributed. Do not assign it to the retailer you expected.
- Preserve missing dates. Any interpolation is your analysis, not an observed Vynn price.
- Confirm the product's package size and identity before comparing listings. A similar name alone does not establish equivalence.
This endpoint supplies dates, prices and banner context. It does not return a store identifier for each observation, transaction volume, or a guarantee of historical availability. If your analysis requires exact store-level series, establish that scope before choosing a delivery.