staticdata.dev
Menu
Datasets About Contact

Canadian Provinces

Canada's 13 subdivisions — 10 provinces and 3 territories — each identified by its ISO 3166-2 two-letter postal code, full English name, capital city, and administrative type. Use this dataset for address forms, shipping calculators, tax-rate lookups, and any application that needs a reliable, coded list of Canadian jurisdictions.

v1.0.0 MIT 13 records Updated 2026-10-05 stable Source:  Government of Canada — Provinces and Territories

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
curl https://staticdata.dev/v1/canadian-provinces.json

Or use as a typed import: import { canadianProvinces } from "https://staticdata.dev/v1/canadian-provinces.ts"

Formats

  • JSON 1.4 KB

    /v1/canadian-provinces.json

    Open

    min: 994 B · /v1/canadian-provinces.min.json

  • CSV 497 B

    /v1/canadian-provinces.csv

    Open
  • TypeScript 1.6 KB

    /v1/canadian-provinces.ts

    export const canadianProvinces

    type Province = (typeof canadianProvinces)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
Field Type Description Example
code string ISO 3166-2 two-letter postal abbreviation ON
name string Full English name of the province or territory Ontario
capital string Name of the capital city Toronto
type string Administrative type: province or territory province

Preview

First 10 records.

Data preview
codenamecapitaltype
ABAlbertaEdmontonprovince
BCBritish ColumbiaVictoriaprovince
MBManitobaWinnipegprovince
NBNew BrunswickFrederictonprovince
NLNewfoundland and LabradorSt. John'sprovince
NSNova ScotiaHalifaxprovince
NTNorthwest TerritoriesYellowknifeterritory
NUNunavutIqaluitterritory
ONOntarioTorontoprovince
PEPrince Edward IslandCharlottetownprovince

Showing 10 of 13. View full data:  JSON · CSV

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/canadian-provinces.json | jq '.[0]'
JavaScript
import type { Province } from "https://staticdata.dev/v1/canadian-provinces.ts";

const res = await fetch("https://staticdata.dev/v1/canadian-provinces.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const canadianProvinces: Province[] = await res.json();
console.log(canadianProvinces[0]);
Python
import urllib.request, json

with urllib.request.urlopen("https://staticdata.dev/v1/canadian-provinces.min.json") as r:
    canadianProvinces = json.load(r)

print(canadianProvinces[0])
Go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	resp, err := http.Get("https://staticdata.dev/v1/canadian-provinces.min.json")
	if err != nil { panic(err) }
	defer resp.Body.Close()

	var data []map[string]any
	if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
		panic(err)
	}
	fmt.Println(data[0])
}
Rust
use serde_json::Value;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let body = ureq::get("https://staticdata.dev/v1/canadian-provinces.min.json").call()?.into_string()?;
    let data: Vec<Value> = serde_json::from_str(&body)?;
    println!("{:?}", data.first());
    Ok(())
}

Sources and methodology

This dataset covers all 13 Canadian subdivisions as defined under the Constitution Act and subsequent legislation: the 10 provinces (Alberta, British Columbia, Manitoba, New Brunswick, Newfoundland and Labrador, Nova Scotia, Ontario, Prince Edward Island, Quebec, and Saskatchewan) and the 3 territories (Northwest Territories, Nunavut, and Yukon). The two-letter codes follow the Canada Post and ISO 3166-2:CA standard, which is the same abbreviation system used on Canadian addresses and accepted by most postal APIs.

Each record includes the capital city as recognised by the respective provincial or territorial government. Records are sorted alphabetically by the two-letter code for deterministic diffs. The type field distinguishes provinces (which hold constitutional powers under section 92 of the Constitution Act, 1867) from territories (which are federally administered under the Northwest Territories Act, Yukon Act, and Nunavut Act).

Nunavut is the newest subdivision, having been carved out of the Northwest Territories and established on 1 April 1999. All other boundaries and capitals reflect the current official configuration as of the dataset version date.

Versioning

URLs under /v1/ are stable: field names and types will not change in a way that breaks consumers. Values can be corrected or records added when the upstream source changes; schema-incompatible updates ship under a new version path. See the canadian-provinces changelog for this dataset's history.

Related datasets

More Geo datasets