---
name: statcan-monthly-retail-food-prices-ingestion
description: "How to get Statistics Canada Retail Food Prices data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load Canadian retail food prices into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/statcan-monthly-retail-food-prices
Provider: https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=1810024502
Checked against the provider's documentation: 2026-11-01

## Access
- No account or key. The official bulk ZIP contains the full CSV and a metadata CSV.

## Request
```bash
curl -O 'https://www150.statcan.gc.ca/n1/en/tbl/csv/18100245-eng.zip'
```

## Format
ZIP containing a CSV with reference month, geography, product, unit, scalar, vector, value and status fields, plus a metadata CSV.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""Statistics Canada monthly retail-price table 18-10-0245-01 -> pandas -> Parquet."""
import io
import zipfile
import requests
import pandas as pd

URL = "https://www150.statcan.gc.ca/n1/en/tbl/csv/18100245-eng.zip"
r = requests.get(URL, timeout=60)
r.raise_for_status()
with zipfile.ZipFile(io.BytesIO(r.content)) as z:
    df = pd.read_csv(z.open("18100245.csv"), low_memory=False)
df["REF_DATE"] = pd.to_datetime(df["REF_DATE"], format="%Y-%m")
df.to_parquet("statcan_monthly_retail_food_prices.parquet", index=False)
print(len(df), "rows", df["REF_DATE"].min().date(), "to", df["REF_DATE"].max().date(),
      df["GEO"].nunique(), "geographies", df["Products"].nunique(), "products")
```
Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 141432 rows 2017-01-01 to 2026-08-01 13 geographies 110 products

## Limits
- Rate limit: Not stated.
- The table is monthly; the tested bulk file contains 141,432 rows.
- Not all 110 prices are available for Yukon and the Northwest Territories because of confidentiality.

## Quirks
- These are category averages, not constant-quality indexes; composition and package mix can change over time.
- The retailer sample expanded for January 2024, affecting month-over-month and 12-month comparisons around that date.
- Product labels embed a specific or standardized package size and should not be stripped during grouping.

## Terms and attribution
- The Statistics Canada Open Licence permits reuse and value-added products under its conditions.
- The specified Statistics Canada source notice must be maintained.
- Terms page: https://www.statcan.gc.ca/en/terms-conditions/open-licence

## Sources
- https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=1810024502: "Prices are based on transaction data from Canadian retailers, and are presented in Canadian current dollars."
- https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=1810024502: "Data are subject to revision."
- https://www.statcan.gc.ca/en/terms-conditions/open-licence: "Reproduced and distributed on an "as is" basis with the permission of Statistics Canada."

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab-jet.vercel.app/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
