API de SpotWave
Los precios de SpotWave salen de una pequeña API JSON de solo lectura. Puedes usarla en proyectos personales, paneles y domótica, siguiendo las condiciones de uso de abajo.
Lo básico
- URL base:
https://spotwave.eu/api. Cada endpoint es unGETsin clave de API, y el CORS está abierto, así que puedes llamarla directamente desde una web. - Especificación legible por máquina: documento OpenAPI. Genera con ella un cliente en cualquier lenguaje.
- Los precios van por kWh en unidades de moneda (€/kWh en los campos EUR). Cada fila tiene además un bloque
nativeen la moneda del mercado (DKK, SEK, NOK, PLN, …), convertido al cambio de referencia diario del BCE. - Las horas van en ISO 8601 y en UTC. Los precios del mercado diario vienen en periodos de 15 minutos.
countryacepta un código de mercado de/meta/markets:NL,DE,SE3,DK1,NO2,ITN, etc.- Las cifras totales son mercado + impuesto eléctrico + peajes por kWh, y luego IVA. No incluyen el margen de la comercializadora; en fuentes se explica cómo sale cada cifra.
Endpoints
GET /meta/markets
Todos los mercados (zonas de precio) disponibles, con su nombre, moneda y costes fijos mensuales (IVA incluido), que nunca se suman al precio por kWh.
curl https://spotwave.eu/api/meta/markets[
{
"code": "NL",
"name": "Netherlands",
"currency": "EUR",
"fees": {
"gridFixedPerMonth": 39.83,
"energyTaxCreditPerMonth": 52.41,
"netPerMonth": -12.58,
"native": { "currency": "EUR", "gridFixedPerMonth": 39.83, "energyTaxCreditPerMonth": 52.41, "netPerMonth": -12.58 }
}
},
…
]GET /spotprice?country=…&from=…&to=…
El desglose del precio total para cada periodo de un intervalo. from y to son marcas de tiempo ISO (incluidas); un intervalo de más de 92 días se recorta a los últimos 92.
curl "https://spotwave.eu/api/spotprice?country=NL&from=2026-10-20T00:00:00Z&to=2026-10-20T23:59:59Z"[
{
"periodUtc": "2026-10-20T12:00:00Z",
"country": "NL",
"spotEurPerKwh": 0.10301,
"energyTaxEurPerKwh": 0.0916,
"gridFeeEurPerKwh": 0.0,
"vatEurPerKwh": 0.0408681,
"totalEurPerKwh": 0.2354781,
"native": { "currency": "EUR", "spotPerKwh": 0.10301, "energyTaxPerKwh": 0.0916, "gridFeePerKwh": 0.0, "vatPerKwh": 0.0408681, "totalPerKwh": 0.2354781 }
},
…
]GET /forecast?country=…&from=…&to=…
Mismos parámetros y misma respuesta que /spotprice, para el día de mañana. Devuelve un array vacío hasta que se publican los precios de mañana, normalmente hacia las 13:00.
curl "https://spotwave.eu/api/forecast?country=DE&from=2026-10-21T00:00:00Z&to=2026-10-21T23:59:59Z"GET /spotprice/current?country=…
El último precio mayorista guardado para un mercado: solo el precio de mercado, sin impuestos ni peajes. hourUtc es el inicio del periodo. Devuelve 404 si el mercado no tiene datos.
curl "https://spotwave.eu/api/spotprice/current?country=NL"{ "id": 3179619, "country": "NL", "hourUtc": "2026-10-20T15:45:00Z", "eurPerKwh": 0.25471 }GET /spotprice/stats?country=…
Percentiles del precio mayorista de los últimos 30 días, que SpotWave usa para decir si un precio es barato o caro.
curl "https://spotwave.eu/api/spotprice/stats?country=SE3"{
"p25": 0.0401, "median": 0.0825, "p75": 0.1208, "avg": 0.0842,
"native": { "currency": "SEK", "p25": 0.4452, "median": 0.9165, "p75": 1.3411, "avg": 0.9352 }
}GET /spotprice/context?country=…
Niveles de referencia a largo plazo: la media móvil anual del precio total, la del año pasado y una banda typical (bajo/medio/alto por hora del día, UTC) calculada con la misma época de los últimos años. Los campos son null hasta que hay historial suficiente.
curl "https://spotwave.eu/api/spotprice/context?country=NL"{
"yearAvg": 0.2409, "lastYearAvg": 0.2219,
"typical": [ { "i": 0, "low": 0.1694, "mid": 0.2172, "high": 0.2650 }, … ],
"native": { "currency": "EUR", "yearAvg": 0.2409, "lastYearAvg": 0.2219, "typical": [ … ] }
}GET /compare
Una foto de todos los mercados: precio total y de mercado actuales, rango de hoy, peso de los impuestos, tipo de IVA y una mini gráfica por horas, del más barato al más caro. Es lo que alimenta la página de mercados.
curl https://spotwave.eu/api/compare{
"asOf": "2026-10-20T15:58:49Z",
"euAvgSpot": 0.1596,
"zones": [
{
"country": "NL", "name": "Netherlands",
"currentAllIn": 0.4012, "spot": 0.2400, "taxShare": 40.19, "vatRate": 21.0,
"todayMin": 0.2307, "todayMax": 0.4012, "isNegative": false,
"sparkline": [0.1701, 0.1681, 0.1722, …],
"native": { "currency": "EUR", "currentAllIn": 0.4012, "spot": 0.2400, "todayMin": 0.2307, "todayMax": 0.4012, "sparkline": [ … ] }
},
…
]
}GET /meta/status
Cuándo se actualizaron los datos por última vez y, por mercado, si ya están los precios de mañana. Útil para saber cuándo llamar a /forecast.
curl https://spotwave.eu/api/meta/status{ "lastUpdated": "2026-10-20T13:05:12Z", "tomorrowPublished": { "NL": true, "DE": true, "SE3": false, … } }GET /history
Precios pasados de un mercado: medias mensuales y anuales, días y horas récord, horas bajo cero y el precio medio por hora del día en los últimos 12 meses. Solo precio mayorista, en la moneda del mercado al cambio de hoy.
curl "https://spotwave.eu/api/history?country=NL"GET /history/month
Un mes día a día: media, mínimo y máximo, horas bajo cero, día más barato y más caro, y las medias del mes anterior y del mismo mes del año pasado.
curl "https://spotwave.eu/api/history/month?country=NL&month=2026-09"Con asistentes de IA
SpotWave también es un servidor MCP, así que los asistentes y agentes de IA pueden consultar ellos mismos los precios actuales y pasados. Añade https://spotwave.eu/api/mcp como servidor MCP remoto (HTTP en streaming, sin clave) en cualquier cliente compatible con MCP. Ofrece cuatro herramientas: list_markets, get_current_price, get_prices (hoy, mañana o cualquier día pasado) y compare_markets.
curl https://spotwave.eu/api/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Pon el precio en tu web
Un pequeño widget con el precio total y la gráfica de hoy, con un enlace a SpotWave. Elige el mercado con market (cualquier código de /meta/markets), el idioma con lang (en, nl, de, da, sv, nb, fi, fr, es, it, pl) y el tema con theme (light o dark).
<iframe src="https://spotwave.eu/embed?market=NL&lang=es&theme=light"
width="360" height="300" style="border:0;border-radius:14px"
title="Precio de la luz hoy" loading="lazy"></iframe>Uso razonable
- La API es gratuita y sin clave, pero corre en un servidor pequeño, así que hay límite de peticiones. Si empiezan a rechazarse, espera y vuelve a intentarlo más tarde.
- Los precios cambian como mucho cada 15 minutos y los de mañana llegan una vez al día: no consultes más de una vez cada 15 minutos y guarda en caché lo que descargues.
- Envía un
User-Agentdescriptivo (el nombre de tu app y una URL de contacto). Algunos user agents por defecto de librerías HTTP están bloqueados por la CDN que hay delante de la API. - No hay garantía de disponibilidad y los endpoints pueden cambiar.
Atribución
Si publicas algo hecho con estos datos, cita a SpotWave con un enlace a spotwave.eu. Los precios mayoristas vienen de la plataforma de transparencia de ENTSO-E; los impuestos y peajes son cifras orientativas de SpotWave, documentadas en la página de fuentes.
Home Assistant
Estamos preparando una integración de Home Assistant que lee esta API. Mientras tanto, el sensor RESTful que trae Home Assistant puede leer /spotprice/current directamente.