Canadian interprovincial migration intelligence (quarterly)
Agent-curated quarterly intelligence from Statistics Canada's keyless Web Data Service: in/out/net interprovincial migrants per province and territory (table 17100020, 1961-Q3 -> present) joined with quarter-start population estimates (table 17100009) for per-1,000-resident rates. Trailing-4-quarter annualized net flow, year-over-year momentum, a documented 0-100 attraction score ranked as attraction_rank, gross-movement churn, and flow-reversal / record-high / record-low flags. Trailing 40 quarters published. Primary key: province_code + quarter. Cadence: quarterly.
- Rows
- 560
- Columns
- 26
- Source cadence
- Quarterly
- Last refreshed
- Sep 26, 2026
- Theme
- demographics
| Column | Type | Description |
|---|---|---|
| quarter | string | Quarter start (ISO date); the quarter's migration window. (unit: date) |
| country_code | string | Constant CAN. |
| province | string | Canonical province/territory name (StatCan verbatim). |
| province_code | string | Short code (NL/PE/NS/NB/QC/ON/MB/SK/AB/BC/YT/NT/NU; CA = national; NTNU = historical NWT including Nunavut, terminated 1991). |
| is_national | integer | 1 for the Canada national row (net = 0 by construction). (unit: 0/1) |
| in_migrants | integer | In-migrants to the province in the quarter. (unit: persons) |
| out_migrants | integer | Out-migrants from the province in the quarter. (unit: persons) |
| net_migrants | integer | in_migrants - out_migrants. (unit: persons) |
| gross_movers | integer | in_migrants + out_migrants; total interprovincial movers touching the province. (unit: persons) |
| population | integer | Quarter-start population estimate (table 17100009). (unit: persons) |
| net_rate_per_1000 | float | 1000 * net_migrants / population. (unit: per 1,000) |
| gross_rate_per_1000 | float | 1000 * gross_movers / population. (unit: per 1,000) |
| net_4q | integer | Trailing-4-quarter net migrants (annualized flow). (unit: persons) |
| net_4q_rate_per_1000 | float | 1000 * net_4q / population. (unit: per 1,000) |
| gross_4q | integer | Trailing-4-quarter gross movers. (unit: persons) |
| gross_4q_rate_per_1000 | float | 1000 * gross_4q / population. (unit: per 1,000) |
| momentum_4q | integer | net_4q minus net_4q four quarters earlier (YoY change in annualized flow). (unit: persons) |
| momentum_rate_per_1000 | float | 1000 * momentum_4q / population. (unit: per 1,000) |
| attraction_score | float | 0-100 per-quarter score: winsorized (+/-30) min-max of net_4q_rate_per_1000 across provinces; null for the Canada national row. (unit: 0-100) |
| attraction_rank | float | Deterministic per-quarter rank: attraction_score desc, net_4q desc, province_code asc; null for the Canada national row. (unit: rank) |
| flow_reversal | integer | 1 when annualized net flow flips sign vs a year earlier. (unit: 0/1) |
| record_high | integer | 1 when net_4q is the province's max over the published 10-year panel. (unit: 0/1) |
| record_low | integer | 1 when net_4q is the province's min over the published 10-year panel. (unit: 0/1) |
| asof_quarter | string | Latest complete quarter in the panel. (unit: date) |
| source_table | string | StatCan table PIDs behind the row. |
| row_hash | string | Deterministic 16-hex row hash. |
First 10 sample rows — a preview, not the complete dataset.
| quarter | country_code | province | province_code | is_national | in_migrants | out_migrants | net_migrants | gross_movers | population | net_rate_per_1000 | gross_rate_per_1000 | net_4q | net_4q_rate_per_1000 | gross_4q | gross_4q_rate_per_1000 | momentum_4q | momentum_rate_per_1000 | attraction_score | attraction_rank | flow_reversal | record_high | record_low | asof_quarter | source_table | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2016-07-01 | CAN | Alberta | AB | 0 | 16,345 | 20,911 | -4,566 | 37,256 | 4,195,427 | -1.088 | 8.88 | -17,677 | -4.213 | 140,003 | 33.37 | -30,888 | -7.362 | 31.54 | 10 | 1 | 0 | 0 | 2026-04-01 | 17100020+17100009 | 98c860e21d13760d |
| 2016-07-01 | CAN | British Columbia | BC | 0 | 17,202 | 12,445 | 4,757 | 29,647 | 4,861,269 | 0.979 | 6.099 | 24,147 | 4.967 | 109,041 | 22.431 | 2,179 | 0.448 | 71.29 | 2 | 0 | 0 | 0 | 2026-04-01 | 17100020+17100009 | b72b59f918cd03ac |
| 2016-07-01 | CAN | Canada | CA | 1 | 83,965 | 83,965 | 0 | 167,930 | 36,110,803 | 0 | 4.65 | 0 | 0 | 600,374 | 16.626 | 0 | 0 | — | — | 0 | 1 | 1 | 2026-04-01 | 17100020+17100009 | 8968cef3c8c2406f |
| 2016-07-01 | CAN | Manitoba | MB | 0 | 2,909 | 5,204 | -2,295 | 8,113 | 1,314,140 | -1.746 | 6.174 | -5,533 | -4.21 | 29,261 | 22.266 | 654 | 0.498 | 31.55 | 9 | 0 | 0 | 0 | 2026-04-01 | 17100020+17100009 | 794e0fce3f43d14a |
| 2016-07-01 | CAN | New Brunswick | NB | 0 | 3,367 | 3,304 | 63 | 6,671 | 763,322 | 0.083 | 8.739 | -447 | -0.586 | 22,897 | 29.997 | 1,858 | 2.434 | 47.25 | 6 | 0 | 0 | 0 | 2026-04-01 | 17100020+17100009 | b40d88eb7a478650 |
| 2016-07-01 | CAN | Newfoundland and Labrador | NL | 0 | 1,445 | 1,965 | -520 | 3,410 | 529,586 | -0.982 | 6.439 | -348 | -0.657 | 14,418 | 27.225 | -816 | -1.541 | 46.94 | 7 | 1 | 0 | 0 | 2026-04-01 | 17100020+17100009 | f9ff8d399d5ecf71 |
| 2016-07-01 | CAN | Nova Scotia | NS | 0 | 4,779 | 4,214 | 565 | 8,993 | 942,984 | 0.599 | 9.537 | 1,456 | 1.544 | 32,340 | 34.295 | 3,370 | 3.574 | 56.47 | 3 | 1 | 0 | 0 | 2026-04-01 | 17100020+17100009 | db43e31f13cf730d |
| 2016-07-01 | CAN | Northwest Territories | NT | 0 | 398 | 656 | -258 | 1,054 | 44,624 | -5.782 | 23.62 | -513 | -11.496 | 4,315 | 96.697 | -263 | -5.894 | 0 | 13 | 0 | 0 | 0 | 2026-04-01 | 17100020+17100009 | 50920b4e8b6f9ad0 |
| 2016-07-01 | CAN | Nunavut | NU | 0 | 128 | 242 | -114 | 370 | 36,979 | -3.083 | 10.006 | -209 | -5.652 | 2,115 | 57.195 | 1 | 0.027 | 25.31 | 12 | 0 | 0 | 0 | 2026-04-01 | 17100020+17100009 | 2600c3fdc342c790 |
| 2016-07-01 | CAN | Ontario | ON | 0 | 25,564 | 17,913 | 7,651 | 43,477 | 13,876,500 | 0.551 | 3.133 | 14,817 | 1.068 | 145,341 | 10.474 | 20,302 | 1.463 | 54.41 | 4 | 1 | 0 | 0 | 2026-04-01 | 17100020+17100009 | 70ad2e5053a59500 |
- Current
20260926T054717Z-8d18c485c18b · sha256 8d18c485c18b…
560 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/canada_migration_signals/ca_interprovincial_migration_quarterly" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/canada_migration_signals/ca_interprovincial_migration_quarterly").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/canada_migration_signals/ca_interprovincial_migration_quarterly
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 20260926T054717Z-8d18c485c18b and its content hash, so readers get exactly the data you used.
Canadian interprovincial migration intelligence (agent-curated). (2026). Canadian interprovincial migration intelligence (quarterly) [Data set, snapshot 20260926T054717Z-8d18c485c18b, sha256 8d18c485c18b]. Datazimuts. Retrieved 2026-09-26, from https://datazimuts.com/en/datasets/canada_migration_signals/ca_interprovincial_migration_quarterly?snapshot=20260926T054717Z-8d18c485c18b
@misc{dz_canada_migration_signals_ca_interprovinc_8d18c485,
title = {{Canadian interprovincial migration intelligence (quarterly)}},
author = {{Canadian interprovincial migration intelligence (agent-curated)}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/canada_migration_signals/ca_interprovincial_migration_quarterly?snapshot=20260926T054717Z-8d18c485c18b}},
note = {Snapshot 20260926T054717Z-8d18c485c18b, sha256 8d18c485c18b34504745138f070e945b5ff8898cc506984f691ba85a7710443d; 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=canada_migration_signals%2Fca_interprovincial_migration_quarterly&lang=en&theme=auto&snapshot=20260926T054717Z-8d18c485c18b&x=quarter&y=is_national&agg=avg" title="Canadian interprovincial migration intelligence (quarterly)" 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.