Beta — Data under validation. Values may contain errors.

Documentation

EnergyData Iberia Excel Add-in — 22 custom functions, 253+ metrics.

Live Data

Quick start

=ED.OMIE()Latest spot price
=ED.OMIE.RANGE("2025-01-01",, 3)Monthly prices
=ED.CAPTURE(1, "2025-07-01")Solar capture
=ED.GET("brent")Brent crude
=ED.METRICS()List every metric

Zones

Pass the zone argument to switch markets. Default "ES" when not provided. Coverage varies — check the metrics catalog for each metric × zone availability.

ES
España
PT
Portugal
FR
France
DE
Germany
BE
Belgium
NL
Netherlands

Aggregation codes

CodeMeaningOutput
0 / "5min" / "10min" / "15min"Native / sub-hourly5–96 rows/day depending on metric
1Hourly24 rows/day (25 on fall-DST day)
2Daily (default)1 row/day
3Monthly1 row/month
4Quarterly1 row/quarter
5Semiannual1 row/semester
6Annual1 row/year
7TotalSingle value over the whole period

⚡ MW power vs MWh energy

Generation, demand, balancing-band capacity and cross-border flows are stored in MW — instantaneous power. When you aggregate (e.g. agg=6 for annual) the API returns the average MW over the bucket, not the total energy delivered.

In numbers: =ED.GEN.RANGE(1, "2025-01-01", "2025-12-31", 6) may return ~3,500— that's the average power, not 3.5 GWh. The total energy is roughly 3,500 × 8,760 ≈ 30.7 TWh.

Pass unit="MWh"to convert. The conversion uses each metric's native sample interval (5 min for ESIOS Spain gen/demand, 15 min for balancing, 60 min for ENTSO-E zones), so the result is exact down to the sample:

=ED.GEN.RANGE(1, "2025-01-01", "2025-12-31", 6)Solar PV avg power (MW)
=ED.GEN.RANGE(1, "2025-01-01", "2025-12-31", 6, , , , "MWh")Solar PV total energy (MWh)
=ED.RANGE("demand_real", "2025-01-01",, 6, , , , , , "MWh")Annual demand in MWh
=ED.RANGE("gen_total", "2025-01-01", "2025-12-31", 6, , , , , , "MWh")Annual generation 2025 (all techs, MWh)
=ED.RANGE("gen_renewable", "2025-01-01", "2025-12-31", 6, , , , , , "MWh")Annual renewable generation (MWh)

Available on ED.GEN.RANGE and ED.RANGE since v7.1.10. Virtual aggregates (gen_total, gen_renewable, gen_thermal, gen_fossil) sum the per-tech series at each native timestamp — same MW/MWh logic. Calling unit="MWh" on a price metric (EUR/MWh) or already-MWh metric returns a 400 error.

Shared parameters

These show up across multiple functions with consistent semantics.

tz0/"madrid" (default) | 1/"cet" | 2/"utc"

How to interpret the date/hour/minute argument and how to bucket range output. Madrid is DST-aware (24-25 hour days). CET is fixed UTC+1, no DST → 8760 hourly buckets/year. UTC is fixed offset 0.

noDate0 (default, include) | 1 (omit)

On *.RANGE functions: whether to include the date/period column in the spill array. Useful when you already have your own time index.

method0/"real" (default) | 1/"pbf"

ED.CAPTURE only. realized = dayahead × metered generation (matches what publications report). PBF = dayahead × ex-ante OMIE schedule (Spain only, available before realized data).

Functions

Click a function for the full reference. Or browse all on a single page.

Prices

Wholesale day-ahead spot prices.

Generation

Power generation by technology and per production unit.

Capture price

Production-weighted average price per technology.

Battery (BESS)

Optimal battery spread between cheap and expensive hours.

Installed capacity

Capacity stock (MW) by tech and region.

Registry

Production-unit and owner directory (REE + ENTSO-E).

Settlement

OMIE wholesale settlement and government PPA auction awards.

Grid access

REE grid-access capacity (PDF history + portal snapshot).

Generic + metrics

Single-value, range, and the metric catalog.

253+ metrics available

Spot prices, generation, capture prices, futures, commodities, balancing, redispatch, and more.

View live data coverage →