Worldwide maps API for developers

Maps, geocoding, routing.
Your first map in 60 seconds.

Worldwide vector maps, with Canadian geocoding and routing, on open formats you can take with you. Two lines of code. No sales call, no tracking, no 30-day cache limit.

import { Unmap } from "@unmap/sdk";
new Unmap({ key: "um_live_...", container: "map", center: [-114.0719, 51.0447], zoom: 11 });
GET……
connecting…
§ 01 / apis

Everything, one meter.

Three services drawing on one pool of calls. Use only the geocoder and keep your current basemaps, or take all three.

maps

Worldwide vector basemaps for MapLibre, Leaflet, OpenLayers, or any vector-tile client. Twelve styles in light and dark, cache them as long as you like, plus national Canadian hillshade and contours.

import { createMap } from '@unmap/maps'
createMap({ key, container: 'map', style: 'base' })

geocoding

Addresses and place names to coordinates, and back. Roughly 19 million Canadian records, built for search as you type, with English, French, and Inuktitut names on one record.

import { Geocoder } from '@unmap/geocoding'
await new Geocoder({ key }).search('Calgary Tower')

routing

Distance, duration, and a route line across Canadian roads. Driving, trucking, cycling, and walking, plus travel-time isochrones.

import { Unmap } from '@unmap/sdk'
await new Unmap({ key }).router.route(from, to)
§ 02 / benchmark

Time to first hello world.

We measure one number above all others. This is it, timed from an empty directory.

  1. 00:00npm i @unmap/sdk
  2. 00:12paste your key
  3. 00:31first map renders
  4. 00:58a map on your page
§ 03 / coverage

Canadian coverage in full detail.

The places global providers treat as secondary, built here as the whole point.

National Address Register

StatsCan's authoritative address file, loaded alongside OpenAddresses and OpenStreetMap. Street-level detail in small towns, not just the metros.

Indigenous names in the data

Iqaluit carries ᐃᖃᓗᐃᑦ and Nunavut carries ᓄᓇᕗᑦ where the source data includes them, returned on the feature itself rather than through a translation layer bolted on at the end.

en, fr, and iu on one record

Query Montreal and the response carries all three names at once. Pick the locale when you render, not when you build, and the basemap labels follow the same setting.

The North is not a rounding error

Yellowknife street addresses and Iqaluit routing resolve as reliably as downtown Calgary, because the same pipeline built all of it.

Searching in syllabics works: query ᐃᖃᓗᐃᑦ or ᐸᖕᓂᖅᑑᖅ and the locality resolves. The gap is sourcing, not the engine: the corpus carries an Inuktitut name for relatively few communities, so a place without one stored is not found yet. Legal-land search (DLS, NTS, and related systems) is available on the legal-land add-on; a rural route resolves to its community, not the mailbox.

The full argument: why another maps API →

§ 04 / privacy

We meter keys, not people.

Here is every field the gateway keeps when your map asks for a tile.

access.log

GET /tiles/12/652/1408.mvt

ip addressnot stored

user-agentnot stored

query / coordinatesnot logged or tied to an account; edge-cached up to 24h

device idnever collected

API key id✓ counted for usage and billing

request outcome✓ endpoint class, status, latency; kept 7 days

Privacy Policy readable before you sign up or pay.

§ 05 / pricing

One meter. No minimums.

Cache results forever on every tier, including after you cancel. Start free, with no card and no surprise overage.

dev

Build and prototype. Not for production.

$0/ forever
  • Unlimited calls on localhost, preview URLs, and CI
  • Every API, every style
  • No credit card
  • Community support
Start building

indie

most popular

One production app.

$19/ per month
  • 250,000 calls included
  • $1 per 1,000 after
  • 1 production domain
  • Spend cap on by default
  • Email support
Get a key

growth

Production, at volume.

$99/ per month
  • 2,000,000 calls included
  • $0.75 per 1,000 after
  • 100 origins per key
  • Spend cap on by default
  • Priority support
Get a key

Higher volume and custom terms: see full pricing →

Terms · Privacy Policy · readable before you sign up or pay.

§ 06 / questions

Questions, answered.

Under 60 seconds from npm install to a rendered, interactive, styled map. That is our north-star metric. The CLI verifies your key, defaults to Calgary, and writes your config.