BYTETOOLS

Energy-Charts API

Free Fraunhofer ISE Energy-Charts API with no key: European day-ahead power prices, generation by source, installed capacity and cross-border flows as JSON. Tested example.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Energy-Charts API?

Energy-Charts, run by Fraunhofer ISE, publishes European electricity market and generation data as a free JSON API with no key. Endpoints cover day-ahead prices, generation by source, installed capacity and cross-border flows by bidding zone.

This is a research institute's data platform rather than a vendor product, and the coverage shows it: not just prices but generation split by source, installed capacity, load and cross-border flows, for European bidding zones, under a CC BY 4.0 licence stated in every response. The `license_info` field names the ultimate upstream source as well, which is exactly what you need to attribute correctly.

The response uses **parallel arrays** rather than an array of objects: `unix_seconds` and `price` are separate lists that align by index. That is compact and quick to parse, but filtering one array without the other destroys the alignment silently, so zip them into pairs at your boundary. Read `unit` rather than assuming — it comes back as `EUR / MWh` with spaces around the slash — and check `deprecated`, which the API sets when an endpoint is scheduled for removal.

Quick facts

Base URL
https://api.energy-charts.info
Authentication
No key or registration. Data is published under CC BY 4.0; each response names the upstream source to attribute.
Rate limit
No published limit. Fraunhofer ISE asks for reasonable use of a research service.
Pricing
Free.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the Energy-Charts API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. German day-ahead power prices for one day

GET https://api.energy-charts.info/price?bzn=DE-LU&start=2026-08-19&end=2026-08-19

curl
curl 'https://api.energy-charts.info/price?bzn=DE-LU&start=2026-08-19&end=2026-08-19'
JavaScript (fetch)
const res = await fetch("https://api.energy-charts.info/price?bzn=DE-LU&start=2026-08-19&end=2026-08-19");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.energy-charts.info/price?bzn=DE-LU&start=2026-08-19&end=2026-08-19", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "license_info": "CC BY 4.0 (creativecommons.org/licenses/by/4.0) from Bundesnetzagentur | SMARD.de",
  "unix_seconds": [
    1787090400,
    1787091300,
    1787092200,
    1787093100,
    1787094000,
    1787094900,
    1787095800,
    1787096700,
    1787097600,
    1787098500,
    1787099400,
    1787100300,
    1787101200,
    1787102100,
    1787103000,
    1787103900,
    1787104800,
    1787105700,
    1787106600,
    1787107500,
    1787108400,
    1787109300,
    1787110200,
    1787111100,
    1787112000,
    1787112900,
    1787113800,
    1787114700,
    1787115600,
    1787116500,
    1787117400,
    1787118300,
    1787119200,
    1787120100,
    1787121000,
    1787121900,
    1787122800,
    1787123700,
    1787124600,
    1787125500,
    1787126400,
    1787127300,
    1787128200,
    1787129100,
    1787130000,
    1787130900,
    1787131800,
    1787132700,
    1787133600,
    1787134500,
    1787135400,
    1787136300,
    1787137200,
    1787138100,
    1787139000,
    1787139900,
    1787140800,
    1787141700,
    1787142600,
    1787143500,
    1787144400,
    1787145300,
    1787146200,
    1787147100,
    1787148000,
    1787148900,
    1787149800,
    1787150700,
    1787151600,
    1787152500,
    1787153400,
    1787154300,
    1787155200,
    1787156100,
    1787157000,
    1787157900,
    1787158800,
    1787159700,
    1787160600,
    1787161500,
    1787162400,
    1787163300,
    1787164200,
    1787165100,
    1787166000,
    1787166900,
    1787167800,
    1787168700,
    1787169600,
    1787170500,
    1787171400,
    1787172300,

Parameters

ParameterTypeRequiredDescription
bznqueryRequiredBidding zone code. `DE-LU` is the German-Luxembourg zone; `FR`, `AT` and `NL` follow the same ENTSO-E scheme. DE-LU
start / endqueryOptionalDate bounds as `YYYY-MM-DD`. Omit for the current day. 2026-08-19
/price | /public_power | /installed_power | /cbpfpathRequiredWhich dataset — prices, generation by source, installed capacity or cross-border flows. price
countryqueryOptionalCountry code used by the generation and capacity endpoints instead of `bzn`. de

Response fields

license_infostring
Licence and upstream attribution text. Display it where you publish the data.
unix_secondsarray
Period start timestamps in Unix seconds, aligned by index with the value array.
pricearray
Day-ahead prices, positionally aligned with `unix_seconds`.
unitstring
Unit string, `EUR / MWh` with spaces. Read it rather than hard-coding.
deprecatedboolean
True when the endpoint is scheduled for removal — worth logging so a break does not surprise you.
production_types[]array
On the generation endpoint, one named series per source with its own aligned data array.

What you can build with the Energy-Charts API

  • Chart German or French day-ahead power prices
  • Break down electricity generation by source for a country and period
  • Compare installed renewable capacity across European countries
  • Analyse cross-border electricity flows between bidding zones

Common errors and how to fix them

Values misaligned after filtering

One parallel array was filtered without the other.

Fix: Zip `unix_seconds` and the value array into pairs before doing anything else.

Empty arrays

The bidding zone code is wrong or the window has no data.

Fix: Zone codes use the ENTSO-E convention — `DE-LU`, not `DE`. Check the API index for the current list.

CORS blocked in the browser

The response names a specific origin rather than a wildcard.

Fix: Proxy through your own backend; a direct front-end fetch is refused.

`deprecated: true`

The endpoint is scheduled for removal.

Fix: Log it and check the API index for the replacement before it disappears.

Energy-Charts API — frequently asked questions

Is the Energy-Charts API free?

Yes. Fraunhofer ISE publishes it with no key or registration, under a CC BY 4.0 licence stated in the `license_info` field of every response.

What data does it cover beyond prices?

Generation by source, installed capacity, load and cross-border flows, for European bidding zones. All of it sits under the same base URL with different path segments, so adding a second dataset to an existing integration is a path change rather than new work.

Why are the timestamps and prices in separate arrays?

It is a compact columnar layout that aligns by index. Combine them into pairs before filtering, otherwise a filter on one array silently misaligns it against the other.

How should I attribute the data?

Use the `license_info` string returned with every response. It names the CC BY 4.0 licence and the ultimate upstream source, such as the Bundesnetzagentur via SMARD, which is the party that actually needs crediting rather than Energy-Charts itself.

Tools that pair with this API

Energy-Charts is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.