CTA promises 10-minute headways on Frequent Network routes. We tracked real-time bus positions to measure what riders actually experience.
Final dataset. These results are based on 1004 hours of real-time data collection (Feb 16–Mar 30, 2026). Data was collected every 5 minutes via a Cloudflare Worker; collection ended Mar 30, 2026.
CTA schedules 97–100% of Frequent Network headways at 10 minutes or less. This page tracks how often buses actually arrive within that promise, based on real-time vehicle positions collected every 5 minutes. Collection ended March 30, 2026.
We poll CTA's Bus Tracker API for real-time vehicle positions on all 20 Frequent Network routes. Stop arrivals are detected using a crossing+interpolation algorithm: when a vehicle's distance along route (pdist) crosses a reference point (selected at the midpoint of each route), the exact arrival time is linearly interpolated between the two bounding observations. Headways are computed as the time between consecutive arrivals at the same reference point traveling in the same direction.
Scheduled headways come from the CTA's GTFS static feed, which provides planned stop times for each trip. We computed the time between consecutive scheduled arrivals at the same reference stop and filtered to the Frequent Network service window.
The Frequent Network promises 10-minute headways during specific hours:
Both scheduled and observed headways are filtered to these windows for comparison.
Vehicle positions were collected every 5 minutes via a Cloudflare Worker and stored in Cloudflare D1 from February 16 to March 30, 2026.