Open source

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

Development Pipeline

Nshipyard Canada · Project 08

Toronto's housing pipeline, normalized.

City Planning publishes a Development Pipeline: every large project from application to occupancy, with proposed unit counts. This is that file cleaned, joined to wards and neighbourhoods, with a normalized status taxonomy, plus building-permit issuance times from 202,779 active permits.

2,391

development applications in the official pipeline, each with a normalized status

124,326

homes in projects marked Built: the net homes actually gained

803,206

homes still in the pipeline: proposed or active, not yet built

272

median days for a New Building permit to go from application to issuance

Explorer

Find any application.

0 results
  • No application matches.

Search above, or filter by status or ward, to see an application's units, timeline, and neighbourhood.

Showcase

Which neighbourhoods actually gained homes, net?

The pipeline file lists proposed units for every project. Counting only projects the City marks Built gives the net homes actually gained, by 158-model neighbourhood. Everything else is still pipeline: proposed or active, not yet built.

Darker red means more Built homes. 96.2% of pipeline records were matched to a neighbourhood.

Most homes gained, by neighbourhood

    Showcase

    How long does a building permit really take?

    From 202,779 active building permits, the calendar days between application and issuance, by permit type. A New Building permit takes a median of 272 days. A small residential project takes 19. The gap is the story.

    Issuance time by permit type

    New Building permits: median days by application year

    This dataset is a snapshot of permits active as of October 2026. Older years only include permits still open, so early-year medians carry survivorship bias.

    For developers

    Query it from code, or from an agent.

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

    Endpoints

    GET/api/v1/pipeline/search?q=yonge&status=built

    Search applications by address, id, or neighbourhood

    {
      "count": 40,
      "results": [
        { "id": "17 122573 STE 20 OZ",
          "address": "…",
          "status": "built",
          "units": 7190 }
      ]
    }
    GET/api/v1/pipeline/permit_times?type=New%20Building

    Median issuance days by permit type and year

    {
      "count": 23,
      "results": [
        { "permit_type": "New Building",
          "year": 2024, "n": 149,
          "median_days": 184.0 }
      ]
    }
    GET/api/v1/pipeline/summary

    Totals, units by status, built units by neighbourhood

    {
      "records": 2391,
      "built_units": 124326,
      "units_by_status": {
        "proposed": 367469,
        "active": 435737,
        "built": 124326 }
    }

    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 Toronto Development Pipeline MCP server so I can query it from here.
    1. Run: claude mcp add --transport http toronto-pipeline https://this-site.example/mcp
    2. Run `claude mcp list` to confirm it connected.
    3. Look up the development application with the most built homes and tell me its address and unit count, and show me the result.

    Methodology

    What the numbers mean, and what they do not.

    1. 01

      Source: the City of Toronto's official Development Pipeline analytical dataset, retrieved October 8, 2026, joined to the Development Applications file on application number (96.8% match) for coordinates, then to the 158-model neighbourhood boundaries (96.2% matched).

    2. 02

      Status taxonomy: Under Review becomes proposed (submitted, decision pending); Active becomes active (approved or under construction, not yet recorded complete); Built becomes built (completed). Only built units count as homes gained.

    3. 03

      Unit counts are proposed units from planning applications, not final occupancy counts. The pipeline covers larger developments requiring Planning Act approvals; as-of-right development below the Site Plan Control threshold is excluded.

    4. 04

      Permit times come from the Building Permits Active Permits file: calendar days from application date to issued date. It is a snapshot of permits active in October 2026, so older years only include permits still open. Negative values and values over 10 years were excluded as data-entry errors.

    5. 05

      The City does not publish per-project completion dates or final built unit counts in these files; built status is the closest available proxy for homes gained.

    Data

    Take the files.

    Versioned releases, MIT licensed. CSV for spreadsheets.

    pipeline.csv

    2,391 applications: normalized status, units, ward, 158-model neighbourhood

    Download
    permit_times.csv

    Median issuance days by permit type and year, with p25/p75

    Download
    summary.json

    Totals, units by status, built units by neighbourhood, methodology notes

    Download