Europäische Gasspeicherdaten — direkt in Ihren Workflow
gas-risiko.de veröffentlicht strukturierte, maschinenlesbare JSON-Daten: tägliche Füllstände, 14-Tage-ARIMAX-Prognosen mit vollständigen Quantilbändern, 365-Tage-Saisonausblicke, grenzüberschreitende Flow-Z-Scores und Füllstand-Stress-Szenarien — täglich morgens aus Primärquellen aktualisiert.
Alle Datensätze zeigen die Aktualität relativ zum JSON-Build-Zeitstempel. Die Produktions-Pipeline läuft zweimal täglich nach Europe/Berlin (ca. 06:00 morgens und ca. 23:45 nach der AGSI+-Abendveröffentlichung) aus AGSI+, ENTSO-G, Open-Meteo, SMARD und TTF. Ein GitHub-Actions-Backup kann um ca. 00:30 UTC laufen. Orange kann bedeuten, dass eine Primärquelle noch als verzögert gilt — nicht zwingend, dass der Export alt ist.
Zwei Stufen, eine klare Grenze
Vollständiges öffentliches Dashboard für alle 7 Länder. Best-Effort-Daten, kein Konto erforderlich.
Höhere Stufen (The Strategic Hub · The Enterprise Grid) mit Forecast-Vintages / As-of-API, PDF-Berichten, Webhook-Alerts und rohen Monte-Carlo-Pfaden befinden sich in Entwicklung. Frühzeitiges Interesse: info@mh-analytics.eu.
Fünf strukturierte Datenfeeds
/api/data?country=DEfill_level_pctstorage_pct_rankrequired_injection_rate_ppdayP10/P25/P50/P75/P90p_alarmsource_statusseasonal_profilestorage_type_breakdowncoefficientsdiagnostics/api/annual?country=DEbaseline p10/p50/p90standardised scenarioswinter_minimum (OLS)p_breach_15pctood_boundsscenario_translation_metaess_paths/api/scenarios?country=DEcategory / severityparametersdelta_winter_min_ppdelta_se_at_winter_mincorridor_metadatascenario_translation_meta/api/network?country=DEflow_gwhcapacity_gwhutilization_pcttrailing_30d_meanzscore_30dis_lngstress_flag/api/refill-stress?country=DEsensitivity_gridcritical_boundaryoct31_fill_pcttarget_shortfall_twhdays_below_15seasonal_ratesReale Payload-Struktur
Alle Responses sind versioniertes JSON mit einem contract_version- oder endpoint-spezifischen Contract-Version-Feld. Quantile sind immer monoton; NaN-Werte werden als null serialisiert.
{
"contract_version": "1.0",
"generated_at": "2026-04-26T04:07:33.912Z",
"latest": {
"date": "2026-04-24",
"fill_level_pct": 37.42,
"gas_in_storage_twh": 182.1,
"storage_pct_rank": 31.4,
"required_injection_rate_ppday": 0.284,
"d_current": 0.91
},
"predictions": [
{ "date": "2026-04-25", "P10": 36.8, "P50": 37.6, "P90": 38.4 },
{ "date": "2026-04-26", "P10": 36.2, "P50": 37.1, "P90": 38.0 }
],
"seasonal_profile": {
"120": { "p10": 44.8, "p50": 56.1, "p90": 66.8 }
},
"storage_type_breakdown": {
"country": "DE",
"cavern_fraction": 0.49,
"pore_fraction": 0.51
},
"source_status": {
"agsi": { "stale": false, "last_date": "2026-04-24", "fetched_at": "2026-04-26T03:55Z" },
"ttf": { "stale": false, "last_date": "2026-04-25", "fetched_at": "2026-04-26T04:01Z" }
}
}Wer diese Daten nutzt
Rigoros, sachlich, transparent
Praktische Informationen für die Beschaffung
Vertragsvorlagen für die Beschaffung
Maschinenlesbarer API-Vertrag
Die vollständige OpenAPI 3.1 Spezifikation deckt öffentliche Endpunkte und authentifizierte /api/v1 Routen, Request-Parameter, Response-Schemas, Beispiele, Fehlermodelle, Cache/ETag-Semantik und RateLimit-Header ab. Zum Generieren von Client-Stubs, für Integrationstests oder Swagger UI.
curl -s "https://gas-risiko.de/api/data?country=DE" \
-H "Accept: application/json" | jq '.latest,.predictions[:2]'ETAG=$(curl -sI "https://gas-risiko.de/api/data?country=DE" | grep -i etag | awk '{print $2}' | tr -d '\r')
curl -sv "https://gas-risiko.de/api/data?country=DE" -H "If-None-Match: $ETAG"curl -i "https://gas-risiko.de/api/v1/data?country=DE" \
-H "Accept: application/json" \
-H "Api-Key: $GAS_RISIKO_API_KEY"curl -s "https://gas-risiko.de/api/scenarios?country=DE" \
-H "Accept: application/json" \
| jq '.scenarios[] | {id:.scenario_id,category,delta:.delta_winter_min_pp}'import requests, json
BASE = "https://gas-risiko.de"
etag = None
def fetch_if_changed(country: str = "DE") -> dict | None:
global etag
headers = {"If-None-Match": etag} if etag else {}
r = requests.get(f"{BASE}/api/data", params={"country": country}, headers=headers)
if r.status_code == 304:
return None # data unchanged
r.raise_for_status()
etag = r.headers.get("ETag")
return r.json()
data = fetch_if_changed("DE")
if data:
latest = data["latest"]
print(f"Fill: {latest['fill_level_pct']:.1f}% "
f"P50 d+1: {data['predictions'][0]['P50']:.1f}%")import requests
COUNTRIES = ["DE", "NL", "FR", "IT", "AT", "CZ", "PL"]
BASE = "https://gas-risiko.de"
risks = {}
for c in COUNTRIES:
r = requests.get(f"{BASE}/api/annual", params={"country": c})
r.raise_for_status()
d = r.json()
risks[c] = {
"winter_min_p50": d["baseline"]["winter_minimum"]["p50"],
"p_breach_15pct": d["baseline"]["p_breach_15pct_any_winter"],
"ood_bounds": d.get("ood_bounds", {}),
}
for c, v in sorted(risks.items(), key=lambda x: x[1]["p_breach_15pct"], reverse=True):
print(f"{c} winter-min P50={v['winter_min_p50']:.1f}% "
f"P(breach 15%)={v['p_breach_15pct']:.0%}")gas-risiko.de-Daten in Ihren Stack integrieren
Schreiben Sie uns für Datenlizenzierung, Update-SLAs, länderspezifische Erweiterungen, White-Label-Deployment oder Integrations-Support.
info@mh-analytics.eu →Daten werden täglich aus öffentlichen Primärquellen aktualisiert (AGSI+, ENTSO-G, Open-Meteo, SMARD, TTF). Diese Website stellt keine Finanzberatung dar. Prognosen enthalten explizite Unsicherheiten — prüfen Sie immer Diagnosen und Intervallabdeckung vor dem produktiven Einsatz.