Aufbau der Datei
Die Datei enthält ein einzelnes JSON-Objekt mit vier Feldern:
{
"updated": "2026-08-05T04:10:31Z",
"source": "Bundesnetzagentur | SMARD.de, CC BY 4.0, abgerufen ueber Energy-Charts
(Fraunhofer ISE). Bearbeitung durch wattlabor.de: Viertelstundenwerte zu
Stundenmitteln zusammengefasst und EUR/MWh in ct/kWh umgerechnet.",
"unit": "ct/kWh (Boersenpreis netto, ohne Steuern/Abgaben/Netzentgelte)",
"hours": [
{ "t": 1782856800, "p": 16.49 },
{ "t": 1782860400, "p": 15.02 }
]
}
Der source-String ist im Original einzeilig; hier ist er nur zur Lesbarkeit umbrochen. Er ist zugleich die fertige Quellenangabe, die du bei einer Weitergabe übernehmen kannst.
| Feld | Typ | Bedeutung |
|---|---|---|
updated | String | Zeitpunkt des letzten erfolgreichen Abrufs, ISO 8601 in UTC. |
source | String | Herkunft genau dieses Abzugs samt Lizenz und Änderungshinweis, formuliert als fertige Quellenangabe. Maßgeblich für die Nachnutzung, siehe Abschnitt Lizenz. |
unit | String | Einheit und Abgrenzung der Preisangabe. |
hours | Array | Die Stundenwerte, aufsteigend nach Zeit sortiert. |
hours[].t | Integer | Beginn der Stunde als Unix-Zeitstempel in Sekunden (UTC). Die Stunde läuft von t bis t+3600. |
hours[].p | Zahl | Preis in ct/kWh, netto, auf drei Nachkommastellen gerundet. Kann negativ sein. |
Es gibt bewusst keine Lücken-Auffüllung: Stunden ohne veröffentlichten Preis fehlen schlicht im Array. Das gilt auch für angefangene Stunden, denn eine Stunde erscheint nur, wenn alle ihre Marktzeiteinheiten vorliegen. Rechne also nicht mit einer festen Anzahl Einträge pro Tag, sondern werte t aus.
Beispiele
Kommandozeile
curl -s https://wattlabor.de/data/prices.json | jq '.updated, (.hours | length)'
Python
import json, urllib.request
url = "https://wattlabor.de/data/prices.json"
d = json.load(urllib.request.urlopen(url))
guenstigste = min(d["hours"], key=lambda h: h["p"])
print(d["updated"], guenstigste["p"], "ct/kWh")
JavaScript
CORS ist nicht freigeschaltet. Dieses Beispiel läuft daher serverseitig oder in einer Node-Umgebung, nicht im Browser einer fremden Webseite.
(async () => {
const r = await fetch("https://wattlabor.de/data/prices.json");
if (!r.ok) throw new Error("HTTP " + r.status);
const d = await r.json();
const jetzt = Math.floor(Date.now() / 1000);
const h = d.hours.find(x => x.t <= jetzt && jetzt < x.t + 3600);
if (!h) {
console.log("Fuer die aktuelle Stunde liegt kein Preis vor, Stand " + d.updated);
return;
}
console.log(`Aktuell ${h.p} ct/kWh, Stand ${d.updated}`);
})();
Die Prüfung auf !h ist kein Zierrat: Weil Stunden ohne vollständige Daten fehlen und die Datei bei einer Störung der Quelle auch einmal älter sein kann, ist find() ohne Absicherung ein Absturz mit Ansage.
Lizenz und Namensnennung
Die Ausgangsdaten sind Großhandelspreise der Bundesnetzagentur (SMARD) und stehen unter CC BY 4.0. Wir beziehen sie über den Endpunkt /price der Energy-Charts-API des Fraunhofer-Instituts für Solare Energiesysteme ISE. Die Lizenzangabe nehmen wir dabei nicht an, sondern lesen sie bei jedem Abruf aus dem Feld license_info der Antwort. Steht dort etwas anderes als CC BY, wird nichts veröffentlicht und die vorherige Datei bleibt stehen. Markt der Auktion selbst ist EPEX SPOT, das ist aber nicht der Lizenzgeber dieser Daten.
Wir haben die Ausgangsdaten verändert: Viertelstundenwerte wurden zu Stundenmitteln zusammengefasst und Euro je Megawattstunde in Cent je Kilowattstunde umgerechnet. Soweit an unserer Auswahl oder Aufbereitung eigene Rechte bestehen, stellen wir auch diese unter CC BY 4.0 bereit. Die Rechte am Ausgangsmaterial werden dir unmittelbar vom jeweiligen Lizenzgeber eingeräumt. Du darfst die Datei damit nutzen, weiterverarbeiten und veröffentlichen, auch kommerziell.
So sieht eine korrekte Quellenangabe aus. CC BY 4.0 verlangt bei einer Weitergabe mehr als nur einen Namen, nämlich die Nennung des Urhebers, einen Hinweis auf die Lizenz samt Link, einen Link auf das Material und die Kennzeichnung deiner und unserer Änderungen. Übernimm am einfachsten diese Zeile, sie steht wortgleich im Feld source der Datei:
Quelle: Bundesnetzagentur | SMARD.de, CC BY 4.0, abgerufen über Energy-Charts
des Fraunhofer ISE. Bearbeitung durch wattlabor.de: Viertelstundenwerte zu
Stundenmitteln zusammengefasst und EUR/MWh in ct/kWh umgerechnet.
Datenlizenz und API-Zugang sind zweierlei. Die CC-Lizenz regelt, was du mit den Daten tun darfst. Sie sagt nichts darüber, unter welchen Bedingungen du die Energy-Charts-API selbst abfragen darfst. Für die gelten deren eigene Nutzungs- und Zugangsregeln, unter anderem Grenzen für die öffentliche Schnittstelle. Wenn du dort selbst abrufen willst, halte dich an deren Vorgaben und kläre gewerbliche Nutzung direkt mit dem Fraunhofer ISE.
Kein ungeklärter Ersatzweg. Wir veröffentlichen ausschließlich Daten, deren Weiterverbreitung durch CC BY 4.0 gedeckt ist. Antwortet die Quelle einmal nicht, weichen wir nicht auf eine andere Schnittstelle aus, sondern lassen die letzte gültige Datei stehen. Sie ist dann schlimmstenfalls veraltet, was du am Feld updated sofort erkennst. Maßgeblich für deine Nachnutzung ist trotzdem immer das Feld source in der Datei, die du tatsächlich geladen hast.
Fairer Umgang
Das ist eine statische Datei auf einem kleinen Server, keine kommerzielle API mit Zusagen. Ein paar Bitten:
- Die Datei ändert sich nur zweimal täglich. Öfter als einmal pro Stunde abzurufen bringt nichts, cache sie lokal.
- Für Massenabrufe, systematische Archivierung oder als Baustein in einem Produkt geh bitte direkt an energy-charts.info oder SMARD. Die halten die vollständigen Zeitreihen vor, wir nur ein kurzes Fenster.
- Wenn du magst, verlinke wattlabor.de/strompreis-daten als Fundstelle. Pflicht ist das nicht, verpflichtend ist die Quellenangabe nach CC BY 4.0 aus dem Abschnitt oben.
Grenzen, die du kennen solltest
- Kein Endkundenpreis. Der Wert ist der reine Börsenpreis. Netzentgelte, Messstellenbetrieb, Stromsteuer, Konzessionsabgabe, Umsatzsteuer sowie Beschaffung und Marge deines Anbieters kommen obendrauf.
- Kein Archiv. Es ist ein rollierendes Fenster ab heute minus 35 Tage bis einschließlich heute, dazu der Folgetag, sobald die Auktion ihn veröffentlicht hat. Ältere Werte fallen ersatzlos heraus, wir heben sie nicht auf.
- Stundenmittel, keine originären Stundenpreise. Seit dem Lieferdatum 1. Oktober 2025 wird die Day-Ahead-Auktion in 15-Minuten-Marktzeiteinheiten ermittelt. Wir mitteln diese arithmetisch auf volle Stunden, die feinere Auflösung geht dabei verloren. Angefangene Stunden geben wir nicht aus: Eine Stunde erscheint nur, wenn alle ihre Marktzeiteinheiten vorliegen.
- Keine Verfügbarkeitszusage. Kein SLA, keine Gewähr für Richtigkeit, Vollständigkeit, Aktualität und dauerhafte Verfügbarkeit, keine Garantie, dass es diesen Endpoint in einem Jahr noch gibt. Für alles, worauf du dich verlassen musst, nimm die Primärquelle.
- Der Folgetag ist erst nachmittags da. Die Day-Ahead-Auktion läuft um die Mittagszeit. Vor dem Lauf um 14:40 Uhr enthält die Datei den morgigen Tag in der Regel noch nicht.
Häufige Fragen
Brauche ich einen API-Schlüssel oder eine Anmeldung?
Nein. Es ist eine statische JSON-Datei unter einer festen Adresse. Kein Schlüssel, kein Konto, kein Rate-Limit-Header, keine Registrierung.
Darf ich die Daten kommerziell nutzen?
Ja. Die Ausgangsdaten stehen unter CC BY 4.0, und diese Lizenz erlaubt kommerzielle Nutzung und Bearbeitung. Sie verlangt dafür eine vollständige Quellenangabe: Urheber, Lizenz mit Link, Link auf das Material und die Kennzeichnung der Änderungen. Übernimm dafür einfach den fertigen Text aus dem Feld source der Datei, er lautet: Quelle: Bundesnetzagentur | SMARD.de, CC BY 4.0, abgerufen über Energy-Charts des Fraunhofer ISE. Bearbeitung durch wattlabor.de: Viertelstundenwerte zu Stundenmitteln zusammengefasst und EUR/MWh in ct/kWh umgerechnet. Davon zu trennen sind die Zugangsbedingungen der Energy-Charts-API, falls du dort selbst abrufen willst.
Warum ist der Preis manchmal negativ?
Wenn viel Wind- und Solarstrom eingespeist wird und gleichzeitig wenig verbraucht wird, kann der Börsenpreis unter null fallen. Das ist ein normales Marktergebnis und kein Fehler in den Daten. Rechne in deinem Code also mit negativen Werten.
In welcher Zeitzone sind die Zeitstempel?
Das Feld t ist ein Unix-Zeitstempel in Sekunden und damit zeitzonenfrei. Rechne ihn für die Anzeige in Europe/Berlin um. Weil Deutschland zwischen Sommer- und Winterzeit wechselt, solltest du nicht mit festen Stundenoffsets arbeiten, sondern mit einer echten Zeitzonenbibliothek. Sonst verrutschen dir zweimal im Jahr alle Werte um eine Stunde.
Kann ich die Datei direkt aus meiner Webseite heraus laden?
Aus dem Browser heraus nicht, es sind keine CORS-Header gesetzt. Hol die Datei serverseitig ab und liefere sie über deine eigene Domain aus. Das ist ohnehin schonender, weil du sie dann einmal je Aktualisierung abrufst statt einmal je Besucher.
Bekomme ich auch historische Jahre?
Von uns nicht. Wir halten nur ein rollierendes Fenster ab heute minus 35 Tage bis einschließlich heute vor, dazu den Folgetag, sobald er veröffentlicht ist. Vollständige Zeitreihen über Jahre bekommst du bei energy-charts.info und bei SMARD der Bundesnetzagentur, beides kostenfrei.