InfraNode.dev
MCP InfraNode is also available as an MCP server for AI assistants like Claude and ChatGPT.

Coverage & status

InfraNode covers 84 large German cities. Most endpoints return data for all 84 cities. A few are partially covered: they only serve curated cities. This page honestly shows which endpoint serves which cities, and where you get informed about outages.

Live status & outages

Current availability of every source and reported outages live on the status page. You can also subscribe to notifications there.

Open status page

Fully covered (all 84 cities)

All city and live endpoints are fully covered, except the partially-covered and geo-/live-based endpoints listed below. These include, among others, base data, weather, air quality (UBA), demographics, pollen/UV, POIs, charging stations, administrative boundaries, public procurement and public-transit stops. A city for which a source currently has nothing responds honestly with no_data rather than an error.

Partially covered endpoints

These endpoints draw their data from hand-curated per-city sources and only return data for the listed cities. For any other registered city the API responds with 200 and source_status: "not_covered", data: null and meta.covered_cities (exactly the slugs listed here). This is clearly distinct from no_data (city covered, but currently no data) and from 404 (unknown city).

Endpoint Path Covered cities Reason
Flood /api/v1/cities/{slug}/flood 15 of 84 berlinbonnbremendresdenduesseldorfduisburgerfurtessenfrankfurt-am-mainhamburgkoelnleipzigmainzmuenchennuernberg curated gauges per city
Inner-city roadworks /api/v1/cities/{slug}/road-events 9 of 84 berlinbremendortmunddresdenhamburgkoelnleipzigmuenchenstuttgart curated per-city connectors
Bike/scooter sharing /api/v1/cities/{slug}/sharing 25 of 84 aachenberlinbielefeldbraunschweigbremendresdenduesseldorffrankfurt-am-mainfreiburg-im-breisgauhanauhannoverheidelbergkarlsruhekasselkoelnleipzigleverkusenludwigshafen-am-rheinmannheimmoenchengladbachmuenchennuernbergoldenburgpotsdamwiesbaden curated GBFS systems per city
Land values /api/v1/cities/{slug}/land-values 56 of 84 aachenbergisch-gladbachberlinbielefeldbochumbonnbottropbraunschweigbremenbremerhavencottbusdarmstadtdortmundduesseldorfduisburgerfurtessenfrankfurt-am-maingelsenkirchengoettingengueterslohhagenhalle-saalehamburghammhanauhannoverhernehildesheimjenakasselkoelnkrefeldleverkusenmagdeburgmoenchengladbachmoersmuelheim-an-der-ruhrmuensterneussoberhausenoffenbach-am-mainoldenburgosnabrueckpaderbornpotsdamrecklinghausenremscheidrostocksalzgitterschwerinsiegensolingenwiesbadenwolfsburgwuppertal BORIS per federal state: WFS (BE, BB, HE, NI, HB, HH, MV, TH) + shapefile (NW, ST)
Government office wait times /api/v1/cities/{slug}/office-wait-times 1 of 84 koeln curated live city feed (Cologne only)
Parking occupancy /api/v1/cities/{slug}/parking 17 of 84 aachendortmunddresdenfrankfurt-am-mainfreiburg-im-breisgauhamburgheidelbergheilbronnkaiserslauternkarlsruhekoelnmagdeburgmuenchenmuensteroldenburgulmwuppertal ParkenDD live (13 license-verified cities) + Munich static catalogue
Bicycle counting stations /api/v1/cities/{slug}/bike-counts 8 of 84 berlinduesseldorfessenhamburgkoelnleipzigmuenchenstuttgart municipal bicycle-count open data per city (license-verified at origin)
Rooftop solar cadastre /api/v1/cities/{slug}/solar-roofs 42 of 84 aachenaugsburgbergisch-gladbachberlinbielefeldbochumbonnbottropcottbusdortmundduesseldorfduisburgerlangenessenfuerthgelsenkirchengueterslohhagenhamburghammherneingolstadtkoelnkrefeldleverkusenmoenchengladbachmoersmuelheim-an-der-ruhrmuenchenmuensterneussnuernbergoberhausenpaderbornpotsdamrecklinghausenregensburgremscheidsiegensolingenwuerzburgwuppertal official rooftop solar cadastre per federal state (NRW + Bavaria)
Heritage monuments Bavaria (CC-BY-ND) excluded /api/v1/cities/{slug}/heritage 17 of 84 berlindarmstadtfrankfurt-am-mainfreiburg-im-breisgauhamburghanauheidelbergheilbronnkarlsruhekasselmannheimoffenbach-am-mainpforzheimreutlingenstuttgartulmwiesbaden heritage register per federal state (state matter; verified open WFS)
Tree cadastre capped sample (very large registers) /api/v1/cities/{slug}/tree-cadastre 1 of 84 berlin municipal tree cadastre per city (verified open WFS)

Geo- and live-based special cases

  • Water levels (/api/v1/cities/{slug}/water-level): geo-based, Germany-wide along federal waterways. There is no fixed city list; if no gauge station is nearby, the API responds with no_data.
  • Transit realtime (/api/v1/live/{city}/transit/…): fed by the nationwide GTFS-RT feed, without a structural city boundary. If there are currently no realtime trips for a city, you get no_data.
  • HVV departures (Hamburg) (/api/v1/live/hamburg/departures): real-time departure board per HVV station from the Geofox GTI API, including delay and per-line service alerts. Hamburg only (Geofox covers the HVV area), station name via ?station=. Tier C live-only.
  • Per-city station departures and arrivals (/api/v1/cities/{slug}/station-departures and /station-arrivals): full coverage across all 84 cities. A city's main station is derived automatically from the official StaDa catalog (a verified pick for the major hubs), all categories including local trains. To target a specific station instead of the city's pick, use /stations/{eva}/departures (see below).
  • Station catalog (/api/v1/cities/{slug}/stations): every DB station in a city (mapped via the official municipality key), full coverage across all cities. Provides each station's EVA number for the per-station boards.
  • Per-station live departures and arrivals (/api/v1/stations/{eva}/departures and /arrivals): board of ANY station by its EVA number, all categories including local trains (S/RB/RE), with real-time delays, cancellations and disruption messages. No fixed city list: any valid EVA can be queried (otherwise no_data).

Understanding source_status

Every response carries an honest status in its meta block:

Value Meaning
okData present.
no_dataSource reachable / city covered, but currently no data.
not_coveredCity is structurally not covered by this partially-covered endpoint. data: null, covered cities in meta.covered_cities.
disabledSource disabled by configuration.
not_ingestedSource active, but no preprocessed snapshot yet.

An unknown city returns 404 instead. The machine-readable city list is available via GET /api/v1/cities:

curl https://infranode.dev/api/v1/cities/dortmund/flood