Transport for Hessen, Germany API

Free to Use Varies (check documentation)

Overview

The RMV API provides public transport data for the Hessen region in Germany, including schedules, routes, and real-time departures. It covers bus, tram, S-Bahn, and regional train services operated by the Rhein-Main-Verkehrsverbund network. No API key is required, making it easy to start building transit apps right away.

💡

Beginner Tip

Explore the interactive API documentation at opendata.rmv.de to try live requests directly in your browser before writing any code. The API follows HAFAS standards used across European transit systems, so learning it here will help with other transit APIs too.

Available Data

match scores and results
team standings
player statistics
schedule and fixtures

Example Response

JSON Response
{
  "route": "Line 1",
  "origin": "Station A",
  "destination": "Station B",
  "departure": "08:30",
  "arrival": "09:15",
  "status": "On Time",
  "delays_min": 0
}

Field Reference

stopLocationOrCoordLocation List of matching stop locations returned by a location search, each containing the station name and its unique extId.
extId The external identifier for a stop, used to query departures and arrivals for that specific station.
Departure List of upcoming departure events at a station, including line name, direction, and scheduled time.
name Human-readable name of the transit line or stop location.
time Scheduled departure or arrival time in HH:MM:SS format.
rtTime Real-time adjusted departure or arrival time; present only when live data is available.

Implementation Example

const url = "https://opendata.rmv.de/site/";
const response = await fetch(url);
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();
console.log(data);

What Can You Build?

Note: These code examples are AI-generated and unverified. Always refer to the official API documentation for accurate usage.

Common Errors & Troubleshooting

Empty or unexpected response The API requires a valid access ID even though it is labeled as free; registration on the portal is needed.
Register at opendata.rmv.de to obtain an access ID, then include it as the accessId query parameter.
400 Bad Request on location search The input parameter is missing or the station name contains unsupported characters.
URL-encode the station name and ensure the input parameter is present, e.g. input=Frankfurt%20Hauptbahnhof.
No departures returned The requested time window may be in the past or the station ID is incorrect.
Use location.name first to get the correct extId (station ID), then use that ID in the departureBoard endpoint.

Matrix Score Breakdown

🌐 Reachability 0/30
⚡ Speed 15/20
🔒 Security 15/15
🛠 Developer XP 15/20
✓ Reliability 7/15
Response Time 289ms

Fully tested on Apr 5, 2026

Technical Specifications

Auth No Auth
HTTPS REQUIRED
CORS UNKNOWN
Category Transportation
Difficulty Beginner
Verified: 2026-04-04

Similar APIs

View All →