Stadtdaten mit Python und pandas abrufen
Tutorial: offene Daten deutscher Großstädte mit Python, requests und pandas über die kostenlose, keylose InfraNode-API abrufen und als DataFrame über alle Städte auswerten.
Eine Stadt abrufen
InfraNode liefert offene Daten deutscher Großstädte über eine kostenlose,
keylose REST-API. Der Einstieg mit requests ist eine Zeile:
import requests
base = "https://infranode.dev/api/v1"
r = requests.get(f"{base}/cities/berlin/weather", timeout=10)
r.raise_for_status()
payload = r.json()["data"]["payload"]
print(payload["temperature_c"], payload["condition"])
Die Fachdaten liegen im Envelope unter data.payload,
Provenienz und Cache-Status unter meta.
Querschnitt über viele Städte
Für eine Analyse über mehrere Städte holst du zuerst die Stadt-Liste und iterierst dann über die Slugs. So entsteht ein pandas-DataFrame, das du sortieren, filtern oder plotten kannst:
import requests
import pandas as pd
base = "https://infranode.dev/api/v1"
cities = requests.get(f"{base}/cities", timeout=10).json()["data"]
rows = []
for c in cities[:10]:
slug = c["slug"]
resp = requests.get(f"{base}/cities/{slug}/air-uba", timeout=10)
if resp.status_code != 200:
continue
p = resp.json()["data"]["payload"]
rows.append({"stadt": slug, "pm10": p.get("pm10"), "no2": p.get("no2")})
df = pd.DataFrame(rows)
print(df.sort_values("pm10", ascending=False))
Beachte das Rate-Limit von 300 Anfragen pro Minute und IP. Für die vollen
84 Städte empfiehlt sich ein kleiner time.sleep oder ein
Retry-Backoff bei Status 429.
Welche Daten verfügbar sind
Pro Stadt gibt es unter anderem Wetter, Luftqualität, Strompreis, Bodenrichtwerte und ÖPNV-Echtzeit. Die vollständige Feldreferenz steht in der API-Dokumentation.
Häufige Fragen
- Muss ich mich registrieren oder einen Key beantragen?
- Nein. Die API ist keylos und kostenlos. Ein einfacher GET-Request mit requests genügt, ohne Header oder Token.
- Wo liegen die Fachdaten in der Antwort?
- Unter data.payload. Metadaten wie Quelle, Lizenz und Cache-Status stehen unter meta und im attribution-Block.
- Gibt es einen fertigen Datensatz für Offline-Analysen?
- Ja. Reproduzierbare Snapshots als CSV und Parquet gibt es über die Zenodo-DOI und als Hugging-Face-Dataset.