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.
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 'https://api.energy-charts.info/price?bzn=DE-LU&start=2026-08-19&end=2026-08-19'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);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()){
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
bzn | query | Required | Bidding zone code. `DE-LU` is the German-Luxembourg zone; `FR`, `AT` and `NL` follow the same ENTSO-E scheme. DE-LU |
start / end | query | Optional | Date bounds as `YYYY-MM-DD`. Omit for the current day. 2026-08-19 |
/price | /public_power | /installed_power | /cbpf | path | Required | Which dataset — prices, generation by source, installed capacity or cross-border flows. price |
country | query | Optional | Country 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
Electricity Cost Calculator
Calculate what appliances cost to run: enter watts, hours per day and days per week to get kWh and cost per day, month and year, for a whole list of devices.
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
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.