What's the Difference Between GTFS and GTFS-Realtime?
GTFS is your planned schedule (updated every few weeks), while GTFS-Realtime is the "live" version showing where vehicles are right now (updated every few seconds).
The original GTFS format – often called "GTFS Static" or "GTFS Schedule" – is the foundation of your data:
• What: Routes, stops, timetables, and fares.
• Format: Simple CSV files bundled in a ZIP archive.
• Updates: Usually weekly, monthly, or whenever your schedules change.
• The Goal: To let riders know when the bus is scheduled to arrive.
This is the "must-have" file to get your routes onto Google Maps. It answers the basic questions: "Which bus goes to the airport?" and "What time is the first train?"
GTFS-Realtime (GTFS-RT)
GTFS-Realtime is a companion to your static data. It provides the "live" overlay:
• What: Vehicle locations, arrival predictions, and service alerts.
• Format: Protocol Buffers (a more technical, binary format).
• Updates: Continuously, usually every 10-30 seconds.
• The Goal: To let riders know where the bus actually is right now.
GTFS-RT Feed Types
Vehicle Positions: Where each vehicle is right now (GPS coordinates).
Trip Updates: Predicted arrival times based on actual vehicle progress.
Service Alerts: Messages about delays, detours, or disruptions.
Comparison Table
| GTFS Static | GTFS-Realtime | |
|---|---|---|
| Data type | Planned schedules | Live updates |
| File format | CSV in ZIP | Protocol Buffers |
| Update frequency | Weekly/monthly | Every 10-30 seconds |
| Required for Google Maps | Yes | No (but recommended) |
| Infrastructure needed | File hosting | GPS tracking + servers |
| Complexity | Moderate | High |
Start with GTFS Static. This is mandatory. You can't appear in Google Maps or any other major trip planner without a static feed first.
Add GTFS-RT when you're ready. Live updates are awesome for riders, but they require more technical setup. Consider it if you already have GPS tracking on your fleet and the servers to handle constant data streams.
GTFS-RT doesn't replace your static data; it builds on top of it. Apps typically use both:
1. Static GTFS sets the stage (which routes exist, where the stops are).
2. GTFS-RT adds the live action (where the buses are and any delays).
3. The app shows the rider: "Bus 42 to Airport – Scheduled for 8:30, arriving in 4 min."
Without static GTFS, your live updates have no context. They work best as a team.
Related Questions
• How do I get my bus on Google Maps?
• GTFS-Realtime Explained (full article)
Creating your static GTFS feed? Validate it for free before publishing.