Back to projects
Data 2025

MetroFlow API

Creator

Skills

ProgrammingProblem SolvingAPI Design

Technologies

TypeScriptNode.jsDockerProtocol Buffers

Team Size

1 person

View project

The MTA doesn’t offer a direct API for transit data—instead, they publish raw Protocol Buffer feeds that developers must parse and serve themselves. MetroFlow API does the heavy lifting, providing a clean REST interface for real-time subway, LIRR, and Metro-North departure data.

3 Transit systems
472 Subway stations
Real-time Departure data

The Problem

Building anything with NYC transit data means wrestling with MTA’s GTFS-Realtime ProtoBuf feeds—a format designed for machine efficiency, not developer ergonomics. Every app that wants departure times needs to decode these feeds, match trips to stops, and handle the quirks of each transit system.

What I Built

  1. 1

    Feed Ingestion

    Fetch and decode GTFS-Realtime ProtoBuf feeds from MTA for all three transit systems.

  2. 2

    Data Normalization

    Transform raw feed data into consistent, queryable formats across Subway, LIRR, and Metro-North.

  3. 3

    REST API

    Expose clean endpoints for station departures, service alerts, and trip information.

  4. 4

    Containerization

    Package everything in Docker for easy self-hosting and deployment.

Live Demo

Here’s the API in action, showing real-time departures from Graham Av:

Graham Av

Live departures

API Endpoints

The API provides straightforward endpoints for common transit queries:

  • Station Departures - Real-time arrivals for any station
  • Service Alerts - Current delays, planned work, and service changes
  • Trip Details - Full trip information including all stops

Impact

MetroFlow removes the barrier to building with NYC transit data. Instead of spending days parsing ProtoBuf feeds, developers can start building useful applications immediately.

View on GitHub

Self-host your own NYC transit API

github.com