Build amazing apps with our API

Use our API to build fast and reliable apps across different platforms.

Township Canada API

Township Canada provides API endpoints designed for seamless integration of legal land description lookups and grid map visualizations into your applications. These APIs are compatible with the DLS grid system across the Prairies (Alberta, Saskatchewan, Manitoba) and BC's Peace River Region, as well as the NTS grid for British Columbia and Geographic Townships in Ontario.

Simple pricing, flexible plans

Township Canada offers a simple and flexible pricing model for our API offerings, including Search, Autocomplete, Batch, and Maps. You can choose from three different tiers to fit your requirements. Each tier comes with a limit on concurrent requests and a monthly quota for total API calls. You can choose to pay monthly or annually, and cancel at any time.

Get started quickly with our APIs by following our quick-start guides. These guides provide step-by-step instructions and examples to help you get up and running with our APIs in no time.

If your project requires a customized API or a higher usage limit, don't hesitate to reach out to us . We're here to collaborate and provision the perfect API solution to suit your specific needs.

Search

Geocode, quickly and accurately.

$10/month

Get started today
  • Access a complete database covering AB, BC, SK, MB, and ON.
  • Query townships, sections, quarter sections, LSDs, and more.
  • 1 request per second.
  • 1,000 requests per month.

Autocomplete

Geocode with smart suggestions.

$10/month

Get started today
  • Access a complete database covering AB, BC, SK, MB, and ON.
  • Query townships, sections, quarter sections, LSDs, and more.
  • 1 request per second.
  • 1,000 requests per month.

Batch

Geocode large datasets efficiently.

$20/month

Get started today
  • Access a complete database covering AB, BC, SK, MB, and ON.
  • Query townships, sections, quarter sections, LSDs, and more.
  • 100 records per request.
  • 1 request per second.
  • 1,000 requests per month.

Maps

Display legal survey grids in your app.

$10/month

Get started today
  • Access a complete database covering AB, BC, SK, MB, and ON.
  • Display ownships, sections, quarter sections, LSDs, and more.
  • Deliver maps using our fast, smooth, and customizable vector tiles.
  • Unlimited requests per second.
  • 10,000 requests per month.

How to use the Search API

Using the Search API, you can convert legal land descriptions to geographic coordinates. You can also find the legal land location associated with a pair of longitude and latitude. The API accepts input parameters as query strings and returns a GeoJSON response in return.

Convert legal land description to geographic coordinates (longitude and latitude)

  • Base URL: https://developer.townshipcanada.com
  • Endpoint: GET /search/legal-location
  • Parameters:
    • location (required): 1-2-23-22-W4
  • Authentication (Header): X-API-Key: 1234567890abcdefghij
  • Response: GeoJSON FeatureCollection, which includes the legal land location block and its center point.

Curl

JavaScript

Python

API Response

Convert geographic coordinates (longitude and latitude) to legal land description

  • Base URL: https://developer.townshipcanada.com
  • Endpoint: GET /search/coordinates
  • Parameters:
    • location (required): -98.2314,52.23424
    • survey_system (optional): DLS

      This is an optional parameter, providing results from different survey systems. Allowed inputs are DLS, NTS, River Lot, and Geographic Township. In case you do not specify the unit, the API will return the survey system of the smallest grid block that contains the input coordinates.

    • unit (optional): Section

      This is an optional parameter, providing grids with different resolutions. Allowed inputs are Township, Section, Quarter Section, and LSD for DLS; Quarter Unit for BC NTS; River/Parish Lot for Manitoba's River Lots; Lot and Concession for Ontario's Geographic Townships; and all, which returns all the grid blocks that contain the input coordinates. In case you do not specify the unit, the API will return the smallest grid block that contains the input coordinates.

  • Authentication (Header): X-API-Key: 1234567890abcdefghij
  • Response: GeoJSON FeatureCollection, which includes the legal land location block and its center point.

Curl

JavaScript

Python

API Response

How to use the Autocomplete API

Using the Autocomplete API, you can search for legal land descriptions using partial or full text and get up to 10 results that matched the input in return. The result includes the input search term, the matched legal land description, and their associated geographic coordinates. The API accepts input parameters as query strings and returns a GeoJSON response in return.

Note that you can only use the Autocomplete API to convert legal land descriptions to geographic coordinates. Use the Search API to convert geographic coordinates to legal land descriptions.

  • Base URL: https://developer.townshipcanada.com
  • Endpoint: GET /autocomplete/legal-location
  • Parameters:
    • location (required): NW-2
    • limit (optional): 5

      This is an optional parameter, specifying the maximum number of results to return. The default is 3 and the maximum supported is 10.

    • proximity (optional): -114.12435,51.0243

      This is an optional parameter, biasing the response to favor results that are closer to the specified coordinates. Allowed values are longitude,latitude and latitude,longitude.

  • Authentication (Header): X-API-Key: 1234567890abcdefghij
  • Response: GeoJSON FeatureCollection, which includes the matched legal land descriptions and their center points.

Curl

JavaScript

Python

API Response

How to use the Batch API

Using the Batch API, you can convert legal land descriptions to geographic coordinates and vice versa, much like our Search API. However, what sets the Batch API apart is its ability to process up to 100 records in a single API call. The API accepts the input parameters as a JSON object using HTTP POST and returns a GeoJSON response in return.

Convert legal land description to geographic coordinates (longitude and latitude)

  • Base URL: https://developer.townshipcanada.com
  • Endpoint: POST /batch/legal-location
  • Message Body (JSON): ["NE-7-102-19-W4","1-24-60-1-W5","7-66-4-W6"]
  • Authentication (Header): X-API-Key: 1234567890abcdefghij
  • Response: GeoJSON FeatureCollection, which includes the legal land location blocks and their center points.

Curl

JavaScript

Python

API Response

Convert to geographic coordinates (longitude and latitude) to legal land description

  • Base URL: https://developer.townshipcanada.com
  • Endpoint: POST /batch/coordinates
  • Message Body (JSON): {"coordinates":[[-110.086743843,54.28602155], [-110.011880321,54.336941143], [-110.074171308,54.336931111]], "survey_system":"DLS","unit":"Quarter Section"}

    survey_system is an optional parameter, providing results from different survey systems. Allowed inputs are DLS, NTS, River Lot, and Geographic Township. In case you do not specify the unit, the API will return the survey system of the smallest grid block that contains the input coordinates.

    unit is also an optional parameter, providing grids with different resolutions. Allowed inputs are Township, Section, Quarter Section, and LSD for DLS; Quarter Unit for BC NTS; River/Parish Lot for Manitoba's River Lots; Lot and Concession for Ontario's Geographic Townships; and all, which returns all the grid blocks that contain the input coordinates. In case you do not specify the unit, the API will return the smallest grid block that contains the input coordinates.

  • Authentication (Header): X-API-Key: 1234567890abcdefghij
  • Response: GeoJSON FeatureCollection, which includes the legal land location block and its center point.

Curl

JavaScript

Python

API Response

How to use the Maps API

The Maps API allows you to display legal survey grids on maps for both web and mobile applications by serving geospatial data in the vector tiles format. You can render these vector tiles using various web mapping libraries, including Mapbox GL JS, OpenLayers, and Leaflet. See here for a complete example.

Each grid block (e.g., Township, Section, LSD, etc.) is represented by two vector tile layers: one for the grid and another for labels. The grid tile layer contains the geometries of the block, showing boundaries, while the label tile layer displays names and other properties. For instance, the Township grid tile for Alberta is accessible at: https://maps.townshipcanada.com/ab/twp/{z}/{x}/{y}.mvt?api_key=.... The corresponding label tile for the same block is available at: https://maps.townshipcanada.com/ab/twp-label/{z}/{x}/{y}.mvt?api_key=....

Each vector tile layer is documented in a metadata file, which provides details such as the tile URL, source layer, supported zoom levels, and properties. For example, the metadata URL for the Alberta Township grid is: https://maps.townshipcanada.com/ab/twp.json?api_key=..., and the metadata URL for the Alberta Township label is: https://maps.townshipcanada.com/ab/twp-label.json?api_key=.... The metadata document for the Alberta Township label contains the following information:

These metadata files include information necessary for integrating and utilizing the vector tiles effectively within your applications.

The DLS grid

The Maps API offers the DLS grid in four different resolutions for Alberta, Saskatchewan, Manitoba, and BC's Peace River Region: Township (twp), Section (sec), Quarter Section (qtr), and LSD (lsd). For each block, there are two vector tile sources: one for the grid and another for the labels. For instance, here is the tile URL for displaying Alberta's township block and its corresponding label.

Mapbox GL JS

Note that you can substitute ab with bc, sk, or mb to visualize the grid map for British Columbia, Saskatchewan, or Manitoba. Additionally, you can replace twp with sec, qtr, or lsd to display section, quarter section, or LSD blocks. Similarly, you can exchange twp-label with sec-label, qtr-label, or lsd-label to visualize labels for section, quarter section, or LSD blocks.

Use the table below to display and label the grid layers for Township, Section, Quarter Section, and LSD blocks on the map.

Grid typeRegionTile URLSource layerZoom levelProperties
TownshipAlbertahttps://maps.townshipcanada.com/ab/twp/{z}/{x}/{y}.mvt?api_key=...ab_twp0 - 14id
TownshipBritish Columbiahttps://maps.townshipcanada.com/bc/twp/{z}/{x}/{y}.mvt?api_key=...bc_twp0 - 14id
TownshipSaskatchewanhttps://maps.townshipcanada.com/sk/twp/{z}/{x}/{y}.mvt?api_key=...sk_twp0 - 14id
TownshipManitobahttps://maps.townshipcanada.com/mb/twp/{z}/{x}/{y}.mvt?api_key=...mb_twp0 - 14id
SectionAlbertahttps://maps.townshipcanada.com/ab/sec/{z}/{x}/{y}.mvt?api_key=...ab_sec9 - 14id
SectionBritish Columbiahttps://maps.townshipcanada.com/bc/sec/{z}/{x}/{y}.mvt?api_key=...bc_sec9 - 14id
SectionSaskatchewanhttps://maps.townshipcanada.com/sk/sec/{z}/{x}/{y}.mvt?api_key=...sk_sec9 - 14id
SectionManitobahttps://maps.townshipcanada.com/mb/sec/{z}/{x}/{y}.mvt?api_key=...mb_sec9 - 14id
Quarter SectionAlbertahttps://maps.townshipcanada.com/ab/qtr/{z}/{x}/{y}.mvt?api_key=...ab_qtr9 - 14id
Quarter SectionBritish Columbiahttps://maps.townshipcanada.com/bc/qtr/{z}/{x}/{y}.mvt?api_key=...bc_qtr9 - 14id
Quarter SectionSaskatchewanhttps://maps.townshipcanada.com/sk/qtr/{z}/{x}/{y}.mvt?api_key=...sk_qtr9 - 14id
Quarter SectionManitobahttps://maps.townshipcanada.com/mb/qtr/{z}/{x}/{y}.mvt?api_key=...mb_qtr9 - 14id
LSDAlbertahttps://maps.townshipcanada.com/ab/lsd/{z}/{x}/{y}.mvt?api_key=...ab_lsd9 - 14id
LSDBritish Columbiahttps://maps.townshipcanada.com/bc/lsd/{z}/{x}/{y}.mvt?api_key=...bc_lsd9 - 14id
LSDSaskatchewanhttps://maps.townshipcanada.com/sk/lsd/{z}/{x}/{y}.mvt?api_key=...sk_lsd9 - 14id
LSDManitobahttps://maps.townshipcanada.com/mb/lsd/{z}/{x}/{y}.mvt?api_key=...mb_lsd9 - 14id
Label typeRegionLabel tile URLSource layerSource zoom levelProperties
TownshipAlbertahttps://maps.townshipcanada.com/ab/twp-label/{z}/{x}/{y}.mvt?api_key=...ab_twp_label0 - 14id, descriptor, township, range, meridian
TownshipBritish Columbiahttps://maps.townshipcanada.com/bc/twp-label/{z}/{x}/{y}.mvt?api_key=...bc_twp_label0 - 14id, descriptor, township, range, meridian
TownshipSaskatchewanhttps://maps.townshipcanada.com/sk/twp-label/{z}/{x}/{y}.mvt?api_key=...sk_twp_label0 - 14id, descriptor, township, range, meridian
TownshipManitobahttps://maps.townshipcanada.com/mb/twp-label/{z}/{x}/{y}.mvt?api_key=...mb_twp_label0 - 14id, descriptor, township, range, meridian
SectionAlbertahttps://maps.townshipcanada.com/ab/sec-label/{z}/{x}/{y}.mvt?api_key=...ab_sec_label9 - 14id, descriptor, section, township, range, meridian
SectionBritish Columbiahttps://maps.townshipcanada.com/bc/sec-label/{z}/{x}/{y}.mvt?api_key=...bc_sec_label9 - 14id, descriptor, section, township, range, meridian
SectionSaskatchewanhttps://maps.townshipcanada.com/sk/sec-label/{z}/{x}/{y}.mvt?api_key=...sk_sec_label9 - 14id, descriptor, section, township, range, meridian
SectionManitobahttps://maps.townshipcanada.com/mb/sec-label/{z}/{x}/{y}.mvt?api_key=...mb_sec_label9 - 14id, descriptor, quarter_section, section, township, range, meridian
Quarter SectionAlbertahttps://maps.townshipcanada.com/ab/qtr-label/{z}/{x}/{y}.mvt?api_key=...ab_qtr_label9 - 14id, descriptor, quarter_section, section, township, range, meridian
Quarter SectionBritish Columbiahttps://maps.townshipcanada.com/bc/qtr-label/{z}/{x}/{y}.mvt?api_key=...bc_qtr_label9 - 14id, descriptor, quarter_section, section, township, range, meridian
Quarter SectionSaskatchewanhttps://maps.townshipcanada.com/sk/qtr-label/{z}/{x}/{y}.mvt?api_key=...sk_qtr_label9 - 14id, descriptor, quarter_section, section, township, range, meridian
Quarter SectionManitobahttps://maps.townshipcanada.com/mb/qtr-label/{z}/{x}/{y}.mvt?api_key=...mb_qtr_label9 - 14id, descriptor, quarter_section, section, township, range, meridian
LSDAlbertahttps://maps.townshipcanada.com/ab/lsd-label/{z}/{x}/{y}.mvt?api_key=...ab_lsd_label9 - 14id, descriptor, lsd, section, township, range, meridian
LSDBritish Columbiahttps://maps.townshipcanada.com/bc/lsd-label/{z}/{x}/{y}.mvt?api_key=...bc_lsd_label9 - 14id, descriptor, lsd, section, township, range, meridian
LSDSaskatchewanhttps://maps.townshipcanada.com/sk/lsd-label/{z}/{x}/{y}.mvt?api_key=...sk_lsd_label9 - 14id, descriptor, lsd, section, township, range, meridian
LSDManitobahttps://maps.townshipcanada.com/mb/lsd-label/{z}/{x}/{y}.mvt?api_key=...mb_lsd_label9 - 14id, descriptor, lsd, section, township, range, meridian

The NTS grid

The Maps API offers the NTS grid in three different resolutions for British Columbia: Series (series), Blocks (block), Units (unit), and Quarter Units (qtr-unit). Just like the DSL grid options, there are two vector tile sources available for both the grid maps and their labels. Here is an example of the tile URL for presenting BC's series grid along with its label.

Mapbox GL JS

You have the flexibility to substitute series with block, unit, or qtr-unit to display block or unit grids. Likewise, you can replace series-label with block-label, unit-label, or qtr-unit-label to visualize labels for block or unit grids.

Use the table below to display and label the grid layers for Series, Blocks, Units, and Quarter Units on the map.

Grid typeRegionTile URLSource layerZoom levelProperties
SeriesBritish Columbiahttps://maps.townshipcanada.com/bc/series/{z}/{x}/{y}.mvt?api_key=...bc_series0 - 14id
BlockBritish Columbiahttps://maps.townshipcanada.com/bc/block/{z}/{x}/{y}.mvt?api_key=...bc_block9 - 14id
UnitBritish Columbiahttps://maps.townshipcanada.com/bc/unit/{z}/{x}/{y}.mvt?api_key=...bc_unit9 - 14id
Quarter UnitBritish Columbiahttps://maps.townshipcanada.com/bc/qtr-unit/{z}/{x}/{y}.mvt?api_key=...bc_qtr_unit9 - 14id
Label typeRegionLabel tile URLSource layerSource zoom levelProperties
SeriesBritish Columbiahttps://maps.townshipcanada.com/bc/series-label/{z}/{x}/{y}.mvt?api_key=...bc_series_label0 - 14id, descriptor, series, area, sheet
BlockBritish Columbiahttps://maps.townshipcanada.com/bc/block-label/{z}/{x}/{y}.mvt?api_key=...bc_block_label9 - 14id, descriptor, block, series, area, sheet
UnitBritish Columbiahttps://maps.townshipcanada.com/bc/unit-label/{z}/{x}/{y}.mvt?api_key=...bc_unit_label9 - 14id, descriptor, unit, block, series, area, sheet
Quarter UnitBritish Columbiahttps://maps.townshipcanada.com/bc/qtr-unit-label/{z}/{x}/{y}.mvt?api_key=...bc_qtr_unit_label9 - 14id, descriptor, qtr, unit, block, series, area, sheet

The Geographic Township grid

The Maps API offers the Geographic Township grid in three distinct resolutions for Ontario: Townships (twp), Concessions (con), and Lots (lot). Each block includes two vector tile sources: one for the grid and another for the label. For instance, here is the tile URL for presenting Ontario's township block along with its corresponding label.

Mapbox GL JS

You can substitute twp with con or lot to visualize the grid for concessions or lots. Likewise, you can replace twp-label with con-label or lot-label to display labels for concessions or lots.

Use the table below to display and label the grid layers for Townships, Concessions, and Lots on the map.

Grid typeRegionTile URLSource layerZoom levelProperties
TownshipOntariohttps://maps.townshipcanada.com/on/twp/{z}/{x}/{y}.mvt?api_key=...on_twp0 - 14id
ConcessionOntariohttps://maps.townshipcanada.com/on/con/{z}/{x}/{y}.mvt?api_key=...on_con9 - 14id
LotOntariohttps://maps.townshipcanada.com/on/lot/{z}/{x}/{y}.mvt?api_key=...on_lot9 - 14id
Label typeRegionLabel tile URLSource layerSource zoom levelProperties
TownshipOntariohttps://maps.townshipcanada.com/on/twp-label/{z}/{x}/{y}.mvt?api_key=...on_twp_label0 - 14id, descriptor
ConcessionOntariohttps://maps.townshipcanada.com/on/con-label/{z}/{x}/{y}.mvt?api_key=...on_con_label9 - 14id, descriptor, concession, twp
LotOntariohttps://maps.townshipcanada.com/on/lot-label/{z}/{x}/{y}.mvt?api_key=...on_lot_label9 - 14id, descriptor, lot, concession, twp

Here is an example that displays the DLS and NTS grids for British Columbia, Alberta, Saskatchewan, and Manitoba, plus the Geographic Townships for Ontario, similar to the grid map you see on townshipcanada.com. Give it a try and let us know if you have any questions. Happy coding!