NRCan Geolocation (Canada) API
Free Canadian government geocoding API with no key: search addresses, place names, postal codes, intersections and NTS map sheets in one call. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the NRCan Geolocation (Canada) API?
The NRCan Geolocation Service is Natural Resources Canada's free, key-free geocoding API. A single query searches Canadian street addresses, official place names, postal codes, road intersections and National Topographic System map sheets, returning GeoJSON geometry for each match.
This service answers one loosely typed query against several unrelated indexes at once, and the `type` field on each result tells you which one produced it. That design is a strength for a search box and a hazard for a script: a query for a postal code returns the postal-code centroid first, then a string of place names that merely resemble the input, all in the same array with no relevance score to separate them.
Filter on `type` and you get a predictable geocoder. `Street` results carry a `qualifier` of `INTERPOLATED_POSITION` for a specific house number or `INTERPOLATED_CENTROID` for a whole street; `Geoname` results are official place names from the Canadian Geographical Names Database and carry a bounding box; `PostalCode` results resolve a forward sortation area or full code; `Intersection` results locate where two named roads cross. Everything comes back as GeoJSON geometry, so the coordinate order is longitude first.
Quick facts
- Base URL
https://www.geolocator.api.geo.ca/geolocation/en- Authentication
- No key or account. Canadian federal open government data under the Open Government Licence — Canada.
- Rate limit
- No published quota. The service is occasionally slow under load and has been seen to return a transient 500, so retry once before treating a failure as real.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the NRCan Geolocation (Canada) API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Geocode a Canadian street address
GET https://www.geolocator.api.geo.ca/geolocation/en/locate?q=24%20Sussex%20Drive%20Ottawa
curl 'https://www.geolocator.api.geo.ca/geolocation/en/locate?q=24%20Sussex%20Drive%20Ottawa'const res = await fetch("https://www.geolocator.api.geo.ca/geolocation/en/locate?q=24%20Sussex%20Drive%20Ottawa");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://www.geolocator.api.geo.ca/geolocation/en/locate?q=24%20Sussex%20Drive%20Ottawa", timeout=20)
res.raise_for_status()
print(res.json())[
{
"title": "24 Sussex Drive, City Of Ottawa, Ontario",
"qualifier": "INTERPOLATED_POSITION",
"type": "ca.gc.nrcan.geoloc.data.model.Street",
"geometry": {
"type": "Point",
"coordinates": [
-75.69329403189005,
45.44355584445403
]
}
},
{
"title": "Cold Lake, 24-63-2-W4, Alberta (City)",
"qualifier": "LOCATION",
"type": "ca.gc.nrcan.geoloc.data.model.Geoname",
"bbox": [
-110.1866667,
54.43,
-110.1466667,
54.47
],
"geometry": {
"type": "Point",
"coordinates": [
-110.16666670000001,
54.45000000000001
]
}
},
{
"title": "Crystal City, 24-2-12-W, Manitoba (Village)",
"qualifier": "LOCATION",
"type": "ca.gc.nrcan.geoloc.data.model.Geoname",
"bbox": [
-98.9700574,
49.1353,
-98.9374866,
49.1601342
],
"geometry": {
"type": "Point",
"coordinates": [
-98.95377199999999,
49.147717099999994
]
}
},
{
"title": "Lady Grey Drive & Sussex Drive, City Of Ottawa, Ontario",
"qualifier": "LOCATION",
"type": "ca.gc.nrcan.geoloc.data.model.Intersection",
"geometry": {
"type": "Point",
"coordinates": [
-75.6989979,
45.43444469999997
]
}
},
{
"title": "Lady Grey Drive & Sussex Drive, City Of Ottawa, Ontario",
"qualifier": "LOCATION",
"type": "ca.gc.nrcan.geoloc.data.model.Intersection",
"geometry": {
"type": "Point",
"coordinates": [
-75.69914130000001,
45.43450209Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | query | Required | The query: address, place name, postal code or intersection. One box searches all of them. 24 Sussex Drive Ottawa |
(language) | path | Required | `en` or `fr` in the path selects the language of returned names. en |
(postal code) | query | Optional | A full postal code with a space, such as `K1A 0B1`, resolves to a code centroid. Without the space it is treated as free text. K1A 0B1 |
(intersection) | query | Optional | Two road names joined by `&` returns the crossing point. Bank St & Somerset St |
Response fields
titlestring- Human-readable label for the match, already formatted with its province and, for place names, its type in brackets.
qualifierstring- How precise the match is: `INTERPOLATED_POSITION` for a house number, `INTERPOLATED_CENTROID` for a whole street, `LOCATION` for a named place.
typestring- Which index matched — `...model.Street`, `...model.Geoname`, `...model.PostalCode` or `...model.Intersection`. Filter on this.
geometryobject- GeoJSON Point. Coordinates are `[longitude, latitude]`, so the first number is negative across all of Canada.
bboxarray- Bounding box as `[minLon, minLat, maxLon, maxLat]`, present on Geoname results and useful for setting a map extent.
What you can build with the NRCan Geolocation (Canada) API
- Geocode Canadian addresses without a commercial key
- Build a single search box covering addresses, towns and postal codes
- Resolve a forward sortation area to a point for coarse mapping
- Locate a road intersection for incident or dispatch reporting
- Look up official bilingual place names from the national gazetteer
Common errors and how to fix them
Irrelevant place names in the results
Every index is searched at once and matches are concatenated, not ranked.
Fix: Filter on the `type` field. For addresses keep only results whose type ends in `model.Street`.
A bare postal code returns odd matches
Without a space it is treated as free text and fuzzy-matched against place names.
Fix: Send the code with its space, as `K1A 0B1`. The PostalCode result then appears first.
500 Internal Server Error
Transient — the service occasionally fails under load.
Fix: Retry once after a short pause. A repeated 500 for the same query usually means the query itself is malformed.
Coordinates appear reversed
Not an error — the geometry is GeoJSON, so longitude comes first.
Fix: Every Canadian longitude is negative, which makes the check easy: if the first number is positive, you have the pair the wrong way round.
NRCan Geolocation (Canada) API — frequently asked questions
Is the Canadian geolocation API free?
Yes, free with no key or registration. It is federal open government data published under the Open Government Licence — Canada, so commercial use is allowed with attribution.
Why do unrelated towns appear in my results?
The service queries addresses, place names, postal codes and intersections simultaneously and returns everything it found in one array. Filtering on the `type` field is not optional if you want predictable output.
Can it return French place names?
Yes. Swap `en` for `fr` in the path and official French names are returned instead, which matters for Quebec and for federally bilingual place names.
How precise are the address results?
They are interpolated along road segments, and the `qualifier` field says which kind you got. `INTERPOLATED_POSITION` estimates a specific house number; `INTERPOLATED_CENTROID` gives the middle of the whole street, which can be hundreds of metres out.
Tools that pair with this API
GeoJSON Validator
Validate GeoJSON against RFC 7946 and get the exact JSON path of every problem: unclosed rings, swapped coordinates, missing properties and more.
Coordinate Converter
Convert GPS coordinates between decimal degrees, degrees-minutes-seconds and decimal minutes instantly. Paste any format like 40°26'46"N and copy the result.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
NRCan Geolocation (Canada) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.