A node.js and browser JavaScript client to Mapbox services
Latest commit b68ef79 Dec 7, 2017



npm version Build Status Coverage Status

A node.js and browser JavaScript client to Mapbox services.


Generally Available

  • Geocoding
    • Forward (place names ⇢ longitude, latitude)
    • Reverse (longitude, latitude ⇢ place names)
  • Upload API
    • Upload data to be processed and hosted by Mapbox.
  • Directions
    • Profiles for driving, walking, and cycling
    • GeoJSON & Polyline formatting
    • Instructions as text or HTML
  • Datasets
    • Retrieve, add, and edit datasets.
  • Styles
    • Retrieve, add and edit styles, fonts and icons.
  • Tilesets
    • List tilesets.
  • Tokens
    • Retrieve, add and edit access tokens.
  • Matrix
    • Travel-time tables between coordinates up to 25 pairs
    • Profiles for driving, walking and cycling
  • Map Matching
    • Aligns GPS trace data to roads and paths from OpenStreetMap data


$ npm install --save mapbox


Setup via node:

var MapboxClient = require('mapbox');

Setup via script tag:

<script src='https://unpkg.com/mapbox@1.0.0-beta9/dist/mapbox-sdk.min.js'></script>


var client = new MapboxClient('YOUR_ACCESS_TOKEN');

Basic usage of the geocoder:

client.geocodeForward('Chester, NJ', function(err, data, res) {
  // data is the geocoding result as parsed JSON
  // res is the http response, including: status, headers and entity properties

As an alternative to callbacks, each method also returns a Promise:

client.geocodeForward('Chester, NJ')
  .then(function(res) {
    // res is the http response, including: status, headers and entity properties
    var data = res.entity; // data is the geocoding result as parsed JSON
  .catch(function(err) {
    // handle errors


Listing resources may return a subset of the entire listing. If more pages are available the res object will contain a .nextPage() method. This method requires no arguments, other than an optional callback function, otherwise a Promise is returned.

sub-requiring individual services

Each service is available as a sub-require if you'd only like to include only its functionality and not the entire bundle. The returned MapboxClient will have the same constructor style but only include functions necessary for that service's support.

Available sub-requires:

  • geocoding: require('mapbox/lib/services/geocoding')
  • surface: require('mapbox/lib/services/surface')
  • matching: require('mapbox/lib/services/matching')
  • directions: require('mapbox/lib/services/directions')
  • matrix: require('mapbox/lib/services/matrix')
  • datasets: require('mapbox/lib/services/datasets')
  • styles: require('mapbox/lib/services/styles')
  • uploads: require('mapbox/lib/services/uploads')
  • tilestats: require('mapbox/lib/services/tilestats')
  • static: require('mapbox/lib/services/static')
  • tilesets: require('mapbox/lib/services/tilesets')
  • tokens: require('mapbox/lib/services/tokens')