Open source

An open-source civic project. Not affiliated with the Government of Canada or the City of Toronto.

Open NshipyardLand vs Housing

Nshipyard Canada · Land vs Housing

Does transit make land gold and housing cheap?

The thesis: near a new station, land values rise (good, it pulls developers in) while the cost per family falls when density is allowed (one lot hosts 50 families instead of 1). We tested the halves open data can test: Statistics Canada's house-only versus land-only price split for Toronto from 1981 to 2026, and housing units within 800m of all 67 TTC subway stations from the development pipeline. The station-level land split does not exist in open data; this page marks exactly where the test stops.

+352%

growth of the house-only (structure) component in Toronto's New Housing Price Index, 1981 to 2026

+190%

growth of the land-only component over the same period; StatCan flags the land series “use with caution” throughout

67

TTC subway stations on Lines 1, 2 and 4, each with opening year and coordinates from the open GTFS feed

141,098

homes built within 800m of a subway station in the development-pipeline snapshot, plus 573,486 more in the pipeline

Explorer

Supply near every station.

Search a station to see how many homes were built within 800m and how many are in the pipeline. Counts come from the development-pipeline snapshot joined to station coordinates; a project near two stations counts under both.

Showing 0 of 0

…

Showcase

What the split actually shows.

At the metro level the result complicates the thesis: from 1981 to 2026, the structure component of new Toronto home prices grew 352% while the land component grew 190%. Construction cost inflation, not just land scarcity, is doing heavy work in new home prices. The station-level half of the test is where open data runs out, and the coverage section below says so plainly.

House-only vs land-only, Toronto, 1981-2026

Statistics Canada New Housing Price Index, indexed series. Land-only flagged “use with caution” by StatCan throughout.

…

Stations by homes within 800m

Built plus pipeline units from the development-pipeline snapshot. Wellesley leads because the downtown pipeline clusters there.

builtpipeline

…

Where the test is possible, and where it stops

Four tests, two pass with open data, two are blocked on data nobody publishes openly.

Methodology

How the decomposition was built, and where it is weak.

  1. 01

    Price split source: Statistics Canada table 18-10-0205-02 (New Housing Price Index), retrieved 2026-10-09. The house-only and land-only series are published for 27 census metropolitan areas including Toronto, monthly from 1981-01 to 2026-08, with no terminated segments. Every land-only value carries StatCan's E (use with caution) flag.

  2. 02

    The NHPI tracks new housing only and is an index, not dollars. Growth rates compare like with like, but the series cannot be read as absolute land or structure prices, and it says nothing about resale homes.

  3. 03

    Station list: 67 TTC subway stations on Lines 1, 2 and 4. Coordinates come from the City of Toronto's open GTFS feed (stops.txt); opening years are public record (1954 for the original Yonge segment through 2017 for the Spadina extension). Line 6 (Finch West LRT) is excluded: its opening history is too recent for a supply-response read.

  4. 04

    Supply join: each development-pipeline project with coordinates is assigned to every station within 800m (haversine). Projects near two stations count under both, so station totals do not sum to a citywide total. Status comes from the pipeline snapshot: built versus everything else.

  5. 05

    The pipeline is a snapshot with no per-project completion dates, so supply near stations cannot be dated before or after each station's opening from this file. The cross-section is real; the longitudinal test is not possible here.

  6. 06

    The station-level land-versus-structure split is the documented gap: MPAC parcel assessments sit behind the AboutMyProperty login or FOI requests, and Teranet transaction data is proprietary. No open parcel-level value file exists for Toronto, so the decomposition cannot be run per station.

  7. 07

    Per-unit housing cost near stations over time is blocked for the same reason: no open series of sale prices or project values exists at station scale. The NHPI is CMA-level only.

For developers

Query it from code, or from an agent.

Three consumption paths, same canonical data. REST for applications, OpenAPI for integration, MCP tools over streamable HTTP for AI agents.

Endpoints

GET

/api/v1/decomposition?geo=Toronto%2C%20Ontario

House-only vs land-only NHPI series for a metro area, 1981-2026

{
  "geo": "Toronto, Ontario",
  "House only": [ { "d": "1981-01", "v": 22.6 }, … ],
  "Land only": [ { "d": "1981-01", "v": 39.1 }, … ],
  "stats": { "house_growth_pct": 352.2, "land_growth_pct": 190.0 }
}
Try it →

GET

/api/v1/stations?q=wellesley&limit=3

Search 67 TTC stations; each record carries built and pipeline units within 800m

{
  "q": "wellesley", "total": 1,
  "hits": [ {
    "name": "Wellesley", "line": 1, "opened": 1954,
    "built_units_800m": 8407, "pipeline_units_800m": 35168
  } ]
}
Try it →

GET

/api/v1/coverage

What the open data can and cannot test, with the exact gaps

{ "tests": [
  { "test": "Land vs structure split, metro level",
    "possible": true, … },
  { "test": "Land vs structure split around stations",
    "possible": false,
    "limit": "MPAC parcel assessments sit behind a login…" }
] }
Try it →

Connect your agent

Put this data to work inside your AI tools.

Pick your harness, copy the prompt, send it to your agent. Your agent runs the setup itself.

Copy and send this to Claude Code

Set up the Canada Land vs Housing MCP server so I can query it from here.
1. Run: claude mcp add --transport http canada-land-housing https://this-site.example/mcp
2. Run `claude mcp list` to confirm it connected.
3. Show me the house-only vs land-only price split for Toronto and the top stations by housing supply, and show me the result.

Data

Take the files.

The decomposition series, the station supply join, and the coverage matrix, MIT licensed, as JSON.

nhpi_decomposition.json

House-only vs land-only NHPI series, Toronto monthly 1981-2026 plus peers

Download
station_supply.json

67 stations with built and pipeline units within 800m

Download
stations.json

Station names, lines, opening years, coordinates

Download
coverage.json

What the open data can and cannot test

Download