Legal Land Description API for Developers
Integrate Canadian legal land description conversion into your applications. RESTful API with comprehensive coverage across AB, SK, MB, BC, and ON.
Last updated:
Quick Start
Get up and running with the Township Canada API in under 5 minutes.
Create an Account
Sign up at townshipcanada.com/app and navigate to your account settings.
Get Your API Key
Generate an API key from your dashboard. Keep it secure - it's your access token.
Install an SDK
Make Your First Request
Use your API key to convert a legal land description:
Try It Now
Live Demo/search/legal-location?location=1-2-23-22-W4Authentication
All API requests require authentication using your API key.
Include your API key in the request header:
Base URL:https://developer.townshipcanada.com
Convert Legal Description to Coordinates
Convert a legal land description to geographic coordinates.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| location | string | Required | Legal land description NW-25-24-1-W5 |
Example Response
Convert Coordinates to Legal Description
Get the legal land description for any GPS coordinate.
Smart Suggestions
Get autocomplete suggestions for partial legal land descriptions.
Batch Processing
Convert up to 100 legal land descriptions in a single request.
Vector Tiles
Display legal survey grids and geographic data layers on maps using vector tiles.
Tile URL Pattern
https://maps.townshipcanada.com/{province}/{layer}/{z}/{x}/{y}.mvt?api_key=... Available Layers
| Province | Grid Layers | Label Layers |
|---|---|---|
| AB, SK, MB, BC (DLS) | twpsecqtrlsd | twp-labelsec-labelqtr-labellsd-label |
| MB (River Lots) | river-lots | river-lots-label |
| BC (NTS) | seriesblockunitqtr-unit | series-labelblock-labelunit-labelqtr-unit-label |
| ON (Geographic) | twpconlot | twp-labelcon-labellot-label |
Data Layers
Geographic data layers for overlaying on maps. Use the same tile URL pattern.
| Layer | Tileset | Label Tileset |
|---|---|---|
Oil & Gas Fields Oil and gas field boundaries | oil_gas_fields | oil_gas_fields_label |
Municipal Boundaries Canadian municipal boundaries | municipal_boundaries | municipal_boundaries_label |
Parks & Protected Areas National and provincial parks, protected areas | parks_and_protected_areas | parks_and_protected_areas_label |
Water Bodies Lakes, reservoirs, and major water bodies | water_bodies | water_bodies_label |
Watercourses Rivers, streams, and waterways | watercourses | watercourses |
Railways Railway lines and corridors | railways | railways |
Roads Road networks | roads | roads |
Elevation Elevation contour lines | elevation | elevation |
Agriculture Parcel Reports
Soil, capability, crop rotation, and land-use data for any quarter section in AB, SK, and MB. LSD inputs resolve up to their quarter section.
Energy Parcel Reports
Wells, pipelines, facilities, production, and Crown tenure for any LSD in AB, SK, and MB.
Vector Tiles
The Agriculture bundle's 18 map layers as vector tiles: soils, capability, crop rotation, Crown land, pastures, and the ALR. Served from the maps CDN, authenticated with an api_key query parameter.
Tile URL Pattern
https://maps.townshipcanada.com/ag/{archive}/{z}/{x}/{y}.mvt?api_key=... https://maps.townshipcanada.com/ag/{archive}.json?api_key=... (TileJSON) Available Archives
The source layer is the layer name inside the tile - MapLibre needs it in source-layer, and it does not always match the archive name. Anything outside this list returns 403.
| Archive | Source Layer | Zoom | Layer |
|---|---|---|---|
ag_summary_qs | ag_summary | z9-22 | Ag Summary (quarter section) |
ag_summary_sec | ag_summary_sec | z6-9 | Ag Summary (section rollup) |
ag_summary_twp | ag_summary_twp | z0-6 | Ag Summary (township rollup) |
aafc_crop_summary | crops | z9-22 | Crops (quarter section) |
aafc_crop_summary_sec | crops_sec | z6-9 | Crops (section rollup) |
aafc_crop_summary_twp | crops_twp | z0-6 | Crops (township rollup) |
soils | soils | z6-22 | Soil Landscapes of Canada |
lsrs_productivity | lsrs | z9-22 | Productivity / LSRS (quarter section) |
lsrs_productivity_sec | lsrs_sec | z6-9 | Productivity / LSRS (section rollup) |
lsrs_productivity_twp | lsrs_twp | z0-6 | Productivity / LSRS (township rollup) |
bc_ag_capability | bc_ag_capability | z6-22 | BC Agricultural Capability |
sk_ag_crown_land | sk_ag_crown_land | z6-22 | SK Agricultural Crown Land |
sk_ag_crown_land_labels | sk_ag_crown_land | z10+ | SK Agricultural Crown Land (labels) |
sk_pastures | sk_pastures | z4-22 | SK Pastures |
sk_pastures_labels | sk_pastures | z8+ | SK Pastures (labels) |
bc_alr | bc_alr | z4-22 | BC Agricultural Land Reserve |
bc_alr_labels | bc_alr | z10+ | BC Agricultural Land Reserve (labels) |
bc_fwa_wetlands | bc_fwa_wetlands | z6-22 | BC Freshwater Atlas Wetlands |
Zoom-Banded Rollup Families
ag_summary, aafc_crop_summary, and lsrs_productivity each ship as three archives covering different zoom bands - quarter-section geometry is far too dense to draw at province scale. Add all three as separate sources and let the zoom ranges hand off; a client that adds only the detail archive sees an empty map below z9.
| Zoom | Archive | Granularity |
|---|---|---|
| z0-6 | _twp | Township (6 x 6 miles) |
| z6-9 | _sec | Section (1 x 1 mile) |
| z9+ | base archive (_qs / _lsd / no suffix) | Quarter section / LSD |
The _labels archives are the same footprint rendered as a label layer - add them as their own source alongside the geometry archive when you want text.
MapLibre Usage
Vector Tiles
The Energy bundle's 12 map layers as vector tiles: wells, pipelines, facilities, production, and Crown tenure. Served from the maps CDN, authenticated with an api_key query parameter.
Tile URL Pattern
https://maps.townshipcanada.com/energy/{archive}/{z}/{x}/{y}.mvt?api_key=... https://maps.townshipcanada.com/energy/{archive}.json?api_key=... (TileJSON) Available Archives
The source layer is the layer name inside the tile - MapLibre needs it in source-layer, and it does not always match the archive name. Anything outside this list returns 403.
| Archive | Source Layer | Zoom | Layer |
|---|---|---|---|
pipelines | pipelines | z0-22 | Pipelines (also serves the label layer) |
facilities | facilities | z0-22 | Facilities |
facilities_labels | facilities_labels | z13+ | Facilities (labels) |
og_activity_lsd | og_activity | z9-22 | Well Activity (LSD) |
og_activity_sec | og_activity_sec | z6-9 | Well Activity (section rollup) |
og_activity_twp | og_activity_twp | z0-6 | Well Activity (township rollup) |
lsd_production_12mo | lsd_production | z9-22 | Production, trailing 12 mo (LSD) |
lsd_production_12mo_sec | production_sec | z6-9 | Production, trailing 12 mo (section rollup) |
lsd_production_12mo_twp | production_twp | z0-6 | Production, trailing 12 mo (township rollup) |
petroleum_tenure | petroleum_tenure | z0-22 | Petroleum & Natural Gas Tenure |
mineral_tenure | mineral_tenure | z0-22 | Mineral Tenure |
mineral_tenure_labels | mineral_tenure_labels | z8+ | Mineral Tenure (labels) |
Zoom-Banded Rollup Families
og_activity and lsd_production_12mo each ship as three archives covering different zoom bands - LSD-level geometry is far too dense to draw at province scale. Add all three as separate sources and let the zoom ranges hand off; a client that adds only the detail archive sees an empty map below z9.
| Zoom | Archive | Granularity |
|---|---|---|
| z0-6 | _twp | Township (6 x 6 miles) |
| z6-9 | _sec | Section (1 x 1 mile) |
| z9+ | base archive (_qs / _lsd / no suffix) | Quarter section / LSD |
The _labels archives are the same footprint rendered as a label layer. pipelines is the exception - its archive carries both geometry and labels.
MapLibre Usage
Error Codes
| Code | Status | Description |
|---|---|---|
| 400 | Bad Request | Invalid legal land description |
| 401 | Unauthorized | Missing or invalid API key |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Server Error | Internal error - try again |
Rate Limits
Rate limits vary by plan tier.
Build
Scale
Enterprise
OpenAPI Specification
Download our OpenAPI 3.0 specification for code generation, testing, and documentation.
API Pricing
Simple, predictable pricing.
Build
For development & testing
- 1,000 requests/mo
- $0.02/request
- 1/sec
- Unlimited API keys
Scale
For production apps
- 10,000 requests/mo
- $0.01/request
- 5/sec
- Unlimited API keys
Enterprise
For high-volume needs
- 100,000 requests/mo
- $0.005/request
- 25/sec
- Unlimited API keys
Ready to integrate?
Get your API key and start building today.