Pricing by products
This guide will walk you through which line items match up to some typical applications of:
This page does not include the number of units included in the free tier, the exact cost per billable unit, or volume-based discounts. For this information, see the pricing page.
Web maps
Pricing for web map usage is based on API requests (i.e. tile requests), sessions (i.e. map loads) or monthly users (i.e. seats). The pricing method that applies to your application depends on which product you are using, and in some cases, which version of that product. These are the libraries, tools, and versions that are included in this section:
For an overview of how to manage your costs for common interactive, non-interactive, and hybrid web map implementations, see the Manage your web map costs troubleshooting guide.
Mapbox GL JS v1.0.0 and higher
- Billed by map loads
- See rates and discounts per map load in the pricing page's Sessions & user pricing section
The action that triggers a map load changed in Mapbox GL JS v2.0.0:
- Mapbox GL JS v2.x.x: A map load occurs whenever a Mapbox GL JS
Map
object is initialized on a webpage. - Mapbox GL JS v1.x.x: A map load occurs whenever a Mapbox GL JS
Map
object is initialized on a webpage and you request a Mapbox-hosted map tile.
Before updating an existing implementation from v1.x.x to v2.x.x, please review this pricing documentation to estimate expected costs.
Web maps using Mapbox GL JS v1.0.0 and higher are billed by map loads. Beginning with Mapbox GL JS v2.0.0, a map load occurs whenever a Mapbox GL JS Map
object is initialized. Measuring usage by map loads means that users interacting with your web map can toggle layers from non-composited sources on and off, zoom and pan around the map, and toggle between styles without affecting your usage. You can also add non-composited vector or raster sources to your map at runtime without incurring additional charges. The maximum session length for a map load is 12 hours. If a user has the same map open after 12 hours, Mapbox will count that as a new map load session.
Web maps using Mapbox GL JS Seats are billed by seats. A seat consists of a single user who uses Mapbox services within your web application during your month-long billing period. Each user can use unlimited Vector Tiles API and Raster Tiles API requests per month.
Mapbox GL JS < v1.0.0
- Billed by tile requests
- Upgrade to new pricing by updating your Mapbox GL JS version
- See rates and discounts per Vector Tiles API request or Raster Tiles API request in the pricing page's Maps section
Web maps using any version of Mapbox GL JS before v1.0.0 are billed by tile requests. There are two different types of tile requests that can be made by Mapbox GL JS:
- Vector Tiles API requests for any tiles from vector tilesets including Mapbox-maintained tilesets like Mapbox Streets or any custom vector tileset uploaded to your Mapbox account.
- Raster Tiles API requests for any tiles from raster tilesets including Mapbox-maintained tilesets like Mapbox Satellite or any custom raster tileset uploaded to your Mapbox account.
There are a few key differences between this tile-based pricing and the map load pricing described above, including:
- Map interaction: The more the user interacts with the map, the more tiles are requested. Interact with the map in the demo below to see the relationship between user interaction and the number of tiles requested. (In map load based pricing, it counts as one map load regardless of how much the user interacts with the map.)
- Composite sources vs. non-composite sources: You can combine any Mapbox style with a Mapbox-maintained tileset, like Terrain v2 or Traffic v1, or tilesets that you upload to Mapbox Studio. Sources added on the client will not be composited so every tile from each vector source will be requested separately, counting toward total tile requests. You can composite vector tile sources in Mapbox Studio to reduce the number of tiles that are requested.
- Vector tiles vs. raster tiles: As described above, vector tiles and raster tiles are counted and billed separately.
Mapbox.js or Leaflet
- Billed by tile requests
- See rates and discounts per Static Tiles API request or Raster Tiles API request in the pricing page's Maps section
If you are using Mapbox.js or Leaflet with Mapbox-hosted map tiles, usage is determined by tile requests. Mapbox.js and Leaflet applications display raster tiles, however there are two different kinds of tile requests you may be making: Static Tiles API requests or Raster Tiles API requests.
Raster tiles from Mapbox GL styles
If you are using a Mapbox GL map style (using a style URL) via L.mapbox.styleLayer
, you are requesting map tiles from the Static Tiles API, which takes GL-based styles and renders raster tiles.
The example below uses a GL-based style, mapbox://styles/mapbox/streets-v11
, with Mapbox.js. Each tile has a red border to help you see how many are required to display the map you see on the screen.
L.map('map')
.setView([38.8929, -77.0252], 14)
.addLayer(L.mapbox.styleLayer('mapbox://styles/mapbox/streets-v11'));
Raster tiles from raster tilesets
If you are setting the map style via a raster tileset's tileset ID, you are requesting map tiles from the Raster Tiles API. Raster tiles can be satellite imagery, another raster data source, or a classic style.
The example below uses the raster tileset, mapbox.satellite
, with Mapbox.js. Each tile has a red border to help you see how many are required to display the map you see on the screen.
L.mapbox.map('map', 'mapbox.satellite')
.setView([38.8929, -77.0252], 14);
Third-party tools
- Billed by tile requests or Map Loads for Web
- See rates and discounts per Vector Tiles API request, Static Tiles API request, or Raster Tiles API request in the pricing page's Maps section
Web maps that rely on Mapbox-hosted tiles, but are not served via Mapbox GL JS are billed by tile requests. This includes vector tiles from vector tilesets, GL-based styles rendered as raster tiles, and raster tiles from raster tilesets. The table below includes some popular third-party integrations. Not all possible third-party tools are included.
Was this section on Web maps helpful?
Mobile applications
Pricing for mobile applications is either based on monthly active users (MAUs) or tile requests. The pricing method that applies to your application depends on which product you are using, and in some cases, the version of that product.
MAUs are users that accessed Mapbox services within your applications during a given month. The month-long period aligns with your billing period, which is likely not aligned with calendar months.
This guide does not include the number of units included in the free tier, the exact cost per billable unit, or volume-based discounts for each service. For this information, see the pricing page.
These are the SDKs and versions that are included in this section:
- Maps SDK for iOS and Android
- Navigation SDK for iOS and Android
- Vision SDK for iOS and Android
- Maps SDK for Unity
- Hybrid apps
- Offline maps
Maps SDK for iOS and Android
Applications built with the Mapbox Maps SDK are billed based on monthly active users (MAUs). The MAU line item shown in your invoice will vary based on the version of the Maps SDK you are using. This guide discusses pricing for older versions of the Maps SDK (less than v5.0.0 for iOS or less than v8.0.0 for Android), which are billed by Legacy SDKs for mobile MAUs.
For pricing information about more recent versions of the Maps SDK, which are billed by Maps SDKs for mobile MAUs, see the product documentation for the Maps SDK for iOS (v5.0.0 and higher) and the Maps SDK for Android (v8.0.0 and higher).
- Billed by Legacy SDKs for mobile MAUs
- Upgrade to new pricing by updating your Maps SDK version
- See rates and discounts per Maps MAUs in the pricing page's Session & user pricing section
The free tier and cost per Legacy SDKs for mobile MAU is equal to the free tier and cost for Maps SDK for mobile MAUs. To see the number of MAUs included in the free tier and the cost per MAU beyond the free tier, see the Maps SDK for mobile section of our pricing page.
Navigation SDK for iOS and Android
Applications built with the Mapbox Navigation SDK are billed based on monthly active users (MAUs). The MAU line items shown in your invoices will vary based on the version of the Navigation SDK you are using. This guide discusses pricing for older versions of the Navigation SDK, which are billed either by Maps SDKs for mobile MAUs and Directions API requests, or Legacy SDKs for mobile MAUs, Directions API requests, and Vector Tiles API requests.
For pricing information about more recent versions of the Navigation SDK, which are billed by Navigation SDK MAUs, see the product documentation for the Navigation SDK for iOS (v1.0.0 and higher) and the Navigation SDK for Android (v1.0.0).
Maps SDKs for mobile MAUs + Directions API requests
- Billed by Maps SDKs for mobile MAUs + Directions API requests
- Upgrade to new pricing by updating your Navigation SDK version
This line item applies to the following versions of the Navigation SDK:
- Android: 0.41.0 to 0.42.x
- iOS: 0.36.0 to 0.40.x
Applications built with these versions are billed based on a combination of monthly active users (specifically "Maps SDKs for mobile" MAUs) and Directions API requests. Maps SDKs for mobile MAUs include Vector Tiles API and Raster Tiles API requests. Directions API requests will appear as a separate line item in your monthly invoice.
To see the number of MAUs and requests included in the free tier and the cost per MAU or request beyond the free tier, see:
Legacy SDKs for mobile MAUs + Directions API requests + Vector Tiles API requests
- Billed by Legacy SDK MAUs + Directions API requests + Vector Tiles API requests
- Upgrade to new pricing by updating your Navigation SDK version
This line item applies to the following versions of the Navigation SDK:
- Android: less than 0.41.0
- iOS: less than 0.36.0
Applications built with these versions are billed based on a combination of monthly active users (specifically "Legacy SDKs for mobile" MAUs), Directions API requests, and Vector Tile API requests. Legacy versions of the Navigation SDKs billed by Legacy SDKs for mobile MAUs do not include Vector Tiles API, Raster Tiles API requests, and Directions API requests - those will appear as separate line items in your monthly invoice.
The free tier and cost per Legacy SDKs for mobile MAU is equal to the free tier and cost for Maps SDK for mobile MAUs as listed on our pricing page.
To see the number of MAUs and requests included in the free tier and the cost per MAU or request beyond the free tier, see:
- Maps SDKs for mobile section of our pricing page (equivalent to Legacy SDK for mobile rates and tiers)
- Directions API section of our pricing page
- Vector Tiles API section of our pricing page
Vision SDK for iOS and Android
Applications built with the Mapbox Vision SDK for iOS and the Mapbox Vision SDK for Android are billed based on monthly active users (MAUs). The MAU line item shown in your invoice will vary based on the version of the Vision SDK you are using. This guide discusses pricing for older versions of the Vision SDK, which are billed by Legacy SDKs for mobile MAUs.
For pricing information about more recent versions of the Vision SDK (v0.6.0 and higher for iOS and Android), which are billed by Vision SDKs for mobile MAUs, see the product documentation for the Vision SDK for iOS and the Vision SDK for Android.
Legacy SDKs for mobile MAUs
- Billed by Legacy SDKs for mobile MAUs
- Upgrade to new pricing by updating your Vision SDK version
- See rates and discounts per Vision MAUs in the pricing page's Session & user pricing section
This line item applies to the following versions of the Vision SDK:
- Android: less than 0.6.0
- iOS: less than 0.6.0
The free tier and cost per Legacy SDKs for mobile MAU is equal to the free tier and cost for Maps SDK for mobile MAUs. For details about this pricing, see the Maps SDK for Mobile section on our pricing page.
Maps SDK for Unity
- Billed by Maps SDK for Unity MAUs or Legacy SDKs for mobile MAUs
- Upgrade to new pricing by updating your Maps SDK for Unity version
- See rates and discounts per Maps SDK for Unity MAUs in the pricing page's Session & user pricing section
Applications built with the Mapbox Maps SDK for Unity are billed based on monthly active users.
The line item shown in your invoice will vary based on the version of the Maps SDK you are using. Below is a breakdown of what you can expect to see on your invoice:
Product | Version | Usage units |
---|---|---|
Maps SDK for Unity | 2.1.0 and higher | Maps SDKs for Unity MAUs |
Maps SDK for Unity | less than 2.1.0 | Legacy SDKs for mobile MAUs |
For Maps SDK for Unity MAUs, a single monthly active user may make unlimited Vector Tiles API, Raster Tiles API, and Static Tiles API requests per month. Usage of APIs and other Mapbox products outside the Vector Tiles API and Raster Tiles API are billed in addition to Maps SDK for Unity MAUs.
For all products listed above, the free tier and cost per Legacy SDKs for mobile MAU is equal to the free tier and cost for Maps SDK for mobile MAUs as listed on our pricing page.
Hybrid apps
- Billed by Legacy SDK MAUs or tile requests
- See rates and discounts per Vector Tiles API request, Raster Tiles API request, or Static Tiles API request in the pricing page's Maps section
Third-party frameworks built from the native Mapbox Mobile SDKs are typically billed based on monthly active users. Apps built with other third-party frameworks are billed based on tile requests. Below are some examples of popular SDKs and frameworks and whether Mapbox tracks usage through mobile users or tile requests.
SDK or framework | Legacy SDK MAUs | Tile requests |
---|---|---|
Community-managed Maps SDK for React Native | ||
Cordova + native SDK | ||
Xamarin + native SDK | ||
Phonegap + Mapbox.js | ||
Cordova + Mapbox.js | ||
Mapbox GL JS-based hybrid SDKs |
For all products listed above, the free tier and cost per Legacy SDKs for mobile MAU is equal to the free tier and cost for Maps SDK for mobile MAUs as listed on our pricing page.
Offline maps
- Billed by tile requests
- Upgrade to new pricing by updating your Maps SDK version
- See rates and discounts per Vector Tiles API request or Raster Tiles API request in the pricing page's Maps section
Offline maps usage in the Maps SDKs for Mobile are measured in tile requests. Resources downloaded for offline use are not included in MAU billing. For versions of the Maps SDK for iOS less than 5.3.0 or the Maps SDK for Android less than 8.3.0, the download limit for offline tiles is 6,000 per end user, which means each of your users can download 6,000 tiles for offline use. Upgrade to the latest versions of the SDKs to enable your users to download more than 6,000 tiles in your applications.
For offline maps pricing information for more recent versions of the Maps SDK, see the product documentation for the Maps SDK for iOS (v5.3.0 and higher) and the Maps SDK for Android (v8.3.0 and higher).
If you are using the Maps SDK for iOS v5.3.0 and higher or the Maps SDK for Android v8.3.0 and higher, you can adjust the limit of offline tiles your users can download. To do so, see the instructions for iOS and Android. Note that you will be billed accordingly for each tile request beyond the free tier. If you are using a version of the Maps SDK that is less than these versions, update your SDK version to take advantage of this capability.
For offline maps, two different types of tile requests can be made:
- Vector Tiles API requests are made for offline regions that use vector tilesets including Mapbox-maintained tilesets like Mapbox Streets or any custom vector tileset uploaded to your Mapbox account.
- Raster Tiles API requests are made for offline regions that use raster tilesets including Mapbox-maintained tilesets like Mapbox Satellite or any custom raster tileset uploaded to your Mapbox account.
Vector Tiles API requests and Raster Tiles API requests for offline maps are cumulative, meaning they are counted toward the total number of tile requests made with your account. For example, if you are accumulating tile requests via web maps in addition to offline maps, you will be billed according to the pricing tiers for the total number of tile requests made with your account (the sum of your web map usage and offline map tile downloads).
Was this section on Mobile applications helpful?
Navigation-related APIs
For pricing information for the Navigation-related APIs measured in API requests, see the relevant API documentation:
For pricing information for the Matrix API, which is measured in elements, see the Matrix API documentation.
Directions-related libraries and plugins
We have several tools across platforms that allow you to integrate Mapbox Directions-related APIs into your existing applications, including:
- Web: Mapbox GL Directions plugin for Mapbox GL JS and Mapbox-directions.js for Mapbox.js
- Android: Mapbox Java SDK
- iOS: MapboxDirections.swift
When using a directions-related library or plugin with a Mapbox map, you will be billed for the number of directions-related requests made in addition to map loads, Maps MAUs, or tile requests (read the Web maps or Mobile applications section above to see which applies to your application).
Was this section on Navigation-related APIs helpful?
Search-related APIs
Geocoding API
For pricing information for the Geocoding API, which is measured in API requests, see the Geocoding API documentation.
Geocoding-related libraries and plugins
We have several tools across platforms that allow you to integrate the Mapbox Geocoding API into your existing applications, including:
- Web: Mapbox GL Geocoder for Mapbox GL JS and both geocoderControl and geocoder for Mapbox.js
- Android: Mapbox Java SDK
- iOS: MapboxGeocoder.swift
When using a search-related library or plugin with a Mapbox map, you will be billed for the number of search-related requests made in addition to Maps MAUs for mobile applications or map loads or tile requests for web maps (read the Web maps or Mobile applications section above to see which applies to your application). For libraries and plugins that include autocomplete, searches are billed as one API call per keystroke. Visit the Geocoding API documentation to learn more.
Was this section on Search-related APIs helpful?
Maps-related APIs
Your use of Maps-related APIs is measured in tile requests, processing and hosting events, or API requests.
Tile requests
Use of the Vector Tiles API and the Raster Tiles API is measured in tile requests. For more information, see the relevant API documentation:
The Static Tiles API may be billed by tile requests if it is used with Mapbox.js, a third-party tool such as Leaflet or Carto, or a hybrid app. See the Web maps section for more details. Otherwise, use of the Static Tiles API is billed by API requests rather than tile requests.
Processing and hosting events
Use of Mapbox Tiling Service (MTS) and the Uploads API is measured in processing and hosting events. For more information, see the relevant documentation:
API requests
Use of the Static Images API, the Static Tiles API, and the Tilequery API is measured in API requests. For more information, see the relevant API documentation:
Mapbox Studio
Prints
For pricing information about prints created using the Mapbox Studio print panel, see the Studio Manual.
Tilesets uploaded in Studio
While Mapbox Studio is powered by the Uploads API to create tilesets, it is subject to usage restrictions and alternative pricing. See the Studio Manual for pricing details.