Overview
The Bus Tracker family of APIs provides a gateway into near-real-time CTA bus locations and estimated arrival times. You can use the official CTA Bus Tracker service via Web or mobile device.
To use these APIs, you must agree to the Terms of Service and apply for a key. You'll also need a Bus Tracker account.
How Bus Tracker works
Each bus has a device that uses the Global Positioning System (GPS) to determine where it is, make announcements as buses approach stops, and report back information about the bus to our servers. It helps us see where buses are and make service and schedules better and it can help bus riders make decisions about when to head out to a bus stop.
Estimated arrival times and these APIs are provided through a system called "BusTime," a product made by Clever Devices, Inc.
What the APIs do
The APIs make it easy for developers to get specific information from Bus Tracker to incorporate estimated arrivals and location information into innovative apps--mobile, online, or at locations.
How to get an API key
First, you'll need to get a Bus Tracker account. If you don't have one, sign up and activate your account first. Then:
- Sign into Bus Tracker.
- Choose on My Account in the upper right-hand corner of the page.
- Follow the link under "Developer API" to apply.
Documentation
Bus Tracker API Documentation
Quick Q&A
Q: How fresh is the data?
A: About as fresh as it can get—Bus Tracker data is updated about every minute, both on our site and in the API.
Q: How does Bus Tracker determine when a bus is likely to arrive at a stop?
A: The BusTime system makes estimations based on scheduled travel times and vehicle locations. Extraneous circumstances can have an impact on travel times, which is why Bus Tracker can only provide an estimate.
Q: What happens when a bus goes "off-route?"
A: When buses go off of their regular route, Bus Tracker will stop showing them because it isn't able to automatically tell which stops a bus will be able to cover before it continues its regular route.
Q: Why might a bus not appear in Bus Tracker?
A: In addition to situations where a bus goes off-route, a bus might also not appear in Bus Tracker due to a hardware or communications problem that causes a bus to not report in to the BusTime system. Generally, these circumstances are rare, but you should be aware of them if providing Bus Tracker data to your users.
Q: Is there a limit to how much data I can transfer?
A: By default, the Bus Tracker API has a transaction limit of 100,000* transactions/day. This helps us manage bandwidth and server resources better—but you can ask us to increase that limit, which we'll evaluate on a case-by-case basis.
*Updated default limit from 50,000 to 100,000 in April 2024
Q: How far in the future does Bus Tracker estimate arrivals?
A: Estimated arrival times are only available up to about a half-hour in the future. If you are interested in making estimations beyond that, try using scheduled service data via our GTFS feed.
Q: Why is some seemingly-similar information in the Bus Tracker API slightly different than what's in the GTFS feed?
A: These feeds are essentially pathways into data we use for pre-existing systems. For example, routes are "patterns" in the Bus Tracker API and routes are "shapes" in the GTFS feed. While these are very similar each is processed a little differently to serve the needs of each system.
...See the documentation for even more FAQs!
More information
See Further Reading for more information about how you might use this feed, pointers and more! Also, be sure to check out our other information feeds, including the Customer Alerts API and our Scheduled Service/GTFS data.