Ten layers of Canadian location intelligence, stitched into one platform.
Boundaries, addresses, listings, neighbourhoods, demographics, permits, environment, energy, schools and business — all anchored to the same geopolitical hierarchy and queryable through a single API.
The geopolitical hierarchy that anchors everything else.
Six nested levels of Canadian geography, each with full MultiPolygon boundaries, bounding boxes, and centroids. This is the foundation — every listing, permit, business, and data point in Neighbourly resolves back to its place in the hierarchy.
Hierarchy · sample
CountryCanada
ProvinceOntario
CountyPeel
Upper-TierRegion of Peel
Lower-TierCity of Mississauga
NeighbourhoodPort Credit
Address147 Lakeshore Rd
Specs and endpoints
Levels
Country → Province → County → Upper-Tier Municipality → Lower-Tier Municipality → City / District / Neighbourhood
Geometry
MultiPolygon boundaries (SRID 4326), pre-computed bounding boxes, centroid lat/lng on every level
Search
Indexed in Meilisearch (typeahead) and Elasticsearch (geo_shape viewport queries)
Every Canadian address — standardized, validated, and stitched.
Address is the leaf node of the hierarchy and the join point between your listings and everything else in Neighbourly. We normalize street components into lookup tables and denormalize the full hierarchy onto every record, so you get instant context with no spatial joins at runtime.
Address · normalized
Raw input147 lakeshore rd. e, miss, on
↓
147 Lakeshore Road East, Mississauga, ON
Number
147
Street name
Lakeshore
Suffix
Road
Direction
East
FSA / LDU
L5G · L5G 1E1
Hierarchy
→ stitched to all 6 levels
Specs and endpoints
Components
Street name, number, direction, and suffix — each in its own lookup table for clean filtering and fuzzy match
Postal
Forward Sortation Areas (FSA) and Local Delivery Units (LDU), keyed and joined to addresses
Search
pg_trgm-indexed full address; Meilisearch typeahead with ~100 street-type synonym mappings
Listing connection
Managed service that ties incoming property listings to the Neighbourly graph — clean addresses, full hierarchy, no integration overhead
Listings, agents, offices — structured for search, ready for display.
MLS and CREA-format listings, with ~80 lookup tables describing every property attribute that buyers filter on. Agent and office profiles are enriched through a live partner integration with Sutton Homebase and indexed for fuzzy name match and geo bounding box.
80+Listing attribute lookup tables
15+Building characteristic lookups
LiveSutton Homebase webhook sync
Listing · enriched
$1,249,000
listing_id
"X12345678"
address
→ Address (full hierarchy)
bedrooms
4
bathrooms
3
sqft
2,180
heating
"forced_air_gas"
roofing
"asphalt_shingle"
flooring
[hardwood, tile, ...]
listing_office
→ Office
listing_agent
→ Agent + SuttonData
neighbourhood
→ Neighbourhood
permits_5yr
→ Permit[]
demographics
→ FsaDemographic
# ...80+ attributes from CREA standard
Specs and endpoints
Listings
MLS / CREA-format records with full property attributes — roofing, heating, flooring, ratings, certifications
Agents
Profiles with photos, social media, and Sutton-enriched data — areas, phones, geocoded location
Offices
Branch profiles with the same Sutton enrichment pattern as agents
Buildings
Commercial building characteristics including LEED / BOMA certifications and façade metadata
Businesses
Corporate-registry data — names, activities, licences, sectors, annual returns — keyed to address
Search
Elasticsearch-backed: viewport bbox + property attribute filters, fuzzy name match across agents and offices
Neighbourhood data written for real estate, not GIS labs.
Curated names, descriptions and character tags that match what buyers actually search for, each with a boundary and a stable slug. Every name and description is written and reviewed by a person, not generated from census boundaries.
Neighbourhood · sample
Leslieville
slug
"leslieville-toronto"
city
"Toronto"
province
"ON"
fsa
"M4M"
character_tags
["Walkable", "Family-friendly"]
boundary
→ GeoJSON MultiPolygon
Specs and endpoints
Profiles
Curated names, descriptions and character tags, with fun facts and market notes for guide pages and SEO
Geometry
GeoJSON MultiPolygon boundaries (SRID 4326), bounding box and centroid
Slugs
Stable slugs such as leslieville-toronto, for listing URLs, canonical routes and filters
Linked data
FSA mapping, with demographics and permits linked to each neighbourhood
Demographic data keyed by Forward Sortation Area, ready for buyer profiles, neighbourhood guides, and underwriting models. Computed-percentage helpers handle the math — homeownership rate, age distribution percentages, education and employment breakdowns — so you don't have to.
FSA L5G · demographics
Age distribution
0–1417%
15–3426%
35–5432%
55+25%
Tenure
Owners68%
Renters32%
Specs and endpoints
Coverage
Every FSA in Canada with full census-derived demographic profile
Dimensions
Age distribution, household composition, tenure, income brackets, education, employment by sector, commute-time brackets
Computed
Homeownership rate, age distribution percentages, and other ratio helpers — exposed as ready-to-display fields
Building permit data, normalized across 20 Canadian cities.
Each municipality publishes permits in its own format. Neighbourly normalizes them into a single schema with shared sources, types, statuses, and structure types — so you can search renovation activity, growth signals, and investment patterns the same way everywhere we cover.
Permit coverage · 20 cities
Toronto
Ottawa
Montreal
Vancouver
Calgary
Edmonton
Brampton
Mississauga
Oakville
Kingston
Kitchener
Waterloo
N. Vancouver
Victoria
Halifax
Saint John
Winnipeg
St. Catharines
Burlington
Hamilton
Specs and endpoints
Coverage
20 cities across ON, QC, BC, AB, MB, NS, NB — covering most of urban Canada
Schema
Normalized references: sources, types, statuses, structure types, standard types — and municipal logos
Search
Meilisearch-indexed: filterable by source, type, status, cost, and date with geo filtering
Use cases
Renovation history on listings, neighbourhood activity dashboards, market intelligence, investor signal
Lakes, trails, crown land — the natural context a coordinate can't capture.
A unique-in-the-market layer for Canada. Spatial data on aquatic resources, wildlife management, public lands, and recreation — with pre-computed boundary GeoJSON at three levels of detail and pre-joined hierarchy arrays for fast viewport queries.
Spatial · multi-layerSpecs and endpoints
Lakes
Lake boundaries with bathymetry lines, aquatic resource areas (thermal regime, fish species, depth metrics), fish stocking history, and access points
Wildlife
Wildlife Management Units (WMUs) with full boundaries, fisheries management zones, bait management zones (English and French)
Public Lands
Crown land with designation and classification, public campgrounds with host info, trail networks (MultiLineString)
Hazards
Flood zone, wildfire risk, and environmental hazard overlays for risk assessment and infrastructure planning
Performance
Pre-computed GeoJSON at three LODs, pre-joined hierarchy id arrays — viewport queries hit cached data, not runtime spatial joins
Verified utility data — the missing data point on every listing.
Buyers see square footage, bedrooms, lot size — but not what the home actually costs to run. Neighbourly's newest layer joins verified utility consumption data to listings, benchmarked locally, ready for the listing page.
Energy · listing-ready
87Score Top 15% in area
Est. monthly
~$142 · Combined utilities
Vs neighbourhood
−18% · More efficient
Trend · 12mo
↘ stable · No anomalies
Verified · Green Button. 12 months of utility-grade consumption data. Consented, anonymized, and weather-normalized.
Ontario, with a pilot in BC; other provinces roll out as utility partnerships allow
Privacy
Built around explicit homeowner consent and provincial privacy law. Aggregated, listing-appropriate insights — never raw consumption data
Integration
Already joined to your boundaries, addresses, and listings via the Neighbourly graph — no extra reconciliation work
09SchoolsNew
School catchment boundaries and board hierarchy — for every Canadian address.
Which elementary school does this address feed into? Which Catholic secondary? Which school board? Neighbourly's Schools layer resolves those questions at the coordinate level — with catchment polygons, board hierarchy, bilingual designation, and feeder links all pre-joined.
Schools · catchment lookup
Elementary catchmentRosedale Junior PSToronto District School Board · Public · EN
Secondary catchmentJarvis Collegiate InstituteToronto District School Board · Public · EN
Catchment polygon. GeoJSON boundary included — render directly as a map overlay on any listing page.
Provincial ministries of education and school board open data — catchment boundaries for public, Catholic, independent, and French-language schools
Outputs
Catchment polygon (GeoJSON), school name, board name and ID, school type (elementary/secondary), language designation, feeder school links
Coverage
Canada-wide — all ten provinces and three territories; public, Catholic, and French-language systems
Query
By coordinate (catchment lookup), by school ID (full profile), by bounding box (all schools in viewport), or by board ID (all schools in a district)
Integration
Every school and catchment carries an address_id FK — joins directly to listings, boundaries, and the Livability Score catchment dimension
10BusinessNew
Corporate registry, POIs, and trade area signals — from one coordinate.
Canadian business data is scattered across provincial corporate registries, municipal licence databases, and POI aggregators with inconsistent schemas. Neighbourly's Business layer normalizes it all into a single coordinate-queryable dataset — registry filings with NAICS sector codes, operating status, and density aggregates.
Business · trade area
23Businesses within 500m
91%Active rate, operating
Top sectors
Food Services8 · 34.8%
Health Care5 · 21.7%
Retail Trade4 · 17.4%
NAICS · corporate registry. Sector breakdown, POI category counts, and active rate — all pre-aggregated in one response.
Provincial corporate registries and municipal licence data — normalized to a single schema with NAICS classification and address-keyed coordinates
Outputs
Business profile (name, NAICS sector, operating status, incorporated date), POI records by category, trade area density aggregates (sector breakdown, active rate, poi counts)
Coverage
Canada-wide — all provinces and territories
Query
By coordinate + radius (nearby businesses or trade area density), by bounding box (map viewport), by neighbourhood ID, or by stable business ID
Integration
Every business record carries an address_id FK — joins to listings, demographics, permits, and the Livability Score amenity dimension without extra reconciliation
Built on
One platform. Three databases. Two search engines.
STORAGE
PostGIS-backed core
The hierarchy, addresses, listings, and spatial layers live in PostGIS-enabled Postgres. Permits and legacy MLS records sit in dedicated databases, joined through shared keys.
SEARCH
Best-tool-for-the-query
PostGIS for precise spatial joins. Elasticsearch for viewport listings, fuzzy agent match, and geo_shape boundary queries. Meilisearch for typeahead and filterable permit search.
DELIVERY
One versioned API
Everything ships through /api/v1/ — predictable, RESO-aligned, and designed to drop into MLS infrastructure, brokerage CRMs, and listing portals.
Get in touch
Want to see your listings with every layer?
Book a 20-minute walkthrough. We'll show you the platform, demo the layers most relevant to your market, and discuss what a partnership could look like.