Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

European electricity bidding zones — EIC codes

A plain, machine-readable list of the EIC codes you need to query European electricity market data: 45 bidding zones, the 13 ENTSO-E document types worth knowing, and the 11 process types that go with them.

No dependencies, no API, no account. CSV and JSON, ~8 kB in total.

Why this exists

EIC codes are published by ENTSO-E as a set of spreadsheets that mix bidding zones, control areas, market participants and metering points into one file of several thousand rows. If all you want is "what do I put in in_Domain to get German day-ahead prices", that file is the wrong shape.

This repository is the subset that answers that question, kept in the form that a script can read.

The data

file rows what it is
data/bidding-zones.csv · .json 45 bidding zones, with the traps noted
data/document-types.csv · .json 13 documentType values (A44 day-ahead prices, A65 load, …)
data/process-types.csv · .json 11 processType values (A01 day-ahead, A18 intraday, …)
name,short,eic,note
Germany–Luxembourg,DE-LU,10Y1001A1001A82H,"One zone, four control areas"
Germany–Austria–Lux (historic),DE-AT-LU,10Y1001A1001A63L,Valid until 30 Sep 2018; needed for older series

Use it

import csv, urllib.request

url = ('https://raw.githubusercontent.com/whipeeer-creator/eic-codes/'
       'main/data/bidding-zones.csv')
rows = list(csv.DictReader(
    urllib.request.urlopen(url).read().decode().splitlines()))

zones = {r['short']: r['eic'] for r in rows}
print(zones['DE-LU'])      # 10Y1001A1001A82H
curl -s https://raw.githubusercontent.com/whipeeer-creator/eic-codes/main/data/bidding-zones.json \
  | jq -r '.[] | select(.short | startswith("IT")) | "\(.short)\t\(.eic)"'

Then, against the ENTSO-E Transparency Platform:

https://web-api.tp.entsoe.eu/api
  ?securityToken=YOUR_TOKEN
  &documentType=A44
  &in_Domain=10Y1001A1001A82H
  &out_Domain=10Y1001A1001A82H
  &periodStart=202601010000
  &periodEnd=202601020000

The traps, in one place

These are the ones that actually cost people time:

  • DE-AT-LU vs DE-LU. Germany, Austria and Luxembourg were one bidding zone until 30 September 2018. Any series that crosses that date needs both codes — 10Y1001A1001A63L before, 10Y1001A1001A82H after. A query using only the modern code returns an empty document for the older period, not an error.
  • Italy is six zones, not one. North, Centre-North, Centre-South, South, Sicily and Sardinia. Calabria was split off from South in 2021, so a long series changes shape mid-way. The islands decouple often, and the PUN is a consumption-weighted average — not a price anything is settled at.
  • There is no single Nordic price. Norway has five zones, Sweden four, Denmark two (DK1 is synchronous with continental Europe, DK2 with the Nordic system). Averaging them into a "country price" hides spreads of several hundred percent.
  • Ireland is one all-island market (SEM) covering the Republic and Northern Ireland, so it does not line up with either country's grid operator.
  • Resolution is not constant. Great Britain settles in half-hours. Poland moved to 15 minutes with the 2024 reform, and the continental day-ahead auction moved to 15-minute products in 2025. Code that assumes 24 hourly points per day will silently mis-align.

Accuracy

Compiled by hand from the ENTSO-E Transparency Platform and checked against live API responses. If you find a code that no longer resolves, or a zone that is missing, open an issue — corrections are the point of publishing this.

Zone definitions change when markets split or merge. This is a snapshot, not a feed.

Licence

CC0 1.0 — public domain. Use it in anything, no attribution required. A link back is welcome but not asked for.

Related

Maintained by progrunners — we build trading dashboards and market data pipelines for European power markets, and publish the parts that are useful on their own.

All of it in one place: progrunners.com/open-source — seven repositories, what each one is for, and the one mistake worth reading about before you trust any price series, ours included.

About

EIC codes for 45 European electricity bidding zones, plus ENTSO-E document and process types. CSV and JSON, public domain.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors