SPOTPULS OPEN REST API (V1) — FREE, NO API KEY, CORS *

openapi.json →

Spotpuls (https://spotpuls.app) provides a free, zero-key, CORS-enabled REST & automation API delivering official day-ahead electricity spot prices together with an empirically calibrated 7-day (168 h) Log-Merit + Hist-GBDT hourly forecast (including negative price regimes and conformal probability bands) across all 40 European bidding zones. Ten native output formats allow direct integration into smart-home hubs, relays, EV chargers, microcontrollers, calendars, spreadsheets, monitoring stacks, and websites.

1. HOURLY SPOT + 7-DAY FORECAST + SMART AUTOMATION
GET https://spotpuls.app/api/v1/prices?zone=FI&vat=1&window=3&format=json
  • zone — Any of 40 European zones (FI, SE1..SE4, NO1..NO5, DK1..DK2, EE, LV, LT, DE-LU, FR, NL, ES, IT-North, PL, GB).
  • vat — 1 (incl. national electricity VAT, default) or 0 (VAT 0 %).
  • currency — local (snt, öre, øre, ct, p, gr, Ft, Kč), eur_cents, eur_kwh, or eur_mwh.
  • window — 1..24 (default 3): computes cheapestContiguousWindow and cheapestHours for relays, boilers, heat pumps, and EVs.
  • margin / transfer / threshold — Optional contract add-ons & price trigger threshold.
  • format — json, compact (shelly), ha, evcc, victron, csv, ical, prometheus, plain, badge, or widget.
2. CLEAN INTEGRATION SHORTCUT URLS
GET https://spotpuls.app/api/v1/zones
GET https://spotpuls.app/api/v1/ha/FI.json?window=3
GET https://spotpuls.app/api/v1/shelly/FI.json?window=3
GET https://spotpuls.app/api/v1/evcc/DE-LU.json
GET https://spotpuls.app/api/v1/ical/FI.ics?window=3
GET https://spotpuls.app/api/v1/metrics?zone=FI
GET https://spotpuls.app/api/v1/plain/FI?field=run_now&window=3
3. LIVE SVG BADGE & IFRAME MINI-CHART WIDGET
Spotpuls FI live badge Spotpuls DE-LU live badge
<iframe src="https://spotpuls.app/api/v1/widget/FI?theme=light" width="100%" height="198" style="border:0;max-width:460px;" loading="lazy"></iframe>

READY-TO-USE APPLICATION & HARDWARE INTEGRATIONS

HOME ASSISTANT (CONFIGURATION.YAML + APEXCHARTS)
rest:
  - resource: "https://spotpuls.app/api/v1/ha/FI.json?window=3&transfer=6.80"
    scan_interval: 300
    sensor:
      - name: "Spotpuls Spot Price"
        value_template: "{{ value_json.state }}"
        unit_of_measurement: "snt/kWh"
        json_attributes:
          - total_price
          - today_min
          - today_max
          - raw_today
          - raw_tomorrow
          - forecast_7d
    binary_sensor:
      - name: "Spotpuls Cheapest 3h Window Active"
        value_template: "{{ value_json.run_contiguous_now }}"
SHELLY PLUS / GEN2 / GEN3 / PRO LOCAL RELAY SCRIPT (< 500 B)
// Runs on Shelly Plus 1PM / Pro 3EM — switches relay ON during cheapest 3h window
const URL = "https://spotpuls.app/api/v1/shelly/FI.json?window=3";
function pollSpotpuls() {
  Shelly.call("HTTP.GET", { url: URL, timeout: 10 }, function (res, err) {
    if (err || !res || res.code !== 200) return;
    const d = JSON.parse(res.body);
    const shouldRun = d.runContig === 1; // or d.runCheap === 1
    Shelly.call("Switch.Set", { id: 0, on: shouldRun });
  });
}
pollSpotpuls();
Timer.set(300000, true, pollSpotpuls);
EVCC.IO DYNAMIC EV & BATTERY CHARGING TARIFF (EVCC.YAML)
tariffs:
  currency: EUR
  grid:
    type: custom
    forecast:
      source: http
      uri: https://spotpuls.app/api/v1/evcc/DE-LU.json?vat=1
      jq: .
      cache: 15m
ESPHOME / ESP32 / APPLE SHORTCUTS / CURL / PLC
# Single numeric value (current spot price):
curl -s "https://spotpuls.app/api/v1/plain/FI?field=spot"

# Binary 1 / 0 relay trigger (1 if inside cheapest 4h block):
curl -s "https://spotpuls.app/api/v1/plain/FI?field=run_now&window=4"

# Google Sheets live 192-hour table:
=IMPORTDATA("https://spotpuls.app/api/v1/prices?zone=FI&vat=1&format=csv")

# Apple / Google / Outlook Calendar live subscription URL:
https://spotpuls.app/api/v1/ical/FI.ics?window=3
JAVASCRIPT / TYPESCRIPT SDK-FREE FETCH
const res = await fetch("https://spotpuls.app/api/v1/prices?zone=SE3&vat=1&window=4");
const data = await res.json();
console.log(data.current.spotPrice, data.meta.unit);
console.log("Cheapest 4h:", data.automation.cheapestContiguousWindow);
PYTHON / PANDAS & PROMETHEUS / GRAFANA
import pandas as pd
df = pd.read_csv("https://spotpuls.app/api/v1/prices?zone=FI&vat=1&format=csv", comment="#")
print(df.head())

# Prometheus scrape config (prometheus.yml):
# metrics_path: /api/v1/metrics
# params: { zone: ["FI"] }

ALL 40 SUPPORTED EUROPEAN BIDDING ZONES & REGIONAL FORECAST MODELS

Zone Code Region / Bidding Zone Power Exchange IANA Timezone Wind / Solar Cap. Live API & Integration Feeds
FI Suomi / Finland (FI) Nord Pool Europe/Helsinki 8450 MW / 1250 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
SE1 SE1 — Luleå / Norra Norrland Nord Pool Europe/Stockholm 3400 MW / 120 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
SE2 SE2 — Sundsvall / Södra Norrland Nord Pool Europe/Stockholm 6100 MW / 260 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
SE3 SE3 — Stockholm / Mellansverige Nord Pool Europe/Stockholm 4800 MW / 2400 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
SE4 SE4 — Malmö / Södra Sverige Nord Pool Europe/Stockholm 3300 MW / 1450 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
NO1 NO1 — Oslo / Øst-Norge Nord Pool Europe/Oslo 950 MW / 350 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
NO2 NO2 — Kristiansand / Sør-Norge Nord Pool Europe/Oslo 1750 MW / 250 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
NO3 NO3 — Trondheim / Midt-Norge Nord Pool Europe/Oslo 2050 MW / 80 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
NO4 NO4 — Tromsø / Nord-Norge (0 % MVA) Nord Pool Europe/Oslo 980 MW / 20 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
NO5 NO5 — Bergen / Vest-Norge Nord Pool Europe/Oslo 520 MW / 90 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
DK1 DK1 — Vestdanmark (Jylland & Fyn) Nord Pool Europe/Copenhagen 5400 MW / 2900 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
DK2 DK2 — Østdanmark (Sjælland & Bornholm) Nord Pool Europe/Copenhagen 2300 MW / 1250 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
EE Eesti / Estonia (EE) Nord Pool Europe/Tallinn 780 MW / 960 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
LV Latvija / Latvia (LV) Nord Pool Europe/Riga 180 MW / 620 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
LT Lietuva / Lithuania (LT) Nord Pool Europe/Vilnius 1520 MW / 1650 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
DE-LU Deutschland & Luxemburg (DE-LU) EPEX Spot Europe/Berlin 72500 MW / 96000 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
AT Österreich / Austria (AT) EPEX Spot / EXAA Europe/Vienna 4050 MW / 7800 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
NL Nederland / Netherlands (NL) EPEX Spot Europe/Amsterdam 11500 MW / 24500 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
BE België / Belgique (BE) EPEX Spot Europe/Brussels 5600 MW / 10200 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
FR France (FR) EPEX Spot Europe/Paris 23500 MW / 22500 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
CH Schweiz / Suisse / Svizzera (CH) EPEX Spot CH Europe/Zurich 100 MW / 6800 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
ES España / Spain (ES — OMIE) OMIE (PVPC) Europe/Madrid 31200 MW / 32500 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
PT Portugal (PT — OMIE) OMIE Europe/Lisbon 5900 MW / 4600 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
GB Great Britain (GB) EPEX / Nord Pool UK Europe/London 30200 MW / 17200 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
IE-SEM Ireland Single Electricity Market (IE-SEM) SEMOpx Europe/Dublin 6100 MW / 1200 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
IT-North Italia Nord (Milano / Torino / Venezia) GME Europe/Rome 600 MW / 14500 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
IT-Centre-North Italia Centro-Nord (Firenze / Toscana / Marche) GME Europe/Rome 450 MW / 4200 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
IT-Centre-South Italia Centro-Sud (Roma / Napoli / Lazio) GME Europe/Rome 2400 MW / 5800 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
IT-South Italia Sud (Puglia / Calabria / Basilicata) GME Europe/Rome 5600 MW / 6200 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
IT-Sicily Italia Sicilia (Palermo / Catania) GME Europe/Rome 2300 MW / 2900 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
IT-Sardinia Italia Sardegna (Cagliari / Sassari) GME Europe/Rome 1250 MW / 1650 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
PL Polska / Poland (PL — TGE) TGE (RDN) Europe/Warsaw 10200 MW / 19500 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
CZ Česko / Czechia (CZ — OTE) OTE Europe/Prague 360 MW / 4100 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
SK Slovensko / Slovakia (SK — OKTE) OKTE Europe/Bratislava 50 MW / 1150 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
HU Magyarország / Hungary (HU — HUPX) HUPX Europe/Budapest 330 MW / 7100 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
RO România / Romania (RO — OPCOM) OPCOM Europe/Bucharest 3150 MW / 4200 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
BG България / Bulgaria (BG — IBEX) IBEX Europe/Sofia 720 MW / 4100 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
SI Slovenija / Slovenia (SI — BSP) BSP SouthPool Europe/Ljubljana 20 MW / 1350 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
HR Hrvatska / Croatia (HR — CROPEX) CROPEX Europe/Zagreb 1280 MW / 850 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge
GR Ελλάδα / Greece (GR — HEnEx) HEnEx Europe/Athens 5350 MW / 8200 MW JSON · HA · Shelly · EVCC · CSV · iCal · Widget · Badge