Open source

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

Licence NAICS

Nshipyard Canada · Project 02

Every Toronto business licence, mapped to its industry.

Toronto issues licences by local category names like “Eating or Drinking Establishment”. NAICS, the North American Industry Classification System that Statistics Canada uses to classify businesses, speaks a different language. This is the join: 37,469 active licences, 92 categories, each mapped to a NAICS 2022 code with a confidence rating.

37,469

active business licences, each mapped to a NAICS 2022 industry code

92

licence categories mapped, every one with a confidence rating and a written rule

13

NAICS sectors represented, from food services to finance

25

wards analyzed: which industry dominates each part of the city

Explorer

Search 37,469 active licences.

Search by business name or licence number above, or filter by industry sector, to browse the active licence file.

Showcase

Where the licensed economy changes character.

Food services dominate 23 of 25 wards. In two northwest wards, York Centre and Humber River-Black Creek, other services (personal care, parking, auto repair) take the lead instead. The raw licence file lists categories; it cannot tell you which industry defines a ward. This join can.

Top industry sector per ward

Active licences by NAICS sector. Wards 6 and 7 are the only two where food services do not lead.

The fastest-growing licence categories since 2022

Licences issued per year: 2019-2021 average versus 2024-2026 average. Restaurants added 1,726 a year and take-out counters 1,578. Patio categories that barely existed before 2022, curb lane cafés and expanded patios, now issue hundreds a year.

Methodology

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

  1. 01

    Source: the City of Toronto open data file “Municipal Licensing and Standards - Business Licences and Permits”, retrieved 2026-10-08. 159,955 records, of which 37,469 are active.

  2. 02

    Active means the record carries no cancel date. A licence can be inactive in practice while its record lacks one, so counts are an upper bound.

  3. 03

    All 92 licence categories were mapped to NAICS 2022 by hand: 24 exact matches, 51 close matches, 15 at sector level only, 2 unmappable. Every row of the mapping table carries its confidence and its written rule.

  4. 04

    Coverage: 99.99% of active licences sit in a mapped category. The two unmapped categories are a permit with no business activity (noise exemption) and a source-system artifact (“Class record not on file”).

  5. 05

    5,424 active records (14.5%) carry no ward, so ward analysis covers the remaining 85.5%.

  6. 06

    Tow-truck licensing moved to the Province of Ontario in 2024, which is why all 4,848 tow-truck records are cancelled and the category shows zero active licences.

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/licence/search?q=tim&sector=72&limit=3

Search licences by name, filtered to food services

{
  "q": "tim",
  "sector": "72",
  "total": 128,
  "hits": [
    {
      "n": "TIM HORTONS",
      "c": "TAKE-OUT OR RETAIL FOOD ESTABLISHMENT",
      "w": "3", "i": "2012", "l": "B50-4202031",
      "naics_code": "722512",
      "naics_title": "Limited-service eating places",
      "sector_code": "72",
      "sector_title": "Accommodation and food services"
    }
  ]
}
Try it →

GET

/api/v1/licence/lookup?licence_no=B50-4202031

Full record for one licence, with its NAICS mapping

{
  "n": "TIM HORTONS",
  "c": "TAKE-OUT OR RETAIL FOOD ESTABLISHMENT",
  "w": "3", "i": "2012", "l": "B50-4202031",
  "naics_code": "722512",
  "naics_title": "Limited-service eating places",
  "sector_code": "72",
  "sector_title": "Accommodation and food services"
}
Try it →

GET

/api/v1/licence/sectors

Licence counts by NAICS sector, plus top sectors per ward

{ "meta": { "active_licences": 37469, … },
  "sectors": [ { "code": "72", "active": 16284 }, … ],
  "wards": [ … ], "growth": [ … ] }
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 Toronto Licence NAICS MCP server so I can query it from here.
1. Run: claude mcp add --transport http toronto-licence https://this-site.example/mcp
2. Run `claude mcp list` to confirm it connected.
3. Search licences for "tim" in the food services sector, and show me the result.

Data

Take the files.

The full category-to-NAICS table, MIT licensed, as CSV.

licence_to_naics.csv

92 categories with NAICS codes, confidence, and mapping rules

Download