> ## Documentation Index
> Fetch the complete documentation index at: https://docs.northaxiumdata.ca/llms.txt
> Use this file to discover all available pages before exploring further.

# Zoning Lookup

> Look up the zoning classification at a latitude and longitude for covered municipalities.

Look up the zoning polygon that intersects a point. Returns the smallest matching polygon at the given coordinate to prefer the most specific classification. Available for 10 cities — see [Municipal Intelligence Coverage](/permits/coverage) for the full city list.

<Note>
  If no polygon directly intersects the coordinate — for example, when a point falls on a road boundary or gap between zones — the API returns the nearest polygon within 150 metres. If nothing is found within 150 metres, the endpoint returns `404`.
</Note>

### Query Parameters

<ParamField query="lat" type="number" required>
  Latitude in decimal degrees. Example: `43.6532`.
</ParamField>

<ParamField query="lng" type="number" required>
  Longitude in decimal degrees. Example: `-79.3832`.
</ParamField>

<ParamField query="municipality" type="string">
  Optional municipality slug. One of `toronto`, `calgary`, `edmonton`, `vancouver`, `winnipeg`, `ottawa`, `mississauga`, `kitchener`, `hamilton`, or `quebec_city`. Example: `toronto`.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.northaxiumdata.ca/api/v1/zone?lat=43.6532&lng=-79.3832&municipality=toronto" \
    -H "X-API-Key: <your-api-key>"
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.northaxiumdata.ca/api/v1/zone"
  headers = {"X-API-Key": "<your-api-key>"}
  params = {
      "lat": 43.6532,
      "lng": -79.3832,
      "municipality": "toronto",
  }

  response = requests.get(url, headers=headers, params=params)
  print(response.json())
  ```

  ```javascript Node.js theme={null}
  const fetch = require('node-fetch');

  const url = new URL('https://api.northaxiumdata.ca/api/v1/zone');
  url.search = new URLSearchParams({
    lat: '43.6532',
    lng: '-79.3832',
    municipality: 'toronto'
  });

  fetch(url, {
    headers: {
      'X-API-Key': '<your-api-key>'
    }
  })
    .then(res => res.json())
    .then(json => console.log(json));
  ```
</RequestExample>

<Note>
  `zone_description` and `zone_category` coverage varies by city. Some municipalities publish only a zone code with no accompanying description. Where source data is ambiguous, `zone_category` may be `null`.
</Note>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "record_id": "a0b1c2d3e4f5",
      "municipality": "toronto",
      "province": "ON",
      "zone_code": "CR",
      "zone_description": "Commercial Residential",
      "zone_category": "mixed_use",
      "source_dataset": "toronto zoning area",
      "source_url": "https://ckan0.cf.opendata.inter.prod-toronto.ca/...",
      "last_updated": "2026-04-16T12:34:56"
    }
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "code": "BAD_REQUEST",
      "message": "lat and lng are required."
    }
  }
  ```

  ```json 401 theme={null}
  {
    "error": {
      "code": "UNAUTHORIZED",
      "message": "Missing API key. Pass your key in the X-API-Key header."
    }
  }
  ```

  ```json 404 theme={null}
  {
    "error": {
      "code": "NOT_FOUND",
      "message": "Zone not found."
    }
  }
  ```
</ResponseExample>
