Skip to content

Income API

Historical income data from multiple sources: Statistics Canada Census (household income by census tract) and CRA Individual Tax Statistics (individual income by FSA).

GET /income/snapshots

Returns income snapshot records, filterable by geography type, source, and year.

Query Parameters

ParamTypeDescription
geo_typestringFilter by geography: ct, fsa, cma
sourcestringFilter by source: census, cra
yearnumberFilter by data year

Response

json
{
  "snapshots": [
    {
      "id": "uuid",
      "geoType": "ct",
      "geoCode": "4620001.00",
      "year": 2021,
      "source": "census",
      "medianIncome": 52000,
      "averageIncome": 61500,
      "totalHouseholds": 2150,
      "totalFilers": null
    }
  ]
}

Returns CRA individual tax filer income data by FSA, 2015-2021. Used by the FSA Trends page (/income-map/trends).

Response

json
{
  "trends": [
    {
      "fsa": "H2T",
      "year": 2021,
      "avgIncome": 48500,
      "totalFilers": 12500
    }
  ]
}

Note: CRA data represents individual tax filer income, not household income. Values are average total income per filer. Not directly comparable to census household income.

GET /income/ct-comparison

Returns 2016 vs 2021 census tract income comparison data. Only includes CTs that exist in both census years (923 matched CTs).

Response

json
{
  "comparisons": [
    {
      "ctUid": "4620001.00",
      "income2016": 45000,
      "income2021": 52000,
      "changePct": 15.6
    }
  ]
}

Used by the income map's "2016-2021 Change" mode to color CTs by income growth percentage.

GET /income/distribution

Returns household income distribution brackets for Montreal CMA from StatCan Table 98-10-0055.

Query Parameters

ParamTypeDescription
yearnumberFilter by census year (2016 or 2021)
geo_codestringFilter by geography code (default: all)

Response

json
{
  "distributions": [
    {
      "geoType": "cma",
      "geoCode": "462",
      "year": 2021,
      "totalHouseholds": 1835700,
      "brackets": [
        { "label": "Under $5,000", "min": 0, "max": 4999, "count": 23165, "pct": 1.3 },
        { "label": "$5,000 to $9,999", "min": 5000, "max": 9999, "count": 13700, "pct": 0.7 },
        ...
        { "label": "$200,000 and over", "min": 200000, "max": null, "count": 144320, "pct": 7.9 }
      ]
    }
  ]
}

19 income brackets per record, with both 2016 and 2021 census data available. Used by the Distribution tab on the income map page.

Returns CMHC average rent data by geography over time. Data is auto-downloaded from StatCan Table 34-10-0133-01 (5,880 records, 205 geographies, 1987-2025).

Query Parameters

ParamTypeDescription
geo_codestringOptional. Filter by geography code (e.g., a specific city/zone)

Response

json
{
  "trends": [
    {
      "geoCode": "zone_name",
      "geoName": "Zone Name",
      "year": 2024,
      "avgRentStudio": 95000,
      "avgRent1br": 115000,
      "avgRent2br": 140000,
      "avgRent3br": 165000,
      "avgRentTotal": 125000,
      "vacancyRate": "2.3"
    }
  ]
}

Rent values in integer cents (95000 = $950).