Overview

unmap is a Canadian-first, privacy-first maps API. One key covers three services:

  • Tiles — vector basemap tiles and ready-made styles, served from R2 at the edge.
  • Geocoding — full-text search, type-ahead autocomplete, and reverse lookup, with first-class French labels.
  • Routing — turn-by-turn routes and isochrones over the Canadian road graph.

The design goal is a time to first Hello World under 60 seconds, and two to three lines of code where the incumbents want twenty.

One key, the whole platform

The @unmap/sdk package unifies everything behind a single Stripe-style key (um_live_... in production, um_test_... for demos). Construct it once:

import { Unmap } from '@unmap/sdk'

const unmap = new Unmap({ key: 'um_live_...' })

await unmap.geocoder.search('Calgary Tower')
await unmap.router.route([-114.07, 51.05], [-113.99, 51.05])

Pass a container and you also get a rendered map:

const map = new Unmap({
  key: 'um_live_...',
  container: '#map',
  center: [-114.07, 51.05],
})

map.map      // the underlying MapLibre GL map
map.geocoder // search / autocomplete / reverse
map.router   // route / isochrone

The API surface

new Unmap(options) accepts:

OptionTypeNotes
keystringRequired. Your um_live_ or um_test_ key.
gatewaystringOptional. Override the API base URL.
containerstring | HTMLElementOptional. If set, a map is mounted here.
stylestringA demo city (calgary, montreal, iqaluit) or a style URL.
center[number, number]Optional. [lng, lat].
zoomnumberOptional initial zoom.

The instance exposes:

  • .map — the MapLibre GL map (only when a container was given). Mapbox-GL-JS-compatible surface.
  • .geocodersearch(q), autocomplete(q), reverse(lng, lat).
  • .routerroute(from, to), isochrone(center, { minutes }).

Demo cities

The three launch styles cover the country from prairie to Arctic:

  • calgary — Calgary, Alberta
  • montreal — Montréal, Québec (French-first labels)
  • iqaluit — Iqaluit, Nunavut

Why unmap

  • Untracked. Keys are metered, people are not.
  • Unlocked. Permissive caching, no expiry clock on stored tiles.
  • Unbundled. One key across tiles, geocoding, and routing.
  • Canadian residency. Requests stay on North American infrastructure.

Ready to render something? Head to the Quickstart.