API v1 · Stable

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.

Convert LLD to Coordinates
Powering land data workflows in
Oil & Gas
Real Estate
Insurance
Agriculture

Last updated:

Getting Started

Quick Start

Get up and running with the Township Canada API in under 5 minutes.

1

Create an Account

Sign up at townshipcanada.com/app and navigate to your account settings.

2

Get Your API Key

Generate an API key from your dashboard. Keep it secure - it's your access token.

3

Install an SDK

TypeScript
Python
4

Make Your First Request

Use your API key to convert a legal land description:

Search by LLD

Try It Now

Live Demo
GET/search/legal-location?location=1-2-23-22-W4
Response
Response will appear here...
Security

Authentication

All API requests require authentication using your API key.

Include your API key in the request header:

Base URL:https://developer.townshipcanada.com

Convert Coordinates to Legal Description

Get the legal land description for any GPS coordinate.

GET/search/coordinates
Autocomplete API

Smart Suggestions

Get autocomplete suggestions for partial legal land descriptions.

GET/autocomplete/legal-location
Maps API

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)twpsecqtrlsdtwp-labelsec-labelqtr-labellsd-label
MB (River Lots)river-lotsriver-lots-label
BC (NTS)seriesblockunitqtr-unitseries-labelblock-labelunit-labelqtr-unit-label
ON (Geographic)twpconlottwp-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_fieldsoil_gas_fields_label
Municipal Boundaries

Canadian municipal boundaries

municipal_boundariesmunicipal_boundaries_label
Parks & Protected Areas

National and provincial parks, protected areas

parks_and_protected_areasparks_and_protected_areas_label
Water Bodies

Lakes, reservoirs, and major water bodies

water_bodieswater_bodies_label
Watercourses

Rivers, streams, and waterways

watercourseswatercourses
Railways

Railway lines and corridors

railwaysrailways
Roads

Road networks

roadsroads
Elevation

Elevation contour lines

elevationelevation
Ag API

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.

GET/ag/report
POST/ag/batch
GET/ag/autocomplete
Energy API

Energy Parcel Reports

Wells, pipelines, facilities, production, and Crown tenure for any LSD in AB, SK, and MB.

GET/energy/report
GET/energy/wells
GET/energy/pipelines
GET/energy/facilities
GET/energy/tenure
POST/energy/batch
GET/energy/autocomplete
GET/energy/operators/autocomplete
GET/energy/operators
GET/energy/operators/{name}
GET/energy/tenure/expiring
GET/energy/dispositions/{number}
GET/energy/pipelines/{licence}
Ag Tiles API

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_qsag_summaryz9-22Ag Summary (quarter section)
ag_summary_secag_summary_secz6-9Ag Summary (section rollup)
ag_summary_twpag_summary_twpz0-6Ag Summary (township rollup)
aafc_crop_summarycropsz9-22Crops (quarter section)
aafc_crop_summary_seccrops_secz6-9Crops (section rollup)
aafc_crop_summary_twpcrops_twpz0-6Crops (township rollup)
soilssoilsz6-22Soil Landscapes of Canada
lsrs_productivitylsrsz9-22Productivity / LSRS (quarter section)
lsrs_productivity_seclsrs_secz6-9Productivity / LSRS (section rollup)
lsrs_productivity_twplsrs_twpz0-6Productivity / LSRS (township rollup)
bc_ag_capabilitybc_ag_capabilityz6-22BC Agricultural Capability
sk_ag_crown_landsk_ag_crown_landz6-22SK Agricultural Crown Land
sk_ag_crown_land_labelssk_ag_crown_landz10+SK Agricultural Crown Land (labels)
sk_pasturessk_pasturesz4-22SK Pastures
sk_pastures_labelssk_pasturesz8+SK Pastures (labels)
bc_alrbc_alrz4-22BC Agricultural Land Reserve
bc_alr_labelsbc_alrz10+BC Agricultural Land Reserve (labels)
bc_fwa_wetlandsbc_fwa_wetlandsz6-22BC 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_twpTownship (6 x 6 miles)
z6-9_secSection (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
Energy Tiles API

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
pipelinespipelinesz0-22Pipelines (also serves the label layer)
facilitiesfacilitiesz0-22Facilities
facilities_labelsfacilities_labelsz13+Facilities (labels)
og_activity_lsdog_activityz9-22Well Activity (LSD)
og_activity_secog_activity_secz6-9Well Activity (section rollup)
og_activity_twpog_activity_twpz0-6Well Activity (township rollup)
lsd_production_12molsd_productionz9-22Production, trailing 12 mo (LSD)
lsd_production_12mo_secproduction_secz6-9Production, trailing 12 mo (section rollup)
lsd_production_12mo_twpproduction_twpz0-6Production, trailing 12 mo (township rollup)
petroleum_tenurepetroleum_tenurez0-22Petroleum & Natural Gas Tenure
mineral_tenuremineral_tenurez0-22Mineral Tenure
mineral_tenure_labelsmineral_tenure_labelsz8+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_twpTownship (6 x 6 miles)
z6-9_secSection (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
Reference

Error Codes

Code Status Description
400Bad RequestInvalid legal land description
401UnauthorizedMissing or invalid API key
429Too Many RequestsRate limit exceeded
500Server ErrorInternal error - try again

Rate Limits

Rate limits vary by plan tier.

Build

1 req/sec
1,000 req/month

Scale

5 req/sec
10,000 req/month

Enterprise

25 req/sec
100,000 req/month

OpenAPI Specification

Download our OpenAPI 3.0 specification for code generation, testing, and documentation.

openapi.yaml

OpenAPI 3.0 · YAML format

Use with popular tools
Swagger UI Postman Insomnia OpenAPI Generator
Plans

API Pricing

Simple, predictable pricing.

Monthly
Annual Save 2 months

Build

For development & testing

$20 /month
  • 1,000 requests/mo
  • $0.02/request
  • 1/sec
  • Unlimited API keys
Most Popular

Scale

For production apps

$100 /month
  • 10,000 requests/mo
  • $0.01/request
  • 5/sec
  • Unlimited API keys

Enterprise

For high-volume needs

$500 /month
  • 100,000 requests/mo
  • $0.005/request
  • 25/sec
  • Unlimited API keys
Need higher volume? Contact us for enterprise solutions.

Ready to integrate?

Get your API key and start building today.