Trailstatus für deine App
Alle Trails, Parks und ihr aktueller Status als JSON. Für nicht-kommerzielle Projekte kostenlos, mit einem Link zu trailstatus.de als Quelle.
Zugang
Schreib kurz, was du bauen willst, an hallo@trailstatus.de. Den Schlüssel schickst du im Header x-api-key mit. 1.000 Anfragen pro Tag sind frei.
curl -H "x-api-key: DEIN-SCHLÜSSEL" \ "https://trailstatus.de/api/trails?status=open&limit=20"
{
"MESSAGES": ["Trails erfolgreich abgerufen."],
"DATA": [ { "id": "trail-…", "name": "…", "status": "open", … } ],
"IS_ERROR": false,
"COUNT": 20,
"TOTAL": 87, "LIMIT": 20, "OFFSET": 0,
"ATTRIBUTION": { "text": "Daten: trailstatus.de", "url": "https://trailstatus.de/" }
}
DATA ist immer eine Liste, auch bei einem einzelnen Trail. Fehler erkennst du am HTTP-Status und an IS_ERROR.
Quellenangabe
Wer die Daten zeigt, nennt trailstatus.de als Quelle. Das ist Bedingung für den kostenlosen Zugang.
- Websites: „Daten: trailstatus.de“ sichtbar in der Nähe der Daten, mit einem normalen Link auf
https://trailstatus.de/oder auf die Seite des jeweiligen Trails (Feldurl). - Apps: „Daten: trailstatus.de“ im Info- oder Quellenbereich der App, wenn möglich als antippbarer Link.
- Stand: Zeig zu jedem Status an, wann er zuletzt gesetzt wurde (
status_updated). Ein Status ohne Datum führt Rider in die Irre, wenn er ein paar Wochen alt ist.
Jede erfolgreiche Antwort enthält dafür das Feld ATTRIBUTION mit Text und Link. Für Websites reicht dieser Schnipsel:
<p class="quelle">Daten: <a href="https://trailstatus.de/">trailstatus.de</a>, Stand 26.10.2026</p>
Das Datum kommt aus status_updated des jeweiligen Trails. Für kommerzielle Projekte und alles, was über diese Seite hinausgeht, gelten Nutzungsbedingungen auf Anfrage an hallo@trailstatus.de.
Endpunkte
GET /api/trails
Alle Trails mit Status, sortiert nach Park und Name.
| Parameter | Werte | Bedeutung |
|---|---|---|
| status | open, caution, closed, unknown | Nur Trails mit diesem Status |
| difficulty | SUPER_EASY, EASY, MEDIUM, HARD | Grün, Blau, Rot, Schwarz |
| park | subregion-… | Nur Trails eines Parks oder Spots |
| region | region-… | Nur Trails einer Region |
| q | Text | Suche in Trail-, Park-, Regions- und Betreibernamen |
| limit | 1 bis 100 | Einträge pro Seite, Standard 100 |
| offset | ab 0 | Für die nächste Seite |
GET /api/trails/{id}
Ein Trail mit status, status_name, status_text (Notiz vom Betreiber), status_updated (ISO 8601), difficulty, Länge und Höhenmeter in Metern, Koordinaten, subregion_name und url.
GET /api/regions
Alle Regionen mit Trails, mit Anzahl der Parks, Trails und offenen Trails. Optional q für die Suche.
GET /api/regions/{id}
Eine Region mit ihren Parks und Spots inklusive Koordinaten.
HTTP-Status
| 200 | Alles gut |
| 400 | Ein Parameter hat einen ungültigen Wert. Die Meldung sagt, welcher. |
| 401 | Schlüssel fehlt, ist falsch oder abgelaufen |
| 404 | Trail, Region oder Endpunkt gibt es nicht |
| 429 | Tageslimit erreicht. Retry-After sagt, wann es weitergeht. |