Canadian retail-trade demand intelligence (monthly, StatCan)
Monthly Canadian retail-demand intelligence from Statistics Canada's Retail Trade survey (table 20-10-0056-01, dollars, seasonally adjusted): total retail sales [44-45] AND retail e-commerce sales for Canada and the 13 provinces/territories over the trailing 120 months. Per geography x month: total and e-commerce sales levels, MoM and YoY growth, 3-month-moving-average YoY momentum, e-commerce share of retail (the online-penetration read), share of national sales, December-share seasonality fingerprint, a documented 0-100 retail-demand score with per-month provincial ranks, demand surge/slump and 12-month record flags, and month-level sales breadth. Current dollars: the YoY read mixes price and volume. Statistics Canada Open Licence (commercial reuse allowed); source: Statistics Canada.
- Source
- Statistics Canada
- Rows
- 1,610
- Columns
- 24
- Source cadence
- Monthly
- Last refreshed
- Oct 2, 2026
- Theme
- retail
| Column | Type | Description |
|---|---|---|
| month | date | date (unit: Reference month (first day of month). Monthly, seasonally adjusted StatCan retail estimates.) |
| country_code | string | string (unit: Constant "CAN" (ISO alpha-3) so the rows join cleanly against other normalized hub datasets.) |
| province_code | string | string (unit: ISO 3166-2 geography code: CA for the Canada total, CA-ON / CA-QC / ... for the 10 provinces, CA-YT / CA-NT / CA-NU for the territories.) |
| province_name | string | string (unit: Canonical province/territory name.) |
| retail_sales | float | number (unit: Total retail-trade [44-45] sales (current dollars), monthly, seasonally adjusted, by location of the retailer. Never imputed.) |
| ecom_sales | float | number (unit: Retail e-commerce sales (current dollars), monthly, seasonally adjusted. Published by StatCan at the Canada level only (Canadian-based retailers; foreign-based retailers excluded), so this is null on every province/territory row by design. Never imputed.) |
| ecom_share_pct | float | number (unit: E-commerce's share of total retail sales that month, in percent — the online-penetration read shops watch. Canada row only; null on province/territory rows by design.) |
| sales_mom_pct | float | number (unit: Month-over-month percent change of total retail sales (seasonally adjusted).) |
| sales_yoy_pct | float | number (unit: Year-over-year percent change of total retail sales.) |
| sales_yoy_3mma_pct | float | number (unit: 3-month moving average of sales_yoy_pct: the noise smoother for the YoY read.) |
| ecom_mom_pct | float | number (unit: Month-over-month percent change of retail e-commerce sales (seasonally adjusted).) |
| ecom_yoy_pct | float | number (unit: Year-over-year percent change of retail e-commerce sales.) |
| ecom_yoy_3mma_pct | float | number (unit: 3-month moving average of ecom_yoy_pct: the noise smoother for the e-commerce YoY read.) |
| sales_share_national_pct | float | number (unit: The geography's share of national retail sales that month, in percent. Null on the Canada row.) |
| dec_share_pct | float | number (unit: Seasonality fingerprint: the month's share of the trailing-12-month total sales for that geography, in percent (December lifts and summer dips show up here). Null until 12 months of history are available.) |
| demand_score | float | number (unit: Documented 0-100 retail-demand composite: 100 * min-max-within-month of clip(sales_yoy_pct, -6, +6) across the 13 provinces/territories; a degenerate month scores 50.0. High = retail sales running hot vs the rest of the country that month. Null on the Canada row.) |
| demand_rank | integer | integer (unit: Per-month rank of demand_score across the 13 provinces/territories, 1 = hottest; ties broken by sales_yoy_pct desc then province_code asc. Null on the Canada row.) |
| demand_surge_flag | integer | integer (unit: 1 when sales_yoy_pct >= +5.0 (a hot retail month for that geography), else 0.) |
| demand_slump_flag | integer | integer (unit: 1 when sales_yoy_pct <= -3.0 (a contracting retail month), else 0.) |
| record_high_flag | integer | integer (unit: 1 when retail sales equal the trailing-12-month maximum (inclusive window, requires the full 12 months), else 0.) |
| breadth_share | float | number (unit: Month-level attribute, repeated on every row: the share of the 13 provinces/territories with positive sales_yoy_pct that month, in percent. Null when year-over-year history is unavailable (the first 12 fetched months).) |
| as_of | string | string (unit: Latest reference month present in the fetched panel (YYYY-MM); identical across rows and across runs on the same published vintage.) |
| source_table | string | string (unit: Statistics Canada table number: 20-10-0056-01.) |
| row_hash | string | string (unit: Deterministic 16-hex row id: sha256("RTD|<province_code>|<month>").) |
First 10 sample rows — a preview, not the complete dataset.
| month | country_code | province_code | province_name | retail_sales | ecom_sales | ecom_share_pct | sales_mom_pct | sales_yoy_pct | sales_yoy_3mma_pct | ecom_mom_pct | ecom_yoy_pct | ecom_yoy_3mma_pct | sales_share_national_pct | dec_share_pct | demand_score | demand_rank | demand_surge_flag | demand_slump_flag | record_high_flag | breadth_share | as_of | source_table | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2017-01-01 | CAN | CA | Canada | 50,417,235,000 | 1,236,885,000 | 2.453 | — | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | b6ee619fc1decc25 |
| 2017-01-01 | CAN | CA-AB | Alberta | 6,726,992,000 | — | — | — | — | — | — | — | — | 13.343 | — | 50 | 1 | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | e6fc77f485f3abe6 |
| 2017-01-01 | CAN | CA-BC | British Columbia | 7,277,591,000 | — | — | — | — | — | — | — | — | 14.435 | — | 50 | 2 | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | 2218cb1836529434 |
| 2017-01-01 | CAN | CA-MB | Manitoba | 1,749,096,000 | — | — | — | — | — | — | — | — | 3.469 | — | 50 | 3 | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | fab4f5cb8c811818 |
| 2017-01-01 | CAN | CA-NB | New Brunswick | 1,049,815,000 | — | — | — | — | — | — | — | — | 2.082 | — | 50 | 4 | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | 0abc15f44122eb0f |
| 2017-01-01 | CAN | CA-NL | Newfoundland and Labrador | 800,919,000 | — | — | — | — | — | — | — | — | 1.589 | — | 50 | 5 | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | 332c8dea076418c1 |
| 2017-01-01 | CAN | CA-NS | Nova Scotia | 1,338,447,000 | — | — | — | — | — | — | — | — | 2.655 | — | 50 | 6 | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | 1413460103430d94 |
| 2017-01-01 | CAN | CA-NT | Northwest Territories | 65,317,000 | — | — | — | — | — | — | — | — | 0.13 | — | 50 | 7 | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | b100c5a4de42c7d2 |
| 2017-01-01 | CAN | CA-NU | Nunavut | 39,696,000 | — | — | — | — | — | — | — | — | 0.079 | — | 50 | 8 | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | f53f9878ef86332c |
| 2017-01-01 | CAN | CA-ON | Ontario | 18,742,688,000 | — | — | — | — | — | — | — | — | 37.175 | — | 50 | 9 | 0 | 0 | 0 | — | 2026-07 | 20-10-0056-01 | 2748baf5a6ef12eb |
- Current
20261002T064824Z-ef23859c5b30 · sha256 ef23859c5b30…
1,610 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/ca_retail_trade_intel/ca_retail_sales_demand_monthly" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/ca_retail_trade_intel/ca_retail_sales_demand_monthly").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/ca_retail_trade_intel/ca_retail_sales_demand_monthly
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20261002T064824Z-ef23859c5b30 and its content hash, so readers get exactly the data you used.
Statistics Canada. (2026). Canadian retail-trade demand intelligence (monthly, StatCan) [Data set, snapshot 20261002T064824Z-ef23859c5b30, sha256 ef23859c5b30]. Datazimuts. Retrieved 2026-10-02, from https://datazimuts.com/en/datasets/ca_retail_trade_intel/ca_retail_sales_demand_monthly?snapshot=20261002T064824Z-ef23859c5b30
@misc{dz_ca_retail_trade_intel_ca_retail_sales_de_ef23859c,
title = {{Canadian retail-trade demand intelligence (monthly, StatCan)}},
author = {{Statistics Canada}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/ca_retail_trade_intel/ca_retail_sales_demand_monthly?snapshot=20261002T064824Z-ef23859c5b30}},
note = {Snapshot 20261002T064824Z-ef23859c5b30, sha256 ef23859c5b304e4998041c71f7a8487bac99826bf57a27eb060ebbebd339d826; accessed 2026-10-02}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=ca_retail_trade_intel%2Fca_retail_sales_demand_monthly&lang=en&theme=auto&snapshot=20261002T064824Z-ef23859c5b30&x=month&y=retail_sales&agg=avg" title="Canadian retail-trade demand intelligence (monthly, StatCan)" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.