Skip to main content

Vector Tiles API

The Mapbox Vector Tiles API serves vector tiles from Mapbox-hosted vector tilesets.

Retrieve vector tiles

get
https://api.mapbox.com/v4/{tileset_id}/{zoom}/{x}/{y}.{format}
Required parametersTypeDescription
tileset_idstringUnique identifier for the vector tileset in the format username.id. To composite multiple vector tilesets, use a comma-separated list of up to 15 tileset IDs.
zoomintegerSpecifies the tile's zoom level, as described in the Slippy Map Tilenames specification.
{x}/{y}integerSpecifies the tile's column {x} and row {y}, as described in the Slippy Map Tilenames specification.
formatstringSpecifies the format of the returned tiles:
.mvtVector tile
.vector.pbfVector tile

You can further refine the results from this endpoint with the following optional parameters:

Optional parametersTypeDescription
stylestringRequired for style-optimized tile requests. The style parameter has two parts, the style ID and the style's recently edited timestamp, in the format <style ID>@<timestamp>. The timestamp parameter comes from the style JSON's modified property, which is included with any style created with Mapbox Studio.
Retrieve style-optimized vector tiles

Vector tiles can be further optimized by including the style ID with the tile request. If the style parameter is provided, the sources, filters, minzoom, and maxzoom properties of that style are analyzed, and data that won't be visible on the map is removed from the vector tile. Mapbox GL JS can request style-optimized vector tiles that are hosted on Mapbox with a Mapbox Style JSON.Unused layers and features are removed from optimized styles. If you plan to dynamically change the style at runtime using Mapbox GL JS or a Mapbox mobile SDK, broadening filters and zoom ranges won't work the same way since any data that isn't visible with the loaded style also won't be included in the data.

Example request: Retrieve vector tiles

$ curl "https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/1/0/0.mvt?access_token=YOUR_MAPBOX_ACCESS_TOKEN"

# Return a style-optimized tile using the style query parameter

$ curl "https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/12/1171/1566.mvt?style=mapbox://styles/mapbox/streets-v12@00&access_token=YOUR_MAPBOX_ACCESS_TOKEN"

Response: Retrieve vector tiles

The response is a vector tile in the specified format. For performance, image tiles are delivered with a max-age header value set 12 hours in the future.

Vector Tiles API errors

Response body messageHTTP status codeDescription
Not Authorized - No Token401No token was used in the query.
Not Authorized - Invalid Token401Check the access token you used in the query.
Forbidden403There may be an issue with your account. Check your Account page for more details.

In some cases, using an access tokens with URL restrictions can also result in a 403 error. For more information, see our Token management guide.
Tileset {tileset name} does not exist404Check the name of the tileset you used in the query.
Tile not found404Check the column and row of the tile requested in the query.
Zoom level must be between 0-30.422The zoom level specified in the query is larger than 30 or contains non-numeric characters.
Tileset does not reference vector data422The tileset specified in the query is a raster tileset rather than a vector tileset. To retrieve raster tiles, use the Raster Tiles API.

Vector Tiles API restrictions and limits

  • The default rate limit for the Mapbox Vector Tiles API endpoint is 100,000 requests per minute. If you require a higher rate limit, contact us.
  • If you exceed the rate limit, you will receive an HTTP 429 Too Many Requests response. For information on rate limit headers, see the Rate limit headers section.
  • Responses from the Vector Tiles API set default Cache-Control headers to max-age=43200,s-maxage=300, or a device cache TTL of 12 hours and a CDN cache TTL of 5 minutes. New tileset data is cached for up to a further 5 minutes on the backend as well.
  • If you composite multiple tileset IDs, the API request will have the cache time of the tileset with the highest s-maxage value.
  • For general information on caching, see the Maps APIs caching troubleshooting guide.

Vector Tiles API pricing

  • Billed by requests
  • See rates and discounts per tile requests in the pricing page's Maps section

Usage of the Vector Tiles API is measured in tile requests. Details about the number of tile requests included in the free tier and the cost per request beyond what is included in the free tier are available on the pricing page.

Was this page helpful?