Canadian lumber production intelligence (monthly)
Monthly lumber production intelligence for Canada and the 10 provinces (Statistics Canada table 16-10-0017-01): lumber production, shipments and stocks by species group (total, softwood, hardwood, spruce-pine-fir), with SPF shares, the stocks-to-shipments inventory gauge, the production-shipments flow gap, YoY momentum, 12-month shipment record highs, surge/slump flags, additive identity gates, and a documented 0-100 lumber-cycle score ranked per month (c1 strong .. c4 weak). Trailing 36 complete months. StatCan suppresses some cells under the Statistics Act (notably BC hardwood and totals from 2025-01, Manitoba production and shipments); suppressed cells stay null and the cycle score is null where components are missing. Statistics Canada Open Licence (commercial reuse allowed); source: Statistics Canada.
- Rows
- 387
- Columns
- 34
- Source cadence
- Monthly
- Last refreshed
- Sep 26, 2026
- Theme
- economy
| Column | Type | Description |
|---|---|---|
| geo_name | string | English geography name (Canada + 10 provinces). |
| geo_code | string | StatCan 2-letter code (CAN for Canada). |
| country_code | string | ISO alpha-3 country code (CAN for all rows). |
| month | string | Reference month, first day of month (ISO date). |
| as_of | string | Last complete month in the snapshot (pinned for idempotent re-runs). |
| prod_total_kcm | float | Lumber production, total softwood and hardwood. (unit: thousand cubic metres) |
| prod_softwood_kcm | float | Lumber production, total softwood. (unit: thousand cubic metres) |
| prod_hardwood_kcm | float | Lumber production, total hardwood. (unit: thousand cubic metres) |
| prod_spf_kcm | float | Lumber production, spruce, pine and fir. (unit: thousand cubic metres) |
| prod_exclspf_kcm | float | Lumber production, softwood excluding spruce, pine and fir. (unit: thousand cubic metres) |
| ship_total_kcm | float | Lumber shipments, total softwood and hardwood. (unit: thousand cubic metres) |
| ship_softwood_kcm | float | Lumber shipments, total softwood. (unit: thousand cubic metres) |
| ship_hardwood_kcm | float | Lumber shipments, total hardwood. (unit: thousand cubic metres) |
| ship_spf_kcm | float | Lumber shipments, spruce, pine and fir. (unit: thousand cubic metres) |
| stocks_total_kcm | float | Lumber stocks, total softwood and hardwood. (unit: thousand cubic metres) |
| stocks_softwood_kcm | float | Lumber stocks, total softwood. (unit: thousand cubic metres) |
| stocks_hardwood_kcm | float | Lumber stocks, total hardwood. (unit: thousand cubic metres) |
| stocks_spf_kcm | float | Lumber stocks, spruce, pine and fir. (unit: thousand cubic metres) |
| spf_share_prod_pct | float | Spruce-pine-fir share of softwood production. (unit: percent) |
| spf_share_ship_pct | float | Spruce-pine-fir share of softwood shipments. (unit: percent) |
| stocks_to_ship_months | float | Stocks divided by shipments: months of inventory cover. (unit: months) |
| yoy_prod_total_pct | float | Year-over-year percent change of total production (not seasonally adjusted). (unit: percent) |
| yoy_ship_total_pct | float | Year-over-year percent change of total shipments (not seasonally adjusted). (unit: percent) |
| yoy_stocks_total_pct | float | Year-over-year percent change of total stocks (not seasonally adjusted). (unit: percent) |
| prod_ship_gap_kcm | float | Production minus shipments: positive = inventory build. (unit: thousand cubic metres) |
| yoy_change_stocks_to_ship | float | Year-over-year change of the stocks-to-shipments ratio; negative = tightening. (unit: months) |
| record_high_12m_ship | boolean | True when shipments are the trailing-12-month maximum. |
| surge_flag | boolean | True when YoY shipment growth >= 15%. |
| slump_flag | boolean | True when YoY shipment growth <= -15%. |
| lumber_cycle_score | string | 0-100 lumber-cycle score: 100*(0.40*min-max YoY shipments + 0.35*min-max YoY production + 0.25*min-max inventory tightening), each component winsorized (+/-40%, +/-40%, +/-3 months) and min-max normalized across geographies within the month; 50 when degenerate. Null when any component is unavailable for that geography-month. (unit: score) |
| cycle_rank | string | Per-month cycle rank across geographies (1 = strongest); deterministic tie-breaks on shipments then geography name. Null when the score is null. |
| cycle_tier | string | c1 strong (>=70) / c2 firm (>=45) / c3 soft (>=20) / c4 weak (<20); null when the score is null. |
| row_hash | string | SHA-256 (truncated) of the row's content fields. |
| source_retrieved | string | Source data vintage: latest reference month present in the retrieved vectors (content-pinned so identical re-fetches hash identically). |
First 10 sample rows — a preview, not the complete dataset.
| geo_name | geo_code | country_code | month | as_of | prod_total_kcm | prod_softwood_kcm | prod_hardwood_kcm | prod_spf_kcm | prod_exclspf_kcm | ship_total_kcm | ship_softwood_kcm | ship_hardwood_kcm | ship_spf_kcm | stocks_total_kcm | stocks_softwood_kcm | stocks_hardwood_kcm | stocks_spf_kcm | spf_share_prod_pct | spf_share_ship_pct | stocks_to_ship_months | yoy_prod_total_pct | yoy_ship_total_pct | yoy_stocks_total_pct | prod_ship_gap_kcm | yoy_change_stocks_to_ship | record_high_12m_ship | surge_flag | slump_flag | lumber_cycle_score | cycle_rank | cycle_tier | row_hash | source_retrieved |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Nova Scotia | NS | CAN | 2023-07-01 | 2026-06-01 | 77.4 | 77.4 | 0 | — | — | 73.1 | 73.1 | 0 | — | 124.1 | 124.1 | 0 | — | — | — | 1.698 | 32.99 | 36.127 | -12.79 | 4.3 | -0.952 | false | true | false | 100 | 1 | c1 | 758355623b719350 | 2026-06-01 |
| Ontario | ON | CAN | 2023-07-01 | 2026-06-01 | 413.8 | — | — | — | — | 412.1 | 397.7 | 14.4 | — | 647.7 | 594.4 | 53.3 | — | — | — | 1.572 | 8.837 | 0.906 | 10.322 | 1.7 | 0.134 | false | false | false | 31.03 | 2 | c3 | e93c4f438bcfa332 | 2026-06-01 |
| Canada | CAN | CAN | 2023-07-01 | 2026-06-01 | 3,581.4 | 3,519.7 | 61.7 | 3,073.6 | 446.1 | 3,710.5 | 3,660 | 50.5 | 3,219 | 6,917 | 6,649.7 | 267.2 | 5,738.2 | 87.326 | 87.951 | 1.864 | -4.192 | -12.924 | -7.338 | -129.1 | 0.112 | false | false | false | 10.37 | 3 | c4 | 78d7574602d4e811 | 2026-06-01 |
| Quebec | QC | CAN | 2023-07-01 | 2026-06-01 | 769.2 | 740.1 | 29.1 | 729.3 | 10.8 | 872.1 | 846.7 | 25.4 | 833.3 | 2,379.3 | 2,212.4 | — | 2,174.7 | 98.541 | 98.417 | 2.728 | -7.648 | -19.777 | -12.39 | -102.9 | 0.23 | false | false | true | 0 | 4 | c4 | 48114d0ec65cf2ee | 2026-06-01 |
| Alberta | AB | CAN | 2023-07-01 | 2026-06-01 | 717.2 | 717.2 | 0 | 717.2 | 0 | — | 697.1 | — | 697.1 | — | 983.7 | — | 983.7 | 100 | 100 | — | 20.761 | — | — | — | — | false | false | false | — | — | — | b8f0ab56e950540a | 2026-06-01 |
| British Columbia | BC | CAN | 2023-07-01 | 2026-06-01 | 1,243 | 1,241.1 | 2 | 830.9 | 410.2 | 1,282.5 | 1,281.4 | 1.1 | 877.2 | 2,197.2 | 2,192.7 | — | 1,429.1 | 66.949 | 68.456 | 1.713 | — | — | — | -39.5 | — | false | false | false | — | — | — | 37169b69d8416126 | 2026-06-01 |
| New Brunswick | NB | CAN | 2023-07-01 | 2026-06-01 | — | 254.7 | — | 254.7 | 0 | — | 277.6 | — | 277.6 | — | 319.8 | — | 319.8 | 100 | 100 | — | — | — | — | — | — | false | false | false | — | — | — | ce1936b5356db58a | 2026-06-01 |
| Newfoundland and Labrador | NL | CAN | 2023-07-01 | 2026-06-01 | 15.1 | 15.1 | 0 | 15.1 | 0 | — | — | — | — | 38 | 37.9 | 0.1 | 37.8 | 100 | — | — | -13.218 | — | 4.972 | — | — | false | false | false | — | — | — | d64f286cc9e1ffff | 2026-06-01 |
| Saskatchewan | SK | CAN | 2023-07-01 | 2026-06-01 | 63.9 | — | — | — | — | 60.4 | — | — | — | — | — | — | — | — | — | — | 22.885 | -11.176 | — | 3.5 | — | false | false | false | — | — | — | a9dcdb46aa7b30c7 | 2026-06-01 |
| Nova Scotia | NS | CAN | 2023-08-01 | 2026-06-01 | 94.5 | 94.5 | 0 | — | — | 79.5 | 79.5 | 0 | — | 136.8 | 136.8 | 0 | — | — | — | 1.721 | 17.83 | -5.357 | 3.012 | 15 | 0.14 | true | false | false | 95.43 | 1 | c1 | b1ab6535b004ec1a | 2026-06-01 |
- Current
20260926T193342Z-5effeefb7421 · sha256 5effeefb7421…
387 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/statcan_lumber_signals/lumber_production_intel_monthly" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/statcan_lumber_signals/lumber_production_intel_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/statcan_lumber_signals/lumber_production_intel_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 20260926T193342Z-5effeefb7421 and its content hash, so readers get exactly the data you used.
Statistics Canada lumber production intelligence. (2026). Canadian lumber production intelligence (monthly) [Data set, snapshot 20260926T193342Z-5effeefb7421, sha256 5effeefb7421]. Datazimuts. Retrieved 2026-09-26, from https://datazimuts.com/en/datasets/statcan_lumber_signals/lumber_production_intel_monthly?snapshot=20260926T193342Z-5effeefb7421
@misc{dz_statcan_lumber_signals_lumber_production_5effeefb,
title = {{Canadian lumber production intelligence (monthly)}},
author = {{Statistics Canada lumber production intelligence}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/statcan_lumber_signals/lumber_production_intel_monthly?snapshot=20260926T193342Z-5effeefb7421}},
note = {Snapshot 20260926T193342Z-5effeefb7421, sha256 5effeefb7421cfa668d1481404a3815c2be24d397aad83a42aa003de17fa017e; accessed 2026-09-26}
}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=statcan_lumber_signals%2Flumber_production_intel_monthly&lang=en&theme=auto&snapshot=20260926T193342Z-5effeefb7421&x=geo_name&y=prod_total_kcm&agg=avg" title="Canadian lumber production intelligence (monthly)" 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.