ESIOS Data documentation

Data model, query examples, MCP integration, and REST API reference for the Spanish electricity market dataset.

API access

Query ESIOS market data programmatically from Python. Use the datons client or call the REST endpoints directly.

Quickstart

Install

pip install datons

Example

from datons import Client

client = Client(token="YOUR_API_KEY")

# Query preprocessed I90 market data → pandas DataFrame
df = client.esios.query(
    "SELECT unit, datetime, energy, price "
    "FROM esios.archives_i90 "
    "WHERE program = 'PDBF' AND toDate(datetime) >= '2025-01-01' "
    "LIMIT 100"
)
print(df.head())

Authentication

Request header

Include your API key in every request:

X-API-Key: your_key_here

Environment variable

Set DATONS_API_KEY and the client will pick it up automatically:

export DATONS_API_KEY=your_key_here

Base URL

https://mcp.datons.com/esios

Don't have an API key yet? Get your API key from your account dashboard.

Endpoint reference

Rate limits

All API requests are rate-limited by tier. See plans for tier comparison. All queries are read-only (SELECT only).

Response headers

Every response includes rate limit headers so you can track your usage:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 73
X-RateLimit-Reset: 1712448000
X-Tier: explorer

Query examples

Loading examples...
Loading preview...

esios.indicators

Time-series table with ~1,966 ESIOS indicators: market prices, demand, generation forecasts, and more. Updated hourly.

ColumnTypeDescription
indicator_idUInt16ESIOS indicator number (e.g. 600 = spot price)
datetimeDateTimeTimestamp (Europe/Madrid)
valueFloat64Indicator value (units depend on indicator)
geo_idUInt16Geography (3 = España, 8741 = Península)
indicator_nameStringHuman-readable indicator label
frequencyStringData frequency (Hora, Diez minutos, etc.)
unitStringMeasurement unit (€/MWh, MWh, MW, etc.)

Common indicator IDs:

IDgeo_idIndicator
6003Spot market price (OMIE daily)
5518741Wind generation (T.Real eólica)
12958741Solar PV generation (T.Real Solar fotovoltaica)
12948741Solar thermal generation (T.Real Solar térmica)
5468741Hydro generation (T.Real hidráulica)
5498741Nuclear generation (T.Real nuclear)
5508741Combined cycle (T.Real C.Combinado)
5478741Coal generation (T.Real carbón)

Column dictionary

Description and type of each column in the operational_data_15min table.

unit String
unit_name Nullable(String) NULL
company_name LowCardinality(Nullable(String))
program LowCardinality(String)
sign LowCardinality(Nullable(String))
technology LowCardinality(Nullable(String))
unit_type LowCardinality(Nullable(String))
transaction LowCardinality(Nullable(String))
restriction LowCardinality(Nullable(String))
redispatch LowCardinality(Nullable(String))
calculation LowCardinality(Nullable(String))
session LowCardinality(Nullable(String))
offer_type LowCardinality(Nullable(String))
qh_type LowCardinality(Nullable(String))
energy_sign LowCardinality(Nullable(String))
zone_regulation LowCardinality(Nullable(String))
datetime DateTime('Europe/Madrid')
energy Float64
price Float64

Program reference

Available market programs and their statistics.

PDBF -

Programa Diario Base Funcionamiento

PDVP -

Programa Diario Viable Provisional

PHF1 -

Programa Horario Funcional 1

BS -

Banda Secundaria

PHF2 -

Programa Horario Funcional 2

PHF3 -

Programa Horario Funcional 3

PHF4 -

Programa Horario Funcional 4

PHF5 -

Programa Horario Funcional 5

PHF6 -

Programa Horario Funcional 6

PHF7 -

Programa Horario Funcional 7

RTR -

Restricciones Tiempo Real

RR -

Mercado de Balances

BT -

Banda Terciaria

Table of Contents
Search sections

Subscribe to our newsletter

Get weekly insights on data, automation, and AI.

© 2026 Datons. All rights reserved.