All alternatives

unmap as an alternative to Esri

When unmap fits a Canadian map, search or route better than ArcGIS Location Platform, when Esri is the better choice, and how the two bills count what you use.

The unmap API for each need

What you needunmapEsri
MapsMaps APIBasemap Styles service
GeocodingGeocoding APIGeocoding service
Place searchPlacesPlaces service
RoutingRouting API · RouteRouting service (route and directions)
Travel-time areasRouting API · IsochroneService areas
Distance matrixRouting API · MatrixTravel cost matrix
Map matchingRouting API · MatchSnap to roads
Route optimizationOptimize APIFleet routing (VRP)
ElevationElevation APIElevation service

Published prices

The first paid tier from the provider's public pricing page, as read on the date shown. Prices change: check the source before you decide.

What you needPrice after the free allowanceFree allowanceCheckedSource
Maps$4 per 1,000 basemap sessions, or $0.15 per 1,000 basemap tiles1,000 sessions, or 2,000,000 tiles2026-11-06Esri
Geocoding$0.50 per 1,000 geocodes not stored; $4 per 1,000 stored20,000 geocodes not stored; none stored2026-11-06Esri
Place search$8 per 1,000 nearby and extent searches500 requests2026-11-06Esri
Routing$0.50 per 1,000 routes20,000 routes2026-11-06Esri
Travel-time areas$50 per 1,000 service areas5,000 service areas2026-11-06Esri
Distance matrix$0.05 per 1,000 origin-destination pairsNone stated2026-11-06Esri
Route optimization$100 per 1,000 fleet routes (VRP)None stated2026-11-06Esri

When unmap is the better fit

  • You want to keep what you fetch. Our terms let you cache maps and geocoding results permissively, and what you have cached stays yours after you cancel. Esri's findAddressCandidates results may only be displayed temporarily unless the request passes forStorage=true, and a stored geocode is billed at a higher rate with no free allowance (Esri pricing).
  • Your users search in Canada, in either official language. One record carries its English and French names, plus Indigenous-language names where the source data has them, and a query typed in Inuktitut syllabics finds the place. See Languages.
  • You route transit riders in Canada. mode=transit routes and draws travel-time areas on scheduled Canadian transit (Transit routing). Esri's routing docs name driving, trucking and walking, with no transit mode.
  • You search by legal land description. With the Legal Land add-on, a Dominion Land Survey or NTS description such as NW-25-24-1-W5 is an ordinary search query (Legal land).
  • You plan Canadian deliveries on one meter. Optimize plans shipments across vehicles with time windows, loads and driver breaks, and bills one call per shipment a successful solve performs, from the same pool as your tiles and searches.

When Esri is the better fit

  • You search or store geocodes outside Canada. unmap's basemap is worldwide, but search and routing cover Canada only, and a route that leaves the country is a 422 (Coverage). Esri's Geocoding service sells storage as an explicit, priced option, so the right to keep a result is settled per request.
  • You need network analysis beyond a route. Esri offers fleet routing, last-mile delivery, location-allocation and closest facility, and its route service takes up to 150 stops in a direct request and 10,000 in a job, with current traffic. An unmap /route is exactly two points, /optimized-route reorders up to 10 stops, and drive times have no live or predicted traffic (Routing API).
  • You need demographics or spatial analysis. GeoEnrichment offers thousands of data variables for many countries, and Esri's spatial analysis services run hot spots, buffers and joins. unmap has neither.
  • You ship a native app. Esri has native Maps SDKs for Kotlin, Swift, Flutter, .NET, Qt, Java, Unity and Unreal. unmap ships a web SDK and no native mobile SDK.
  • Your app is GIS, not a map in a product. Feature layers, ArcGIS Online web maps, Living Atlas, SceneView and imagery basemaps have no unmap equivalent (From Esri).

How the bill compares

The table above is Esri's first paid tier for each service, each with its own free allowance, as read on the date shown. Its geocoding row has two prices: not stored, and stored.

unmap has one meter instead. Every request is one call, tiles included, and every API draws from the same pool. Three bulk paths count work, not requests: batch geocoding is one call per non-blank query, a hosted batch job is one call per eligible row, and Optimize is one call per shipment a successful solve performs. The dev plan is free and for building, not production. Browser calls from localhost are not counted, except Optimize, which counts from every origin. Server-side calls and Optimize draw on 10,000 included calls a month. Indie is US$19 a month for 250,000 calls, then US$1.00 per 1,000. Growth is US$99 a month for 2,000,000 calls, then US$0.75 per 1,000. Plans and limits has the detail.

The units differ most for maps. Esri sells basemaps two ways, by the session or by the tile (Esri pricing). On unmap a map's first paint is about 40 calls, almost all of them tiles, and after that MapLibre and the browser serve most tiles from cache. So 10,000 first paints are about 400,000 calls, more than Indie includes, where the same 10,000 Esri sessions cost $36 after the free 1,000. For an app that mostly shows maps, Esri can cost less, and its tile model includes 2,000,000 tiles a month before it charges.

Geocoding turns the other way once you keep the results. Esri bills a stored geocode at $4 per 1,000 with no free allowance, so storing 100,000 addresses costs $400. On unmap the same 100,000 addresses are 100,000 batch calls, inside what Indie includes, and you may keep every result. If you only display results and never store them, Esri's not-stored rate is lower than unmap's overage.

For routing the units line up: a route is one request on both sides, and Esri's per-route rate is lower than unmap's overage. They part for service areas, which Esri bills at $50 per 1,000 and unmap counts as one isochrone call each, and for a matrix: Esri bills per origin-destination pair, and a 10 by 10 /matrix request on unmap is one call.

To estimate your own bill, start from about 40 calls for a first paint on an empty browser cache. Panning and zooming add tiles, and return visits fetch fewer. Then add your searches and routes and set the total against a plan's included calls.