Skip to content
Preview – data under validation

API overview

Walking-time access to everyday amenities – grocery, pharmacy, school, hospital, and 14 more – for any point in Canada, computed at 2021 census block resolution from a slope-aware pedestrian routing engine.

Terminal window
curl "https://aportee.ca/v1/access?lat=43.25085&lon=-79.81809&include=minutes,place,narrative"
{
"block_id": "35250772001",
"point": { "lat": 43.25085, "lon": -79.81809 },
"minutes": {
"grocery": { "value": 6, "reason": "ok" },
"pharmacy": { "value": 3, "reason": "ok" },
"hospital": { "value": 37, "reason": "ok" }
},
"place": { "name": "Hamilton", "prov": "ON", "distance_m": 940, "kind": "nearest" },
"narrative": "Groceries are a short walk; a pharmacy is a short walk.",
"meta": {
"vintage": 2021,
"data_version": "2026-07-canada-v3",
"methodology": "R5 walk, Tobler slope-adjusted",
"attribution": "StatCan · ODbL (derived)"
}
}

Anonymous access works for most read endpoints. A key unlocks named POIs, batch lookups, and image rendering, and raises the daily limit. Send it as ?key= or the X-Api-Key header. Keys are hand-issued – email feedback@aportee.ca.

Tier Limit How
Anonymous 100 requests/day per IP no key needed
Keyed 10,000 requests/day ?key= or X-Api-Key header

Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset (Unix timestamp of the next UTC-day reset). Exceeding the limit returns 429. The counter is a daily counter, not exactly-once under concurrent bursts, so treat the limits as approximate.

Errors carry a machine-branchable body:

{ "code": "aportee.api.bad_request", "detail": "...", "statusCode": 400 }

The full status taxonomy is on the /v1/access page.

The travel-time output is a Produced Work derived from ODbL sources (OpenStreetMap road network and amenities, StatCan census blocks and population). If you display or redistribute results, credit OpenStreetMap contributors and StatCan, and note the data is available under the Open Database License. The API serves computed minutes-per-block, not a POI database; bulk extraction of the underlying amenity database is not permitted.

  • Nearest-of-type only. Each amenity type reports the single nearest instance, not a ranked list.
  • 2021 census vintage. Population and block geometry are from the 2021 census.
  • Block resolution. Results are per dissemination block (StatCan’s smallest census geography), not per address.
  • Walking by default. Bike/drive modes are rolling out; walking is the baseline.
  • No cap on reported minutes. A far amenity reports its true walking time, which can exceed 30 minutes.

The full contract is published as an OpenAPI 3.1 document: https://aportee.ca/v1/openapi.yaml.