I want an API for Edmonton Transit (ETS)

edmonton transit When the new edmonton.ca website launched back in the fall, I was hopeful that the Edmonton Transit portion of the site would receive more than just a facelift. Unfortunately, that didn’t happen. Though I’m disappointed, I can understand why. Edmonton Transit is not in the business of developing websites or software, it’s in the business of transportation. They’ve got to make sure buses and trains run efficiently and effectively first, and then they can focus on everything else.

That’s not to say that the website, or BusLink (over the phone), or the other services they offer aren’t important, just that ETS has limited resources and must deploy them accordingly. That’s why I think an Edmonton Transit API makes a lot of sense.

To build an application for looking up transit information, you need both an interface and data (I’m simplifying things a bit). ETS has all of the data of course – they know all of the route numbers, bus stops, and schedule information. What they lack are great interfaces. If ETS exposed their data through an API, third party developers could build great interfaces on top with relative ease.

Here’s the kind of information I’d like to see exposed through an ETS API:

  • Route Information – return name, start and end point, and other details for a given route
  • Stop Information – return coordinates, address, photo, and other information for a given stop
  • Route Stops with Stop Times – return a list of all stops along a given route with stop times
  • Routes at Stop with Times – return a list of routes for a given stop with stop times for each one
  • Search for Stop by Location – return the closest stops for a given address or set of coordinates

That list is similar to the information exposed by the unofficial TransLink API. A good starting point would be to simply clone what they’ve done! More advanced API features could include:

  • Route Interruptions – return a list of routes currently affected by construction or other interruptions
  • Stop Interruptions – return a list of stops currently affected by construction or other interruptions
  • Search for Stop by Landmark – return the closest stops for a given landmark
  • Trip Planner – return a list of route and transfer options for a given location of origin and destination
  • Information for St. Albert Transit and Strathcona County Transit

In the future, the sky is the limit. I know ETS is testing GPS technology on buses, so why not expose “distance from stop” information for a given route? That would be wicked, and incredibly useful when the weather dips below –25 C.

It’s not feasible for ETS to develop interfaces for each new platform that emerges. They have a website, but what about an iPhone application? Or a BlackBerry application? Or a Twitter bot? If they focused their limited software development energies on building an API, I’m confident that local entrepreneurs and software developers would build a plethora of interfaces on top of it. I would definitely build a Twitter bot!

There don’t seem to be many transit systems with APIs available, but that won’t be true for long. Here are a few others I’ve found: TransLink (unofficial), Bay Area Rapid Transit (official), Portland’s TriMet (official), Chicago Transit Authority (unofficial), Charlottetown Transit (unofficial). And here are a couple other resources I’ve come across: the Public Transit Openness Index, and a list of publicly available official GTFS (Google Transit Feed Specification) schedule data feeds.

I’d love to see Edmonton Transit take the lead and offer a completely free, fully functional transit API, and I’d be willing to help make it happen. In the meantime, don’t forget that you can now use Google Maps to find ETS trip plans.