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.
Quickstart
Section titled “Quickstart”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)" }}Authentication
Section titled “Authentication”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.
Rate limits
Section titled “Rate limits”| 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.
Error body
Section titled “Error body”Errors carry a machine-branchable body:
{ "code": "aportee.api.bad_request", "detail": "...", "statusCode": 400 }The full status taxonomy is on the /v1/access page.
Attribution
Section titled “Attribution”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.
Limitations
Section titled “Limitations”- 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.
Machine-readable spec
Section titled “Machine-readable spec”The full contract is published as an OpenAPI 3.1 document:
https://aportee.ca/v1/openapi.yaml.