,

OpenData – Gasspeicher in Deutschland – Teil 1: GIE-AGSI

Der Sommer geht zu Ende und die Zeitungen bringen die ersten Meldungen über die Füllstände der deutschen Gasspeicher. Allerdings sind die Darstellungen nicht eindeutig: Sie reichen von „Alles klar, der Winter kann kommen“ bis zu „Wir werden alle erfrieren“.

Was stimmt denn jetzt?

Zum Glück müssen wir uns nicht auf meinungsbehaftete Berichte und vorgefilterte Daten verlassen, sondern können uns die Daten direkt von der Quelle beschaffen.

☝️Hinweis: Wer sich nur für die Auswertung der Daten und deren Interpretation interessiert, der sollte direkt zu Teil 3: Daten und Politik gehen.

1 . Die GIE und das AGSI

GIE steht für Gas Infrastructure Europe. Es handelt sich um eine Organisation, die als zentrale Schnittstelle für Transparenzdaten der europäischen Gasinfrastruktur fungiert und mehrere spezialisierte Plattformen betreibt.

Die GIE stellt drei zentrale Plattformen zur Verfügung, die einen europaweiten Überblick über die Gasinfrastruktur bieten:

  • AGSI (Aggregated Gas Storage Inventory): Diese Plattform liefert tägliche Daten über die Füllstände, Kapazitäten und Flüsse von Gasspeichern in Europa.
  • ALSI (Aggregated LNG System Inventory): Hier werden Bestandsdaten und Kapazitäten von LNG-Terminals (Flüssigerdgas) veröffentlicht.
  • IIP (Inside Information Platform): Diese dient der Offenlegung von Insider-Informationen und dringenden Marktmeldungen (Urgent Market Messages – UMM) durch Infrastrukturbetreiber gemäß den EU-Vorschriften.

Wie der Name schon sagt, ist das AGSI die richtige Anlaufstelle, wenn wir über die Füllstände der deutschen Gasspeicher Bescheid wissen wollen. Dort findet man folgende Daten:

  • Full %: Der aktuelle Füllstand in Prozent im Verhältnis zur technischen Kapazität.
  • Gas in storage (TWh): Die absolute Menge des gespeicherten Gases in Terawattstunden.
  • Trend: Ob aktuell mehr eingespeichert oder entnommen wird (+/-).
  • Einspeisung/Ausspeisung (GWh/d): Die täglichen Gasflüsse.

Die Daten werden täglich aktualisiert, normalerweise um 19:30 Uhr MEZ und ein zweites Mal um 23:00 Uhr MEZ, um auch spätere Meldungen der Betreiber zu berücksichtigen. Die veröffentlichten Werte repräsentieren den Status am Ende des vorangegangenen Gastages (Stand 6:00 Uhr morgens).

💡 Gut zu wissen: Die Tücken des „Gastages“ (Achtung bei der Datenanalyse!)

Wer zum ersten Mal mit den Transparenzdaten von Gas Infrastructure Europe (GIE) arbeitet, stolpert schnell über vermeintliche Logikfehler im Datensatz. Dahinter steckt jedoch kein API-Fehler, sondern die spezifische Definition des Gastages (gas day) in der Energiewirtschaft.

Hier sind die drei wichtigsten Stolpersteine, die du bei deiner Analyse und Datenpflege unbedingt beachten musst:

1. Der 24-Stunden-Datumssprung

  • Das Phänomen: Ein API-Eintrag für den Gastag (gasDayStart) "2026-08-19" repräsentiert den Füllstand am Ende dieses Gastages.
  • Die Falle: Das Ende des Gastages vom 19. August ist physikalisch der 20. August um 06:00 Uhr morgens. Der gemeldete Wert zeigt also den realen Speicherstand vom Morgen des Folgetages. Wer das bei der Achsenbeschriftung im Diagramm nicht beachtet, verschiebt seine gesamte Timeline ungewollt um einen Tag nach hinten!

2. Die systematische Veröffentlichungs-Verzögerung

  • Das Phänomen: Obwohl ein Gastag morgens um 06:00 Uhr endet, sind die Daten nicht sofort verfügbar.
  • Die Falle: GIE aktualisiert die AGSI-Plattform täglich standardmäßig erst ab 19:30 Uhr (und fährt eine zweite Verarbeitungsrunde für Nachzügler um 23:00 Uhr). Ein automatisiertes Update-Skript, das morgens um 09:00 Uhr läuft, läuft ins Leere, da die Daten des gerade beendeten Gastages erst am Abend bereitgestellt werden.

3. Schätzungen vs. Bestätigte Daten (status: E vs. C)

  • Das Phänomen: Historische Werte können sich nachträglich rückwirkend verändern.
  • Die Falle: Speicherbetreiber melden ihre physikalischen Füllstände oft zunächst als vorläufige Schätzungen (status: "E" für Estimated). Sobald präzisere Messdaten vorliegen, korrigieren die Betreiber die Werte der vergangenen Tage rückwirkend und der Status wechselt auf bestätigt (status: "C" für Confirmed). Ein starrer lokaler Cache, der einmal geschriebene Zeilen nie wieder anfasst, speichert dauerhaft ungenaue Schätzwerte ab.

2. Zugang

Der Zugang zu den Daten der GIE ist kostenlos, verlangt aber einen API-Schlüssel. Diesen erhält man, indem man sich auf der Webseite registriert und anschließend eine E-Mail an die angegebene Adresse schickt und um einen API-Zugang bittet. Darüber sollen wohl Bots abgehalten werden, die Plattform zu fluten.

3. Die Schnittstelle

Die API der GIE-AGSI ist sehr umfangreich, deshalb konzentrieren wir uns zunächst auf einen aktuell besonders interessanten Anwendungsfall, nämlich den Vergleich der aktuellen Gasspeicherfüllmenge in Deutschland im historischen Vergleich.

Authentifizierung

Der API-Schlüssel wird nicht als Parameter der URL angegeben, sondern mit dem Header-Feld x-key übertragen.

Für eine einfache Überprüfung der Funktionalität kann man im Terminal mit curl
die API-URL mit seinem Schlüssel aufrufen:

curl https://agsi.gie.eu/api --header "x-key: your-API-key"

Im Erfolgsfall antwortet der Server mit einem JSON-Objekt, das alle verfügbaren Daten vom letzten „Gas-Tag“ beinhaltet, bei einem Fehler mit

{"last_page":0,"total":0,"dataset":"storage ERROR","error":"access denied","message":"Invalid or missing API key","data

":[]}

Daten spezifizieren

☝️ Hinweis: Zur Vereinfachung wird die Authentifizierung in den folgenden Beispielen weg gelassen. Des Weiteren werden die Antworten in Teilen gekürzt.

Der Aufruf der API gibt, wie oben bereits erwähnt, alle Daten für den letzten „Gas-Tag“ für alle 18 Mitglieder der EU, die Untergrundspeicher für Gas besitzen, aus. Um die Daten auf ein Land zu begrenzen, nimmt man den ISO-Ländercode für den Parameter country(sehr fortschrittlich für eine Verbands-API):

curl https://agsi.gie.eu/api?country=de

Jetzt werden ein kurzer Header und die Daten der letzten 30 Tage für Deutschland ausgegeben:

{
    "last_page": 191,
    "total": 30,
    "dataset": "\u003Ca href=\u0022\/data-overview\/eu\u0022\u003EEU\u003C\/a\u003E \u003E DE",
    "gas_day": "2026-08-19",
    "data": [
        {
            "name": "Germany",
            "code": "DE",
            "url": "DE",
            "updatedAt": "2026-08-20 17:20:47",
            "gasDayStart": "2026-08-19",
            "gasDayEnd": "2026-08-20",
            "gasInStorage": "123.7062",
            "consumption": "903.9000",
            "consumptionFull": "13.69",
            "injection": "234.91",
            "withdrawal": "157.8",
            "netWithdrawal": "-77.1",
            "workingGasVolume": "246.489",
            "injectionCapacity": "4292.58",
            "withdrawalCapacity": "7067.36",
            "contractedCapacity": "194.1057",
            "availableCapacity": "58.6043",
            "coveredCapacity": "100",
            "status": "C",
            "trend": "0.04",
            "full": "50.19",
            "info": []
        },
        ...

last_page gibt an, das 191 weitere Seiten mit der in total angebenen Anzahl an Daten vorhanden sind. Die kryptischen Zeichen \u003Ca href=\u0022\/data-overview\/eu\u0022\u003EEU\u003C\/a\u003E \u003E DEin dataset sind die Unicode-Darstellung der URL <a href="/data-overview/eu">EU</a> > DE, und geben den ausgegebenen Datenbereich an.

Es ist zu beachten, dass der gas_day zwar der 19. August ist, aber trotzdem Daten vom 20. August vorhanden sind. Das liegt an der Definition des „Gas-Tags“. Er beginnt um 6 Uhr des angegebenen „Gas-Tags“ und endet um 6 Uhr des nächsten Tages. Zusätzlich handelt es sich hierbei um „geprüfte“ Daten („status“: „C“).
Speicherbetreiber melden ihre physikalischen Füllstände oft zunächst als vorläufige Schätzungen. Sobald präzisere Messdaten vorliegen, korrigieren sie die Werte der vergangenen Tage rückwirkend.
So kann es also auch passieren, dass sich Daten vom gleichen Tag unterscheiden, je nachdem zu welchem Zeitpunkt man sie abfragt.

Um die Daten auf den aktuellen Tag zu begrenzen, lässt man sich mit dem Parameter size=1 nur einen Datensatz pro Seite ausgeben. Die Default-Anzahl der Seiten ist ebenfalls 1:

curl https://agsi.gie.eu/api?country=de&size=1
{
    "last_page": 5710,
    "total": 1,
    "dataset": "\u003Ca href=\u0022\/data-overview\/eu\u0022\u003EEU\u003C\/a\u003E \u003E DE",
    "gas_day": "2026-08-19",
    "data": [
        {
            "name": "Germany",
            "code": "DE",
            "url": "DE",
            "updatedAt": "2026-08-20 17:20:47",
            "gasDayStart": "2026-08-19",
...
        }
    ]
}

Das ist schon die ganze Magie, um die aktuellen Werte der deutschen Gasspeicher abzufragen.

Tatsächlich werden wir die API gar nicht in dieser Blog-Serie nutzen, denn um an die historischen Daten zu kommen, muss man die API nicht unbedingt nutzen. Für den Zweck dieses Tutorials ist der direkte Download von der Webseite einfacher. Die API benötigen wir aber später, um den Datensatz aktuell zu halten.

Historische Daten

Wie bereits mehrmals angemerkt, sind diese Daten ohne die historische Einordnung nur wenig Wert. Zum Glück kann man aber alle vorhandenen Daten der AGSI abrufen. Dazu gibt es zwei Möglichkeiten

  1. Über die Webseite
  2. per API

Wenn man „nur“ die wichtigtsten Daten eines Landes herunterladen möchte, so ist der Zugriff über die Webseite mit den historischen Daten der GIE-AGSI der einfachste Weg.

Die „Current selection“ stellt man auf „Germany“ und den „Range“ auf „All“. Auf der rechten Seite kann man sich bei „Download current data view“ zwischen CSV, JSON und XSXL (Excel) entscheiden.
Um die Daten später am einfachsten mit einem Programm verarbeiten bietet sich JSON an, da die meisten Programmiersprachen eine native Verarbeitung unterstützen.

Der Download über die Webseite ist etwas gtöper als 2MB und enthält nur die Daten der Kategorien, die in der Datentabelle zu sehen sind. Wenn man zusätzliche Kategorien (19 statt 12) oder mehrere Länder abfragen will, ist ein kleines Skript notwendig und einfacher. Dies ist aber außerhalb des Fokus dieses Projekts.

4. Die Daten im Detail

Die über die API abrufbaren Daten haben, wie bereits oben gesehen, bei der Abfrage eines einzelnen Landes folgende Struktur.

{
  "last_page": 1,
  "total": 1,
  "gas_day": "2026-08-17",
  "data": [
    {
      "name": "EU",
      "code": "eu",
      "url": "eu",
      "updatedAt": "2026-08-18 22:00:04",
      "gasInStorage": "693.6291",
      "full": "61.37",
      "injection": "3178.2",
      "withdrawal": "426.1",
      "workingGasVolume": "1130.2094",
      "status": "E",
      "trend": "0.24",
      "children": [
        {
          "name": "Germany",
          "code": "DE",
          "url": "DE",
          "updatedAt": "2026-08-18 22:00:04",
          // Spezifisch für Länder-Ebene:
          "consumption": "903.9000", 
          "consumptionFull": "13.65",
          "gasInStorage": "123.3965",
          "full": "50.06",
          "children": [
            {
              "name": "Uniper Energy Storage",
              "code": "21X000000001127H",
              "url": "21X000000001127H/DE",
              "updatedAt": "2026-08-18 05:23:59",
              "gasInStorage": "34.2155",
              "full": "57.81",
              "children": [
                {
                  "name": "UGS Bierwang",
                  "code": "21W0000000000613",
                  "url": "21W0000000000613/DE/21X000000001127H",
                  "updatedAt": "2026-08-18 05:23:59",
                  // Spezifisch für Anlagen-Ebene:
                  "type": "DSR",
                  "longitude": "12.4013",
                  "latitude": "48.1275",
                  "gasInStorage": "5.9433",
                  "full": "62.9",
                  "injection": "0.05",
                  "withdrawal": "0",
                  "workingGasVolume": "9.449",
                  "status": "C"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

1. Die Wurzel-Ebene (Root Object)

Dies ist die oberste Ebene der JSON-Antwort. Sie enthält keine speicherspezifischen Daten, sondern Metadaten zur Steuerung der Abfrage:

  • last_page: Gibt an, wie viele Seiten für die aktuelle Abfrage insgesamt verfügbar sind (wichtig für die Paginierung).
  • total: Die Gesamtzahl der Dateneinträge auf dieser Ebene.
  • gas_day: Das Datum des Gastages, auf den sich alle Daten in der Antwort beziehen.
  • data: Ein Array, das den ersten inhaltlichen Knoten (den Kontinent) enthält.

Die tatsächlichen Daten:

Feld-IdentifikatorBeschreibungEinheit
gasInStorageGesamtmenge des im Speicher befindlichen Gases am Ende des Gastages.TWh
workingGasVolumeMaximale technische Speicherkapazität der Anlage.TWh
fullFüllstand im Verhältnis zur technischen Kapazität (WGV).%
injectionWährend des Gastages eingespeicherte Gasmenge.GWh/d
withdrawalWährend des Gastages ausgespeicherte Gasmenge.GWh/d
netWithdrawalNettowert der Flüsse (Ausspeisung minus Einspeisung).GWh/d
injectionCapacityMaximale technische Einspeisekapazität pro Tag.GWh/d
withdrawalCapacityMaximale technische Ausspeisekapazität pro Tag.GWh/d
consumptionJährlicher Gasverbrauch (nur auf Länderebene verfügbar).TWh
consumptionFullAktueller Speicherstand im Verhältnis zum Jahresverbrauch.%
contractedCapacityBereits vertraglich gebundene Kapazität (Unternehmen/Anlagen).TWh
availableCapacityNoch verfügbare (nicht gebundene) Kapazität.TWh
coveredCapacityAbdeckungsgrad des Datensatzes (EU/Länder).%
trendIndikator für die Füllstandsänderung: (Einspeisung – Ausspeisung) / WGV.+/-
statusDatenqualitätsindikator (E=geschätzt, C=bestätigt, N=keine Daten).

Wie oben beschrieben reicht für diese Blogpost-Serie der Download über die Webseite mit einem reduzierten Datensatz:

{
		"status": "C",
		"gasDayStart": "2026-08-19",
		"gasDayEnd": "2026-08-20",
		"gasInStorage": 123.7062,
		"full": 50.19,
		"trend": 0.04,
		"consumption": 903.9,
		"consumptionFull": 13.69,
		"injection": 234.91,
		"withdrawal": 157.8,
		"workingGasVolume": 246.489,
		"injectionCapacity": 4292.58,
		"withdrawalCapacity": 7067.36,
		"contractedCapacity": 194.1057,
		"availableCapacity": 58.6043
	},

Im nächsten Teil werden wie die Daten verarbeiten und Statistiken erstellen, die eine bessere Einschätzung der aktuellen Lage erlauben, als der augenblickliche Füllwerte der Speicher.

Teil 2: 2026 – Das Jahr mit wenig Gas. Wahrscheinlich.

Comments

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Falls du auf diesen Beitrag mit einem Artikel auf deiner eigenen Webseite geantwortet hast, kannst du hier die URL deines Beitrags eingeben. Dabei sollte es sich um die Permalink-URL handeln. Deine Antwort wird dann (möglicherweise nach der Moderation) auf dieser Seite angezeigt. Falls du deine Antwort aktualisieren oder entfernen möchtest, aktualisiere oder lösche deinen Beitrag auf deiner eigenen Webseite und gib die URL des Beitrags erneut ein. (Erfahre mehr über Webmentions.)