Mapbox provides a collection of APIs to add directions-related services to your application. Generate a route with trip durations, estimated distances, and turn-by-turn directions with the Mapbox Directions API, retrieve travel times between many points with the Mapbox Matrix API, compute areas that are reachable within a specified amount of time from a location by the Mapbox Isochrone API, retrieve duration-optimized trips between points with the Mapbox Optimization API, or align existing fuzzy routes to the routeable network with the Mapbox Map Matching API. From routing deliveries efficiently to providing navigation steps for wayfinding, Mapbox provides the tools necessary to integrate directions into your application.
This guide provides an overview of how the routing network is created, how to add directions services to applications across platforms, how to provide feedback, and relevant documentation to help you get started.
In the demo below, you can enter two locations to be the starting and ending points of a Directions API query, then view the response as raw JSON:
The demo uses the Mapbox Directions API through the Mapbox GL Directions plugin with Mapbox GL JS to add driving, cycling, or walking directions to a web application.
The Mapbox Directions API returns a JSON object containing a route with trip durations, estimated distances, and turn-by-turn instructions. When using the Mapbox GL Directions plugin, all this information will be automatically added to the map when a request is complete. By default, the plugin will also display turn-by-turn instructions. This example hides the turn-by-turn instructions and displays the raw JSON response to illustrate what information is included in the directions response object.
How directions work
When you provide two or more points to the Mapbox Directions API, it returns a route as a GeoJSON line that you can add to your map, text for turn-by-turn instructions that you can choose to display in your application, and the distance and estimated travel times for the mode of transportation you selected. There are many other services that extend Mapbox directions that allow you to fix messy GPS traces to the network or optimize trips to multiple stops on a single journey.
The routing network
The Mapbox routing network can create routes and optimized trips, and is used to calculate the most efficient path for a given mode of transportation (driving, cycling, and walking). The routing network includes a robust network of roads and paths (also known as ways) with distinct attributes like speed limits, turn lane restrictions, mode of travel, and accessibility for bikes and pedestrians.
A way is an OpenStreetMap term used to describe an ordered list of nodes (points) which normally also has at least one tag, or description. For the purposes of the Mapbox Navigation service APIs, ways can be roads, foot paths, or bicycle lanes.
The Mapbox Directions API, Matrix API, and Optimization API all provide estimated trip durations. The time it takes to travel from one point to another is determined by many factors, including:
- The routing profile used (walking, cycling, driving, driving-traffic).
- The speed stored in the
maxspeedtag in OpenStreetMap.
- Traffic derived from real-time telemetry data (when the traffic profile is used).
Incorporate real-time and typical traffic data using the
mapbox/driving-traffic routing profile into route selection and ETA generation with the Mapbox Directions API, Map Matching API, Matrix API, either into computing areas of reachability with the Mapbox Isochrone API, or add a traffic layer to road geometries on a visual map. Read more about our traffic tileset in Mapbox data.
mapbox/driving-traffic routing profile is available globally, but the availability of real-time traffic-dependent travel times varies by country. Real-time traffic shows speeds that have been directly observed in the 15 minutes before data generation. Real-time traffic data is useful if there are atypical traffic patterns (for example, during severe weather events or accidents).
If real-time traffic conditions are not available in a specific country, typical traffic conditions will be used instead. Typical traffic is an estimate for traffic speeds at a specific location, at a specific time, based on historical observations. Typical traffic data reflects normal traffic conditions during a typical week.
Real-time and typical traffic
For the following countries, the returned ETA is calculated using both real-time and typical traffic data along the requested route.
- Antigua and Barbuda
- The Bahamas
- British Virgin Islands
- Brunei Darussalam
- Cayman Islands
- Costa Rica
- Czech Republic
- Dominican Republic
- El Salvador
- Faroe Islands
- Hong Kong SAR, China
- Iran, Islamic Rep.
- Isle of Man
- Korea, Rep.
- Kyrgyz Republic
- Macao SAR, China
- New Zealand
- Northern Mariana Islands
- Puerto Rico
- Russian Federation
- San Marino
- Saudi Arabia
- Slovak Republic
- St. Kitts and Nevis
- St. Lucia
- St. Vincent and the Grenadines
- Trinidad and Tobago
- Turks and Caicos Islands
- United Arab Emirates
- United Kingdom
- United States
- Virgin Islands (U.S.)
- West Bank and Gaza
For the following countries, the returned ETA is calculated using typical traffic data along the requested route.
- American Samoa
- Bosnia and Herzegovina
- Burkina Faso
- Cabo Verde
- Central African Republic
- Congo, Dem. Rep.
- Congo, Rep.
- Cote d'Ivoire
- Egypt, Arab Rep.
- Equatorial Guinea
- French Polynesia
- Gambia, The
- Lao PDR
- Marshall Islands
- Micronesia, Fed. Sts.
- New Caledonia
- North Macedonia
- Papua New Guinea
- Sao Tome and Principe
- Sierra Leone
- Solomon Islands
- South Africa
- Sri Lanka
- Syrian Arab Republic
- Venezuela, RB
- Yemen, Rep.
Using directions services
There are many tools you can use to enable directions-related services for your Mapbox web or mobile application. You can access these services directly using the web services APIs, through our Navigation SDK, or using one of several plugins and libraries to integrate these services into applications across platforms.
Web services APIs
Mapbox offers five directions-related services:
- Mapbox Directions API: retrieve point to point directions including a route with durations, estimated distances, and turn-by-turn instructions.
- Mapbox Matrix API: retrieve all travel times between many points.
- Mapbox Isochrone API: compute areas that are reachable within a specified amount of time from a location.
- Mapbox Optimization API: retrieve duration-optimized trips between input coordinates.
- Mapbox Map Matching API: align existing fuzzy routes to the routeable network.
Read more about the required inputs for each API below.
Mapbox Directions API
Requesting directions from the Mapbox Directions API requires at least two waypoints — an origin and a destination — but can also include up to 23 additional waypoints between (or a total of 25 waypoints). When making a request, you can specify additional parameters such as which routing profile to use (walking, cycling, driving, or driving with traffic) and whether alternate routes should be included in the response.
You can also add optional annotations to your request, including duration, distance, speed, and congestion. We calculate congestion by comparing night-time traffic speeds with real-time traffic speeds and assign a level of congestion given the percentage difference.
You can read more about the directions response object in our Directions API documentation.
Use of the Directions API is billed by API requests. For more details, see the Directions API pricing page.
Mapbox Matrix API
The Mapbox Matrix API returns travel times between many locations. Each location is either a source or destination. The number of sources and destinations are multiplied to create the matrix, or timetable, and calculate the number of elements needed to make the request. For example, given three locations A, B, C, the Matrix API will return a matrix of all travel times in seconds between all locations:
|A||A → A||A → B||A → C|
|B||B → A||B → B||B → C|
|C||C → A||C → B||C → C|
The Matrix API will always return the duration on the most efficient route for each location in the matrix, where an element is an origin-destination pair in the matrix.
Durations between locations may not be symmetric (for example A to B may have a different duration than B to A), as the routes may differ by direction due to one-way streets or turn restrictions. By default the Matrix API returns durations in seconds, but it can also return route distances if specified in the
annotations parameter. Like the Directions API, the Matrix API must be used within a single continent (the inputs must not require it to cross over water bodies).
This API allows you to build tools that efficiently check the reachability of coordinates from each other, filter locations by travel time, or run your own algorithms for solving optimization problems.
Matrix API requests
Each request requires that you specify which locations are the sources and which are the destinations. There are four types of requests you can use with the Matrix API:
Many to many (NxN)
A many to many request is the default and generates the most results per-number-of-coordinates. This assumes all locations are sources and destinations. Without passing the source and destinations in the request, the response will still output an array of travel times between all locations.
One to many (1xN)
In some cases, you may have a single source (for example, one driver) and four potential destinations (four gas stations). To calculate which destination has the shortest drive time, you need to specify the source and destination coordinates.
Many to one (Nx1)
An opposite request may be necessary where you may want to find travel times of many taxis to one rider, for example. In this case, a many to one (Nx1) request can be made by listing all your sources and your one destination.
Several to several (MxN)
An uncommon but useful case is a several to several (NxM) request where you may want to be selective about how many sources and destinations you wish to find travel times to and from.
Use of the Matrix API is billed by the number of elements returned by a request. For more details, see the Matrix API pricing page.
Mapbox Optimization API
The Mapbox Optimization API returns a duration-optimized trip between the input coordinates. This is also known as solving the Traveling Salesperson Problem. This API could be used to plan a route for deliveries in a city. Optimized trips can be retrieved for driving, bicycling, and walking or hiking.
Use of the Optimization API is billed by API requests. For more details, see the Optimization API pricing page.
Mapbox Map Matching API
The Mapbox Map Matching API snaps fuzzy, inaccurate traces from a GPS unit or a phone to the OpenStreetMap road and path network using the Directions API. This produces clean paths that can be displayed on a map or used for other analysis.
Use of the Map Matching API is billed by API requests. For more details, see the Map Matching API pricing page.
Mapbox Navigation SDK
You can add directions to a mobile application using the Mapbox Navigation SDK for iOS and Android. With the Navigation SDK, it takes only a few lines of code to display a complete navigation experience inside your app. With the Navigation SDK, you can:
- Generate turn-by-turn instructions.
- Use automatic rerouting when a user deviates from the route.
- Provide walking, biking, and driving directions.
- Provide real-time traffic.
Read more about the Navigation SDK for iOS and Android.
Libraries and plugins
We have several tools across platforms that allow you to integrate the Mapbox Directions API into your existing applications seamlessly:
- Web: Mapbox GL Directions plugin for Mapbox GL JS and Mapbox-directions.js for Mapbox.js
- Android: Mapbox Java SDK
- iOS: MapboxDirections.swift
Here's an example of the Mapbox GL Directions plugin in action:
Testing the Directions API
If you would like to get a feel for how the Mapbox Directions API works without building a whole application, we also provide a Directions API Playground. Besides providing a convenient user interface to test queries, the API playground allows you to test the API's URL and query parameters, such as mode of transportation, steps, and alternative routes.
Providing directions feedback
To report routing issues you've identified with the Directions API, you can provide feedback from our Directions API Playground by generating the route and then clicking the Send feedback about this route button. For all other navigation-related services, contact our Support team with the full API request.