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

Overview
Updating from v1.x.x to v2.x.x

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

Overview
  • 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:

There are a few key differences between this tile-based pricing and the map load pricing described above, including:

Mapbox.js or Leaflet

Overview
  • 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.

Update from Mapbox Studio Classic styles to GL-based styles

As of June 1, 2020, Mapbox classic styles are no longer supported and cannot be requested by new applications. If you are using a Mapbox Studio Classic style, follow either the guide to migrate to the modern Static Images API or the guide to migrate to the modern Static Tiles API.

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

Overview
  • 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.

ProductsWhat will appear on your invoice
FramerXVector Tiles API
PowerBIMap Loads for Web
Carto with a style URLStatic Tiles API
ArcGIS with a style URLStatic Tiles API
QGIS with a style URLStatic Tiles API