SMSMyBus exposes its data via a programming interface. This page describes that interface.

This developer API is aimed at providing access to well-formed transit data for the Madison Metro service. There are no guarantees that this data is accurate or even available. But I'll do the best I can to make it so.


New Changes! The API was recently moved to a new domain. It is no longer found at www.smsmybus.com. The base URI for all API endpoints is now api.smsmybus.com/v1. Please update your applications to reflect this change. The old endpoints will go away in the coming months.


API Resources : In addition to this documention, you may find the following resources helpful:

Why have this API?

Currently, the Metro doesn't make their transit data available in an easy to use form for developers. But I started to mirror the real-time schedule to build the original SMS interface. Making this data available to other developers is the logical next step.

A Case for Open Data in Transit from Streetfilms on Vimeo.


Web Service Basics:

The Bus Tracker API is a web service that uses HTTP/1.1 as its application protocol. Each type of call/request to the API is an HTTP GET call to a unique URL. Parameters are encoded in the HTTP GET request by following the URL with a “?” and “argument=value” pairs separated by “&”.

The response is a JSON document with a Content-Type of “text/javascript”.

For example, to request the current system time through the developer API, a program or script will make a HTTP/1.1 GET request to the following URL with parameters:

http://api.smsmybus.com/api/v1/getarrivals?key=89dj2he89d8j3j3ksjhdue93j&stopID=1101

The api.smsmybus.com is the host on which the Developer API is servicing HTTP requests. The service is running on port 80.

The version of the API that is being accessed is built into the URL. In the above example, “v1” represents version 1.0 of the API.

The “key” parameter represents the API key assigned to the developer making the request. All requests to the API must be accompanied by a valid API key.

What kind of information is available via the API?

In general terms, the API provides access to schedule data, location information (for buses and stops), and system notifications. Note that these feeds will be rolling out in stages with the early focus being on schedule and location information. You can browse all of the interfaces using the menu at the top of the page.

What should I do with all of this great data?

The sky is the limit! Build a great Android app or build a new browser interface that plots the buses on a map, or find a way to give Madison visitors stop-by-stop Metro directions, or...?

How do I get started?

The first step is to register for a developer key. You'll need to use this key when you make calls to the API. Just send me an email describing your application at api@smsmybus.com. Also, follow us on Twitter at smsmybus to stay on top of news and updates on the service.