Reverse Geocoding API · Canada

From coordinates to full Canadian address & neighbourhood.

Pass a lat/lng and receive a normalized civic address, curated neighbourhood name, FSA, city, province, and six levels of geographic hierarchy — all in a single API call. PostGIS point-in-polygon. Canadian data. Canadian hosting.

lat/lng → address 6-level hierarchy Neighbourhood-aware PostGIS REST · JSON
Input · coordinates
43.6532° N 79.3832° W
street_address 199 Bay Street
city Toronto
province ON
postal_code M5L 1G9
neighbourhood Financial District
Geographic hierarchy
Financial Districtneighbourhood
M5LFSA
Torontocity
Toronto Divisioncensus division
Ontarioprovince
Canadacountry
Lat/lng → normalized address Full neighbourhood name returned 6-level geographic hierarchy PostGIS point-in-polygon Canadian data · Canadian hosting
What sets it apart

Not just an address — the full geographic context.

Most reverse geocoding APIs return a formatted string. Neighbourly returns a structured object: normalized civic address, curated neighbourhood, FSA, census division, and province — every level of the Canadian geographic hierarchy from a single coordinate pair.

📍

Neighbourhood-aware

PostGIS point-in-polygon matching resolves every coordinate pair to a curated Neighbourly neighbourhood boundary — not a nearest-centroid estimate. The neighbourhood name is real-estate-ready, not algorithmic.

🏗

Full 6-level hierarchy

Every response includes neighbourhood, FSA, municipality, census division, province, and country — as structured fields, not a single formatted string. Build breadcrumbs, filters, or faceted search without re-parsing.

🔌

Linked to the full platform

The response includes _links to the matched neighbourhood profile, demographics, and building permit data — so a single coordinate can open up the entire Neighbourly data platform.

Geographic hierarchy

Six levels returned from every coordinate.

The Canadian geographic hierarchy is structured but not always obvious — census subdivisions, census divisions, forward sortation areas, and curated neighbourhood boundaries don't always align. Neighbourly resolves them all at query time.

Every level is returned as a structured object with id, name, and slug — ready to drive URL routing, filter state, or breadcrumb components.

L1NeighbourhoodCabbagetown
L2Forward Sortation Area (FSA)M4X
L3Municipality / CityToronto
L4Census DivisionToronto Division
L5Province / TerritoryOntario
L6CountryCanada
Response schema

Structured fields for every geographic level.

Every field is typed and named consistently with the rest of the Neighbourly platform — so a reverse geocode response plugs directly into your address validation or neighbourhood data workflows.

  • street_numberCivic street number
  • street_nameNormalized street name
  • street_typeStreet type (St, Ave, Blvd…)
  • unitSuite/unit number if applicable
  • postal_codeFull 6-character Canadian postal code
  • fsaForward Sortation Area (first 3 chars)
  • cityMunicipality name
  • province2-letter province/territory code
  • neighbourhoodCurated neighbourhood object (id, name, slug)
  • hierarchyFull 6-level geographic hierarchy array
  • _linksLinked resources: neighbourhood, demographics, permits
GET /v1/reverse_geocode?lat=43.6532&lng=-79.3832 200 OK
{
  "street_number": "199",
  "street_name":   "Bay",
  "street_type":   "Street",
  "postal_code":   "M5L 1G9",
  "fsa":           "M5L",
  "city":          "Toronto",
  "province":      "ON",
  "neighbourhood": {
    "id":   "nbhd_fin_dist_tor",
    "name": "Financial District",
    "slug": "financial-district-toronto"
  },
  "hierarchy": [
    { "level": "neighbourhood", "name": "Financial District" },
    { "level": "fsa",           "name": "M5L" },
    { "level": "city",          "name": "Toronto" },
    { "level": "province",      "name": "Ontario", "code": "ON" }
  ],
  "_links": {
    "neighbourhood": "/v1/neighbourhood_by_slug/financial-district-toronto",
    "demographics":  "/v1/demographics/find?fsa=M5L",
    "permits":       "/v1/permits?fsa=M5L"
  }
}
Who uses it

Any product that starts with a point on a map.

From mobile GPS flows to map click interactions to IoT fleet data — when you have coordinates, Neighbourly turns them into full Canadian geographic context.

Mobile Apps

GPS location → listing search

On app open, resolve the device's GPS coordinates to a neighbourhood and city. Pre-fill a neighbourhood search, show "listings near you," or surface neighbourhood demographics — no address entry required.

Listing Maps

Map tap → full property context

When a user taps a point on a property map, reverse geocode the coordinates to retrieve the address, neighbourhood, and FSA. Feed these into your listing search, or display a neighbourhood profile panel in the sidebar.

Data Pipelines

Enrich lat/lng property records

Have a dataset of properties with coordinates but no structured addresses? Bulk reverse geocode to add normalized street addresses, FSAs, and neighbourhood IDs. Make the data joinable with census, permit, and energy datasets.

IoT & Commercial

Fleet, site survey, and field tools

Field inspection apps, commercial real estate survey tools, and site assessment platforms all generate GPS coordinates. Reverse geocode them instantly to create structured location records without manual address entry.

Turn any Canadian coordinate into address + neighbourhood.

Talk to us about API access, volume pricing, or how reverse geocoding fits into your location intelligence stack.

Frequently asked questions

Common questions about this data and how to use it.

What does the Reverse Geocoding API do?

It converts lat/lng coordinates into a normalized Canadian address, neighbourhood, and full 6-level geographic hierarchy.

What is the 6-level hierarchy?

From country down through province, census division, municipality, neighbourhood, and address-level geography.

Are the data and hosting Canadian?

Yes — Canadian data and Canadian hosting, for data-residency-sensitive applications.

How accurate is the address match?

Coordinates resolve to the nearest civic address point, with neighbourhood and boundary context attached.

What format does it return?

JSON, with GeoJSON geometry available for the returned boundaries.