October 15, 2018

Ghostbusting Ghost Buses with Swiftly

by Swiftly

Ghost buses can lead to head-scratching and infuriating moments for riders. Knowing what causes them is the best way to prevent them.

Do you believe in ghosts?

Imagine the terror: a rider is waiting for the bus, real-time info predicts it will come in 8 minutes, and then some spooky stuff starts to happen. The ETA suddenly jumps from 8 minutes up to 18 minutes, then immediately back down to 6 minutes. After 6 minutes, no bus comes. Only after waiting several minutes more — BOO! — a bus comes out of nowhere. Scaaaaary. What could cause such paranormal real-time activity?

Ghooooost buuuuuses.

Yes, ghost buses are frightfully common, and they’ll haunt your real-time apps if you let them. But there are many things you can do to exorcise these ghoulish fiends from your transit network. The first thing is learning to recognize the many types of ghost buses that may appear, and to know exactly what to do when they do.

Read on, if you dare…

1. The out-of-service ghost bus

Running out-of-service buses is part of operating any transit network. They’re necessary for deadheading, training operators, and testing new vehicles, among other things. And the great thing is that telling riders a bus is out of service is as simple as putting “OUT OF SERVICE” on the destination sign, right? Well, not unless you want a ghost bus.

Even when your buses aren’t in service, they’re likely still sending GPS signals to your real-time software. Most of the time your software will understand that these vehicles are indeed out of service, holding back the information from any passenger-facing apps. But every once in a while, if the out-of-service bus mimics a real route alignment, the software may mistake the bus for an in-service vehicle, adding the trip into passenger-facing apps.

The good news is that Swiftly’s Auto-Assigner feature is quite good at discerning out-of-service buses from those actually serving passengers. And as a fail-safe method, we’ll even set up custom feeds of trips that have been canceled for the day, preventing out-of-service buses from showing up in passenger-facing apps. MTA in Baltimore, for example, has successfully removed many would-be ghost buses from their network this way!

2. The schedule-based ghost bus

Rider-facing apps need to relay real-time info to passengers all the time, not just when buses are turned on. That means that before a vehicle block starts, and vehicle engines aren’t running yet (and GPS info isn’t flowing), ETAs have to come from somewhere. In these cases, most real-time software will revert to scheduled timetables to generate vehicle ETAs. For example, if the first trip in a block starts at 6:00am and is scheduled to arrive at Timepoint A at 6:08am, a rider waiting at Timepoint A checking her app at 5:59am will see an ETA of 9 minutes.

But what happens when the operator of that trip starts up his vehicle late, say, at 6:03am? If not handled well, the ETA at Timepoint A will jump from the scheduled 6:08am to 6:11am — and the rider will see the ETA suddenly jump as well. The worst case version of this scenario is if the trip starts 8 minutes late: the app would continue to count down to an ETA of 0 minutes based on the timetable, but the bus simply wouldn’t show up. How’s that for ghostly?

Swiftly’s predictions are the most accurate in the industry, meaning that even in situations like these, we continue to adjust the predictions while the bus is still stopped at the terminal, and the predictions won’t wrongly count down to zero. If it looks like the bus won’t make the trip, we’ll remove it. And our algorithms ensure that ETAs never revert to schedule-based predictions unless absolutely necessary. We also work with Transit App to differentiate real-time ETAs from schedule-based ones, displaying “radio” icons for predictions based on actual GPS data. Doing this, we recently partnered with MBTA in Boston to improve their prediction accuracy by 10%!

3. Short turn ghost buses

It happens: sometimes buses get so far behind schedule it’s necessary to alight all passengers so the bus can skip stops and try to get back on schedule. But for riders waiting for these buses farther down the line, short turns appear to be outright sorcery. From their perspective, the ETA slowly counts down as the crowded bus gets nearer. But as soon as the vehicle is pulled from service, the ETA jumps to the next vehicle behind the pulled one, leading to some head-scratching (and infuriating) moments.

The best antidote for these types of scenarios is to avoid short turns in the first place. Swiftly’s Run-Times module makes it easy to identify trips that regularly exceed recovery time, so you can build enough layover time into your schedule and reduce the number of short turns to begin with!

Who you gonna call?

These are just some common scenarios that lead to ghost buses. Of course there are more, but in the “spirit” of brevity, we’ll keep it at that. In the meantime, when there’s something strange in your bus system, who you gonna call? Swiftly, the Ghostbus-ters!

For more info about how Swiftly can help reduce ghost buses at your agency, reach out at

Bring reliability to your city

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.