Back to Guides

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

What does GTFS stand for?

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.