A few months ago, I shared with Seattle Transit Blog readers a side project of mine—the Puget Sound Transit Operations Tracker. This quickly became much bigger than I ever expected it to, with several local news outlets picking up the story, including the Seattle Times.
It became very clear to me that we all need better transit data, and that I’m well-equipped to help with that. Today, I want to share with you what I’ve been up to since then, and where I’m going next.
New Name
The name “Puget Sound Transit Operations Tracker” was only meant to describe a single, mostly-static project. Given its growth and the fact that there’s now a more defined future ahead of it, it’s time to create and grow a real brand for a real product. The tracker will now be known as Pantograph—just like the part of an electric train that connects it to power, Pantograph connects riders and agencies to vital information about the transit system. To reflect the name change, the web version is now located at www.pantographapp.com. I’d also encourage you to follow the associated Twitter account for updates and support: @Pantograph_App
New App
Today’s biggest announcement is a brand new iPhone app, now available on the App Store. This is quite similar to the web version as you know it, but built from the ground up to look, feel, and behave like it belongs on iOS.

The filtering system has been revamped to support selection of an arbitrary number of parameters. For instance, while you could previously filter by just one route, you can now select any number you want, and even further constrain by more detailed information such as model of bus serving those routes. Of particular interest to agencies, the Schedule Adherence filter allows you to define a specific range of schedule deviation to show, in addition to just early/on-time/late/very late as I’ve defined them. Configured filters can be saved as a preset and recalled later, allowing you to quickly access different views of the map.
Accessibility features, such as VoiceOver and Dynamic Type, are also supported. If you’re a person who depends on these features, please don’t hesitate to share feedback—it’s important to me to build apps accessible to all users.
Pantograph for iOS is a free download on the App Store. Access to the filtering system requires a Pantograph Pro subscription, which costs just $0.99/month or $9.99/year (both options come with a one-week free trial). This pricing model helps support continued investment of my time, energy, and money into building Pantograph’s future. As an added thank you to Pro subscribers, this also unlocks the ability to choose from a variety of alternate app icons. I’m giving away codes for a one-month subscription to three random STB readers—leave a comment below to be considered (but please note if you don’t have an iPhone or aren’t in the area, so the code may go to someone who does/is).
New Features
While today is mostly about maturing as a product, I also wanted to throw something new in the mix—assignment tracking. Pantograph keeps track of which vehicles it sees on which routes, and makes this information available in three views: By route, by individual vehicle, or by vehicle series. This allows you to see which models of vehicles get assigned to which routes and vice versa, as well as the specific coach number that served each trip. In addition to being interesting—I learned that the route most likely to be served by a Community Transit Double Tall is 415 at 96% of trips, and have been keeping an eye on new vehicles entering service/old ones retiring—this helps agencies quickly find vehicles and helps riders choose routes. If your usual route is crowded and typically served by a 40-foot bus, and an alternate route is served by a 60-footer, wouldn’t you give it a try?
For King County Metro and Community Transit, I also infer what base a vehicle is assigned to based on the route it last served. When viewing a series of vehicles, you can also see how many are at each base.
Looking Ahead
For now, assignment tracking data is only available on the web version; I wanted to get the basics down first for the iOS app before adding new features. This should come before the end of the year. An update is also planned to come alongside the release of iOS 13 in September, which will take advantage of the new system-wide dark mode.
After this release, however, my focus will shift to analyzing the mass amounts of transit data I collect every day. Particularly, I’m interested in near-real-time performance analysis. The details of what this means are yet to be determined, but could include on-time performance, missed trips, identification of frequent slow-down areas, and more.
I’d also like to start working more closely with transit agencies. I think a lot of the work I’m doing here has potential to help in all sorts of departments—planning, of course, could benefit from performance metrics; customer service folks already benefit from an easy-to-use interface to find buses and identify delays—and a more formal relationship would ensure we’re helping each other as efficiently as possible. Feel free to get in touch if you can help out here.
Questions, comments, and feedback are, of course, welcome in the comments below!
Can we hope for an Android app some time in the future?
second that
I’m an iPhone user who’s been helping test this app … I too would love to see someone port this to Android … it is wonderfully useful … best things are to be able to see where your bus actually is … which can inform many decisions (do you run, wait, walk, etc …) and that you can see the vehicle info for the bus or train (including the number of cars on Link
Information about where the bus actually is should be part of One Bus Away.
PDXbus, the Portland equivalent to One Bus Away, isn’t available for Android either as it is also a volunteer effort and the writer doesn’t have the time to support both.
Android just isn’t a platform I’m particularly interested in developing for. I’m not going to rule anything out, though. Especially if this continues to grow, there will come a point where it would be a disservice not to have one. In the meantime, the PWA is available for all devices.
Would you consider accepting development help on an Android version?
“there will come a point where it would be a disservice not to have one.”
That point is now.
I will pay for an Android one, but have no use for the Apple version. With the disclaimer that I don’t have much understanding at all of the difference between app development for the two platforms, I agree with Mr. or Ms. Groovily… the point at which it’s no longer reasonable to develop a very useful app for only Apple is now. Or maybe 2013. : )
How does it make sense to not have an android app? 76% market share (global) kind of implies its not worth it to have am iOS app.
It makes sense because it started out as a side project for him, not a business, and he uses an iPhone?
This is awesome! Would love a one month subscription. I take public transportation every day, so this is very helpful.
Could you see about integrating Kitsap Transit buses and ferries into the app as well? They have real-time data through DoubleMap. I’m not sure if that’s something you could tap into.
I’ve looked into this, and actually published KT data for a whole two days before pulling it. DoubleMap and/or KT have full rights over that data, and I don’t want to create a legal problem for myself! As soon as they launch a feed for general use, I’ll be all over it.
(The same is true for the Waterfront Shuttle, which also uses DoubleMap.)
Very awesome. Thanks for your hard work on this project. Would love to be considered for a code if possible!
Thank you. Makes my use of route 29 so much easier.
Even intuitive for a 75 yo.
Have you thought of making a public API to allow others to analyze the data you have collected?
Definitely, but that’s a little further out. I’m still constantly making little changes here and there, so before making a public API, I’d want things to stabilize a bit more. Better infrastructure may also be required, which leads to further costs.
Data warehouse > API
Will be great during snow events.
Great work! Thank you. I’ve got the phone on my app and will be sharing a link with others.
As a driver, I constantly refer riders to this website and now app. So, Android is the preferred method of these riders as well is what I have noticed.
Thanks for spreading the word and for the feedback!
Let me know if you’d be interested in some small cards to pass out to riders with a URL/download information. kona@konafarry.com
If you have a card-sized PDF that we could print our own, I’d definitely print some and hand them out.
Pardon my ignorance, but how does this compare with OneBusAway? I assume that this is getting the data from the same source. Is it that this is more system based? Or is it mainly a difference in the interface?
Consider this question seconded.
OBA is great for when you’re standing at a stop, waiting for the next bus on a route/routes that serve that stop, and want an estimate of how long it will be. This can be used for that too, but its strength lies in offering a bird’s-eye view of the entire system—sure, OBA tells you a bus is coming in two minutes, but this tells you that every bus traveling on a stretch of road later in the route is delayed. Additionally, when OBA tells you that that bus will be here “in two minutes” for ten minutes straight, this will show where it’s stuck and if other buses are in the same position.
OBA shows you where all the buses are and whether they are late/on-time/early as well. Is your point that Pantograph shows the number of minutes they are late at-a-glance as well?
With the data in the app, can a user (or the developer) transit find reliability hotspots? Metro’s data per this post from a few weeks ago, provides reliability stats per route, but does not break down where exactly along a route the reliability breaks down. More granular data would be great for identifying and resolving transit bottlenecks.
At the moment, not exactly. The only way to approximate this would be watching with the “schedule adherence” option turned on for icon colors and looking for clusters/lines of red.
Next up for me is analysis of reliability data, and this is likely going to be a key part of that.
I’d love to be considered, as I’m an iPhone user and my commute is Sounder/Metro and then Link/Sounder.
Why do only a small subset of the routes show up when I choose the Filters-> Routes?
Only routes currently in service will appear there, for the sake of reducing clutter.
I don’t think that’s it. I was sitting on a restaurant patio watching 45’s and 62’s go by in both directions but those were two of the active routes that were not listed.
For example right now I am sitting beside the Green Lake Community Center (Evans Pool) and there’s a 45 stop right on the street here but in the Routes I only see 1, 2, 3, 4, 7, 10, 12, 13, 14, 36, 44, 47, 49, 70.
Do you have any other filtering parameters selected? Based on that route list, I’m guessing you have it set to only show trolleybuses. Clear that and try again.
Filters stack on top of each other—when you select one parameter and go to add another, it will only show the intersection of the two. So, if you’re set to only show trolleybuses, it will show routes being served by trolleybuses when you go that screen.
Yes, that was the issue. Thanks!
I’m an iPhone user and I’ve been very happy with One Bus Away. This app looks OK, and I downloaded it off the App Store, but doesn’t show bus stops on my iPhone. I didn’t drill down into the article very far, but I don’t see how this helps me more than One Bus Away.
Someone above asked a similar question. I’ve copied my reply below:
OBA is great for when you’re standing at a stop, waiting for the next bus on a route/routes that serve that stop, and want an estimate of how long it will be. This can be used for that too, but its strength lies in offering a bird’s-eye view of the entire system—sure, OBA tells you a bus is coming in two minutes, but this tells you that every bus traveling on a stretch of road later in the route is delayed. Additionally, when OBA tells you that that bus will be here “in two minutes” for ten minutes straight, this will show where it’s stuck and if other buses are in the same position.
Have you been able to solve the “I-5 problem”? Where buses like the 41 or 522 aren’t tracked while they are on I-5 so they appear to warp from downtown to their next stop. My biggest issue with One Bus Away is that it essentially reports gibberish for these routes.
That’s an issue with the source data from Metro, unfortunately. I’ve heard hardware upgrades are in the works, but don’t know if this will solve that.
Do you have any idea _why_ that occurs? Very weird quirk.