Coverage
unmap provides a worldwide vector basemap alongside Canadian geocoding and routing. Coverage is national where the source is national, and
explicitly partial where it is not. Quote /layers/{id} for licence, attribution, and
known_gaps. This page is the honest summary.
Terrain
DEM relief and elevation are worldwide within Web Mercator from global release 6,
z0–12, approximately ±85.0511°. /elevation uses the same release. Vertical datums, native
resolutions and terrain/surface models vary; this is not a uniform bare-earth DTM or national LiDAR.
/coverage.json identifies the active source. Without a
selected release, elevation is Canadian MRDEM-30 in CGVD2013.
Retained MRDEM-30 PNG relief at /terrain/4/… and Canadian contours at /contours/4/…
(z9–13) keep their archive and provenance. Their watershed spill is not US coverage.
Routing and geocoding remain Canadian. See Elevation API.
Names
Civic search uses OSM, OpenAddresses (CA), the National Address Register, and NRCan CGNDB. English and French are first-class on the same record. Official Indigenous names (including syllabics) are returned where CGNDB carries them. The corpus has an Inuktitut name for relatively few communities: that is a sourcing gap, not an engine gap. Community-stewarded names are out. OCAP® applies to Indigenous community data; open government name imports are not a partnership.
Boundaries
| Layer | Overlay tiles | Identify |
|---|---|---|
municipalities | Live on R2 (StatCan census subdivisions, OGL-Canada) | Default /identify. Needs municipalities baked into the Land image. |
parks | Live on R2 | Not identify-capable |
aboriginal-lands | Live on R2 (OGL-Canada) | Not identify-capable. Legislative/admin extents, not traditional territories. |
survey.dls / survey.nts | Live on R2 (legal-land add-on) | Ask for the layer; 403 without the add-on |
survey.parcels | Live on R2 (legal-land add-on, also included in agriculture and energy). Paints from z10. | Ask for the layer. PID search resolves too. BC only. |
GET /identify?at=lng,lat defaults to municipalities. GET /data/query uses the
same PostGIS tables for a bbox. Overlay tiles and identify/query are different paths:
tiles can paint while the Land table is still empty.
Parks: the register, not the polygon
parks is the ECCC Canadian Protected and Conserved Areas Database (CPCAD, December 2025
edition, OGL-Canada). It is national and it is deliberately not the same thing as the green park
polygon the basemap already draws: 22,438 protected areas, conserved areas and OECMs in every
governance category Canada reports to the IUCN, terrestrial and marine, each carrying its
designation type.
Features carry name (English), name_fr, name_ind (ECCC's Indigenous-language name, present
on 95 areas), class (185 designation types), biome (T terrestrial/freshwater, M marine)
and region. Marine areas that belong to no province have region: CA-MARINE.
Two honest limits. Areas appear when their reporting authority reports them, not when they are proclaimed, so a very recent designation can be missing. And ECCC's Indigenous Protected and Conserved Area flag is not ingested, so this layer will not tell you whether an area is an IPCA.
Coverage is national: every province and territory, plus Canada's marine areas.
Water, railways and remote roads: use the basemap
The basemap's own layers carry them. Water is the water layer at z0-14, railways are
kind: rail inside the roads layer at z3-14, and roads are the roads layer at z3-14, all
with name:fr and the name2/script fields that carry Indigenous names. Every style
already draws them. Zoom 15 is stored and answers 204.
For an authoritative hydrographic product rather than cartography, CanVec Hydro and the Canadian Hydrospatial Network are the sources to ask about.
Remote / northern
profile: "remote" composes existing core overlays plus remote.airports (Transport Canada
ANS points, 93 NAV CANADA towered and flight-service airports, remote add-on). Roads come from the basemap's roads layer through z14. Zoom 15 is stored and answers 204. Winter / ice / seasonal geometries are held: no licensed extract, and
the Salles & Mullan compilation is OCAP®. Place names already search through OSM / CGNDB.
Community-stewarded Indigenous data stays out (OCAP®). See
Remote profile.
Mining
profile: "mining" composes AGS Alberta occurrences and prospectivity, Saskatchewan
resource potential, and reused energy.mineral-tenure. Identify those mining ids via
Land extra tables (mining add-on). Claim numbers identify as energy.mineral-tenure.
This is not a national mine map. See Mining profile.
Routing
The Canada Valhalla graph is OSM plus NRN-class public roads already in that extract.
auto, car, bicycle, pedestrian, and truck run on that graph.
use_highways (0 avoid motorways/trunks, 1 prefer) is the one preference those road classes
support. Terrain is the other axis: cycling and walking times account for grade from our own 30 m
elevation model, and use_hills (0 avoid climbs, 1 indifferent) tunes it. Driving times do not
vary with grade, because Valhalla's driving costing has no grade term. Industry profile presets
do not change routing.
There is no winter-road graph, no resource-road costing, and no field-access network.
avoid: ["winter"] is not offered because the graph does not model the restriction.
See Routing API.
Legal land
DLS (AB/SK/MB) and NTS parse in the geocoder. Lookup needs the Land image. FPS, Ontario concession/lot, and river lots parse only. Quebec and Atlantic cadastre are not sourced. See Geocoding.
Public transit
Static data is live and national. Transit routing and isochrones are live.
/route?mode=transit and /isochrone?mode=transit run on a dedicated national graph built from
every active Canadian GTFS feed the Mobility Database lists. A feed is routing:ready only after
golden rides on the baked image return a transit leg naming it: 128 of 138 registered feeds on
2026-10-09. The rest stay in the graph unadvertised or out of it.
/transit/* is national for the routable feeds whose licence is cleared for republication: 80
feeds in seven provinces when it was first built nationally on 2026-10-09, rebuilt weekly. It
holds back 48 routable feeds:
- 44 whose terms neither the Mobility Database nor Transitland gives. They are held until the terms are found.
- 3 whose terms restrict redistribution or commercial use: Laval, Lévis and Whitehorse.
- VIA Rail Canada, whose
frequencies.txtheadways cannot be stated as exact departures.
STM (whose terms carve out the metro) and BC Ferries (terms not found) were already
served and stay on it pending a licence decision. GET /coverage.json is the live list.
- National feeds record Mobility Database terms, not a per-agency legal review. Three catalog downloads stay watch.
- Every
/transit/*response credits each feed it draws on inmeta.attribution. - GO Transit and UP Express publish no
calendar.txt, putting all service incalendar_dates.txt. GTFS permits this. The static API compiler supports it, and the normalizer synthesizescalendar.txtbefore Valhalla ingest so valhalla#5703 does not drop them in silence.
Every departure is schedule-based only and says schedule_type: "scheduled". Valhalla has no
GTFS-Realtime support and none planned, so delays and cancellations would be invisible.
arrive_by is unimplemented upstream, so the route contract accepts departure time only. There
is no transit matrix. See Transit API for the static contract.
GET /coverage.json lists every assessed feed with its terms and its gap.
Reading the dates
GET /coverage.json is unauthenticated and unmetered. Cache-Control is public, max-age=3600
while the archive serving is the Canada extract, a readable planet, or a value that is not a
build id. When BASEMAP_RELEASE names an eight-digit id whose object is not in the bucket, the
same document is private, no-store. Every source in it carries a
provenance block: source_updated_at (the publisher's own edition, when they state one),
unmap_updated_at (when we last produced what is serving), build_id, version (the
dataset version serving), content_hash, freshness_policy and freshness_status. The
document states the basis vocabulary below in its own freshness_basis, as { en, fr }.
freshness_policy.basis says where those dates came from, and it is the field to read first:
| basis | Means |
|---|---|
manifest | Written by the job that produced the deployed artifact. Observed. |
recorded | Committed in our registry by a pipeline run or a person. True when written, not watched since. |
polled | The upstream feed is queried live, per request or every few minutes by a scheduled job, so the answer is minutes old at most. |
unknown | Ingested and serving, with no date recorded for it. The date is absent, not guessed. |
none | Nothing is ingested, or the source is deliberately held. |
unknown and none are different answers and never share a word: the first says we have the data
and not the date, the second says we do not have the data.
freshness_status is current, stale or unknown, and unknown is a real answer we do not
round up. stale means past the declared cadence in freshness_policy.interval, which is a
statement about our refresh and not about the world: a source can change upstream without saying
so. freshness_policy.stale_after is the instant the word stops being current, so you can
recompute it against your own clock if you cached the document.
Each capability carries its own freshness_status, rolled up from its sources: stale if any
one is stale, current only when every one is current, and unknown otherwise. A planned
capability is unknown, because it has nothing to be fresh about.
The routing graph's build date is here too, as the routing source's unmap_updated_at, with the
OSM extract behind it as source_updated_at. Both are null rather than guessed when the deploy
that shipped the graph did not record them.
What we will not say
- Complete Indigenous-language coverage.
- National high-resolution terrain.
- That
aboriginal-landsmaps nations or traditional territories. - That
/identifyreturns municipalities before the Land bake includesmunicipalities.copy. - That routing follows resource, winter, ice, or field roads.
Next steps
- Reporting wrong data if something here is wrong where you are.
- Geocoding API and the Routing API document what each corpus answers with.
- Plans & Limits for the add-ons some of this coverage sits behind.