Open source

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

Open NshipyardLivable Area

Open Nshipyard Canada

How much of Toronto is within 30 minutes?

Affordability is a geometry problem: a home only counts if you can get to work from it. These modeled isochrones measure the square kilometres of the Toronto area reachable from Union Station within 15, 30, 45, or 60 minutes by transit or by car, then rank the proposed transit lines by how much 30-minute land each billion dollars buys.

82.5

km² reachable within 30 min of Union Station by Transit (modeled estimate)

339.5

km² reachable within 30 min of Union Station by Car (modeled estimate)

707,122

people inside the 30-min Transit isochrone, 2021 Census (modeled estimate)

1.3

added 30-min km² per $B of budget for GO Expansion (frequency uplift) (modeled estimate)

Map

Draw the city you can reach.

Pick a mode and a time budget. The red shape is the modeled isochrone: the land from which Union Station is reachable within that time. Toggle the proposed lines to see where their stations would land.

Mode

Travel time

Proposed lines

82.5 km² inside707,122 population insideUnion Stationproposed stationModeled estimate
Ontario LineScarborough Subway ExtensionEglinton Crosstown West ExtensionGO Expansion (frequency uplift)

Rings are modeled estimates from scheduled GTFS times and modeled road speeds, not measurements of a real trip.

Corridors

Which proposed line buys the most livable land?

For each proposed line, the build adds its stations to the transit graph with modeled ride times, re-runs routing from Union Station, and re-measures the 30-minute isochrone. Marginal km² divided by budget in billions of dollars gives the ranking. Every figure is a modeled estimate; budgets use each line's published definition.

Base 30-min isochrone: 82.5 km² by transit (modeled estimate).

RankCorridorAdded 30-min km²Budget (C$B)km² per $BStatus
1GO Expansion (frequency uplift)17.713.51.3Phased delivery
2Ontario Line1.027.20.0Under construction
3Scarborough Subway Extension0.04.70.0Under construction
4Eglinton Crosstown West Extension0.04.00.0Under construction

Methodology

How the isochrones were built, and where they are weak.

  1. 01

    Transit travel times come from GTFS, the schedule data format transit agencies publish. The build uses the TTC and GO Transit feeds; GO Transit is run by Metrolinx, Ontario's regional transit agency. Service is the weekday service_id with the most trips in each feed, the representative weekday. Between consecutive stops, edges use median scheduled in-vehicle minutes across trips of that service.

  2. 02

    Transfers: stops within 400 metres are connected with walk edges at 4.8 km/h. The graph has two layers per stop (arrive and board): arriving then boarding a vehicle costs one 4-minute wait, staying aboard through intermediate stops costs no extra wait, alighting is free, and walk transfers run arrive to arrive. The origin starts at arrive, so the first boarding pays the wait like every other boarding.

  3. 03

    Car travel times come from OSM, the OpenStreetMap drivable road network for the Greater Toronto bbox, with rush-hour speeds per highway class (motorway 100 down to service 25 km/h free-flow) multiplied by a 0.55 congestion factor. Routing is Dijkstra from the network node nearest Union Station.

  4. 04

    The grid: 500 m cells over lon -80.0 to -78.85, lat 43.25 to 44.05. Each cell takes the minimum of stop time plus walk (transit, 1.5 km catchment) or node time plus 2-minute access (car, 1.0 km catchment). Isochrone polygons come from marching squares at 15, 30, 45, and 60 minutes; area equals cells inside the threshold times 0.25 km².

  5. 05

    Population comes from DA centroids: DA means dissemination area, StatCan's smallest census geography. 2021 Census counts (StatCan table 98-10-0015) are summed for DAs whose centroid falls inside the 30-minute polygon, assuming population is uniform within each DA.

  6. 06

    Proposed lines: station coordinates are approximate (nearest major intersection, ±300 m). Travel times are modeled as inter-station distance divided by assumed speed (32 km/h subway, 28 km/h LRT) plus 0.5 minute dwell per station. GO Expansion is a scenario, not new track: the per-boarding wait on GO boardings drops from 4 to 2 minutes. Budgets are publicly reported figures with source and date; definitions vary (build-only vs build plus 30-year operate) and are labeled per line.

  7. 07

    Everything on this page is a modeled estimate. Schedules change, congestion varies, station positions are approximate. Treat the km² figures as order-of-magnitude comparisons between corridors, not measurements of anything built.

For developers

Query it from code, or from an agent.

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

Endpoints

GET

/api/v1/isochrone?mode=transit&minutes=30

One modeled isochrone: mode, minutes, km², population when computed, and the polygon rings.

{
  "mode": "transit",
  "minutes": 30,
  "km2": 82.5,
  "population": 707122,
  "estimate": "modeled estimate",
  "rings": [ [ [ -79.38, 43.65 ], … ] ]
}
Try it →

GET

/api/v1/corridors

Proposed lines ranked by added 30-minute km² per billion dollars, with the base isochrone. Falls back to line metadata while marginal analysis computes.

{
  "status": "ready",
  "base_km2_30min": 82.5,
  "ranking": [ { "id": "go-expansion",
    "marginal_km2": 17.7, "km2_per_bcad": 1.3 } ]
}
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 Livable Area MCP server so I can query it from here.
1. Run: claude mcp add --transport http livable-area https://this-site.example/mcp
2. Run `claude mcp list` to confirm it connected.
3. Get the 30-minute transit isochrone from Union Station and show me its km², and show me the result.

Data

Take the files.

The modeled isochrones, proposed-line stations, and marginal km² analysis, MIT licensed, as JSON.

isochrones.json

Modeled isochrone polygons by mode and threshold (15/30/45/60 min), with km² and population

Download
proposed_lines.json

Four proposed transit lines: stations, modeled speeds, published budgets with sources

Download
marginal.json

Per-line marginal 30-minute km² and km² per billion dollars

Download