Skip to content

GTFS

  • GTFS Spec - Specification for the General Transit Data Feed, or GTFS. Available in several languages.
  • GTFS Best Practices - Best practices for producers of a GTFS feed.

GTFS Libraries

Software that makes it easy to consume GTFS data in a variety of languages.

C

  • CGTFS - C library for reading static GTFS feeds. Supports reading unpacked feeds into application memory or into SQLite databases.
  • RRRR Rapid Real-time Routing - RRRR (usually pronounced R4) is a C-language implementation of the RAPTOR public transit routing algorithm.

C++

  • just_gtfs - C++17 header-only library for reading and writing GTFS (used in Valhalla). Main features: fast reading and writing of GTFS feeds, support for extended GTFS route types, simple working with GTFS Date and Time formats.

C

Go

Java

  • OneBusAway GTFS Modules - A Java-based library for reading, writing, and transforming public transit data in the GTFS format, including database support.

JavaScript

  • gtfs-sequelize - Node.js library modeling the static GTFS using sequelize.js.
  • gtfs-utils – Utilities to process GTFS data sets (e.g., "flattening" calendar.txt & calendar_dates.txt, computing arrival/departure times of trips).
  • gtfs-via-postgres – Yet another tool to process GTFS using PostgreSQL.
  • Node-GTFS - Loads transit data from GTFS files, unzips it and stores it to a SQLite database. Provides some methods to query for agencies, routes, stops and times.

PostgreSQL

Python

  • ESRI public-transit-tools - Tools for working with public transit data in ArcGIS (license for ArcGIS required).
  • gtfsdb - Python library for converting GTFS files into a relational database.
  • gtfs-segments - Python package that represents GTFS data for buses in a concise tabular manner using segments.
  • gtfslib-python - An open source library in python for reading GTFS files and computing various stats and indicators about Public Transport networks.
  • gtfsman - Repository-like tool in Python to manage and update a huge number of GTFS feeds.
  • gtfspy - Public transport network analysis and travel time computations using Python3. Compatible with Postgres/PostGIS, Oracle, MySQL, and SQLite. Used by gtfspy-webviz.
  • GTFS Kit - A Python 3.8+ tool kit for analyzing General Transit Feed Specification (GTFS) data. Supersedes GTFSTK.
  • GTFSTK - A Python 3 toolkit for analyzing GTFS data in memory. Uses Pandas and Shapely for speed. Superseded by GTFS Kit.
  • Make GTFS - A Python library to make GTFS feeds from basic route information.
  • Mapzen GTFS - A Python GTFS library that supports reading individual GTFS tables, or constructing a graph to represent each agency in a feed.
  • multigtfs - A Django application to import and export GTFS.
  • partridge - A fast, forgiving Python GTFS reader built on pandas DataFrames.
  • transit_service_analyst - A Python library to support transit service analysis.

R

  • gtfsio - Fast and flexible functions to read and write GTFS in R.
  • trread - A transit (GTFS) file reader for R.

Ruby

  • GTFS-viz - Ruby script that converts a set of GTFS files into a SQLite database + GeoJSONs (needed by the Transit Map web application)

GTFS Converters

Converters from various static schedule formats to and from GTFS.

  • Chouette - Converts French-Transmodel, SIRI, NETeX. See Chouette.mobi website for more info.
  • extract-gtfs-pathways – Command-line tool to extract pathways as GeoJSON from a GTFS dataset.
  • extract-gtfs-shapes – Command-line tool to extract shapes as GeoJSON from a GTFS dataset.
  • GTFS-OSM-Sync - A Java tool for synchronizing data in GTFS format with OpenStreetMap.org.
  • gtfs-service-area - Compute a transit service area from static GTFS. Results are output as single-layer .geojson files. Dockerized version of gtfs-to-geojson.
  • GTFS-route-shapes - A Python script to generate a single geoJSON shape for each transit route in a GTFS archive.
  • gtfs-to-geojson - Javascript tool that converts transit data in GTFS shapes and stops into geoJSON. This is useful for creating maps of transit routes.
  • gtfs2gps - An R package that converts public transportation data in GTFS format to GPS-like records in a data.table, where each row represents the timestamp of each vehicle at a given spatial resolution.
  • gtfs2emis - An R package to estimate the emission levels of public transport vehicles based on General Transit Feed Specification (GTFS) data.
  • gtsf - general transit (GTFS) simple (geographic) features (sf) in R. can be used to convert from GTFS to Shapefile, GeoJSON, and other formats through GDAL.
  • hafas-generate-gtfs (work-in-progress) – A Javascript tool to generate GTFS dumps from HAFAS endpoints.
  • Hafas2GTFS - Hafas2GTFS converter written in Python, optimized for SBB HAFAS feeds.
  • kml-to-gtfs-shapes - Javascript tool to convert polylines from a KML file into a GTFS shapes.txt file. Hosted on GitHub here.
  • NeTEx-to-GTFS Converter Java - Converts NeTEX datasets into GTFS datasets. The input NeTEx datasets are required to follow the Nordic NeTEx Profile.
  • o2g - A simple tool to extract GTFS feed from OpenStreetMap.
  • Open-Transport SYNTHESE Convertors - Converts French-Transmodel, SIRI, NETeX, HAFAS, HASTUS, VDV452, and more.
  • onebusaway-gtfs-to-barefoot - A Java tool to create a Barefoot mapfile from a GTFS file.
  • onebusaway-vdv-modules - A Java library for working with transit data in the VDV format, including converting VDV-452 schedule data into GTFS.
  • osm2gtfs - Turn OpenStreetMap data and schedule information into GTFS.
  • transit_model - A Rust library to convert to/from the following formats: GTFS, NTFS (for Navitia, see Software for Creating APIs), TransXChange (UK standard format), KV1 (Netherland standard format) or NeTEx (European standard format).
  • transloc-gtfs-rectifier - Python application that attempts to assign GTFS stop_ids to TransLoc IDs using TransLoc's API (TransLoc doesn't provide GTFS stop_ids in their API).
  • Transmodel and IFF to GTFS - Imports and syncs (Transmodel) BISON Koppelvlak1, IFF (a format written by HP/EDS, somewhat similiar to ATCO CIF) to import timetables of the railway networks. The internal pseudo-NETeX datastructure allows to export to GTFS and there are proof-of-concepts to export to other formats such as NETeX, GTFS and IFF.
  • UK2GTFS - R package that converts UK format TransXchange (bus, metro, tram, ferry) and CIF (rail) timetables to GTFS.

GTFS Data Collection and Maintenance Tools

GTFS Merge Tools

GTFS Analysis Tools

  • GTFS Kit - A Python 3.6+ tool kit for analyzing General Transit Feed Specification (GTFS) data. Supersedes GTFSTK.
  • gtfstools - A set of convenient tools for editing and analysing transit feeds in GTFS format in R.
  • transit_service_analyst - A Python library to support transit service analysis.
  • Peartree - A Python library for converting transit data into a directed graph for network analysis.
  • R5: Rapid Realistic Routing on Real-world and Reimagined networks - A Java-based routing engine developed by Conveyal for multimodal (transit/bike/walk/car) networks. It currently plans many trips over a time window for scenario planning and analytics purposes. A related R wrapper package (r5r) is developed independently by IPEA. See also the performance comparison from Higgins et al. (2022), linked below.
  • tidytransit - An R package to read GTFS data into tibbles and simple features dataframes to map transit stops and routes, calculate travel times and transit frequencies, and validate transit feeds.
  • transitr - An R package for constructing and modelling a transit network in real time to obtain vehicle ETAs
  • Busbuzzard - Inference of probabilistic schedules from empirical data about transit vehicles.
  • ESRI ArcGIS Public Transit Tools (GTFS) - Tools for working with public transit data in ArcGIS
  • GTFS-to-Chart - Creates stringline charts showing all vehicles on a transit route from GTFS data.
  • GTFS Display - Analyse, monitor and maintain GTFS data (Example instances).

GTFS Timetable Publishing Tools

  • GTFS-to-HTML - Generate human-readable timetables in HTML or PDF format directly from GTFS.
  • Timetable Kit - An open source Python 3.10 module and scripts depending on GTFS Kit, designed to create complex printed/PDF timetables with flexible layouts. Currently only working out of the box for Amtrak's GTFS, but under active development.
  • TimeTablePublisher (TTPUB) - A web publishing system developed by TriMet that allows a transit agency to examine, modify, and transform raw scheduling data into easy-to-read timetables for customer information purposes

GTFS Validators