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 });connecting…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.
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.
routing
Distance, duration, and a route line across Canadian roads. Driving, trucking, cycling, and walking, plus travel-time isochrones.
Time to first hello world.
We measure one number above all others. This is it, timed from an empty directory.
- 00:00npm i @unmap/sdk
- 00:12paste your key
- 00:31first map renders
- 00:58a map on your page
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.
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.
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.
- Unlimited calls on localhost, preview URLs, and CI
- Every API, every style
- No credit card
- Community support
indie
One production app.
- 250,000 calls included
- $1 per 1,000 after
- 1 production domain
- Spend cap on by default
- Email support
growth
Production, at volume.
- 2,000,000 calls included
- $0.75 per 1,000 after
- 100 origins per key
- Spend cap on by default
- Priority support
Higher volume and custom terms: see full pricing →
Terms · Privacy Policy · readable before you sign up or pay.