The definitive Map API buying guide
There's No Such Thing As a Free Lunch - or a Map API. Why?
One would be surprised by the abundance of human crowdsourcing work required to produce and maintain quality map data. A tremendous amount of work is required to accurately and minutely map road networks, and just like painting the Golden Gate, it's a never-ending process.
Even more, one would be surprised by the complexity of Geocoding and Routing algorithms. For example, Geocoding routing needs to process arbitrary search phrases, frequently misspelled or partial, in different languages to "guess" the end user's query. The complexity of routing algorithms is a story for itself.
Complex APIs are more expensive. They're by far more resource-intensive, meaning they require more processing power, more hardware, so they cost more to maintain. Geocoding and Routing API (and their derivatives) are considered complex APIs. The most affordable and straightforward is the Tile API since it requires practically no resources to maintain.
However, if you're investigating free map api options, some vendors offer free options for map display purposes on the web and mobile platforms. Naturally, be aware of other expenses that may arise.
"Pay per use/Pricing per request" is the most common pricing model. Or pricing per transaction, to be precise. It's important to read the FAQs to discover what a particular API vendor defines as a transaction and how much a transaction costs.
For Geocoding and Routing API, unanimously among all vendors, one transaction is one request. Perfectly understandably, for Matrix Distance API, the number of transactions equals the size of a matrix.
Pricing for Tile API, on the other side highly varies among vendors, and you can refer to Price Comparison for more details.
Flat rate pricing is practically non-existing and subsequently it's almost impossible to estimate monthly expenses.
Tile API is billed per map load, but the definition of a map load is quite broad and varies between vendors.
Google and Mapbox define a map load as one would assume - whenever an application initializes Map object using their SDK. Thereby, a maximum session length is usually 8-12 hours, and page reloads count as another map load. User interactions, such as panning and zooming, do not generate additional map loads.
Almost all others define a map load as, most commonly, 5 Vector Tile requests or 15 Raster Tile API requests. This amount of tiles is usually enough for one map display on average screen size. This billing method's downside is that user interactions with the map (panning and zooming) generate additional Tile requests, map loads, and more expenses.
If you need a plain map display, e.g., a rough location display or data visualization on maps, a Google Maps Embed API is a good sneaky free option.
At the moment, all Maps Embed API requests are free with unlimited usage. This is by no means suitable for professional use cases, but it's a good start.
Certain vendors (Google and TomTom) allow free Tile APIs when consumed within their proprietary mobile SDKs.
Make sure to check the terms and conditions if you're considering using other APIs from different vendors.
However, be aware of other expenses that may arise, e.g., from consuming Geocoding and Routing APIs, so make sure to investigate the pricing upfront.
And the last thing to consider is privacy - tracking, collecting, and processing end user's movement.
Check how Compact Maps ticks the boxes of your Map API buying checklist!