EU Electricity Prices API: Day-Ahead Power Prices & Cheap Hours avatar

EU Electricity Prices API: Day-Ahead Power Prices & Cheap Hours

Pricing

from $0.14 / 1,000 price rows

Go to Apify Store
EU Electricity Prices API: Day-Ahead Power Prices & Cheap Hours

EU Electricity Prices API: Day-Ahead Power Prices & Cheap Hours

Electricity prices scraper & API: hourly (or 15-minute) day-ahead prices of the European electricity market (Strompreise, prix de l'électricité), 40+ bidding zones — cheapest hours, negative-price and spike alerts, history, generation mix and renewable share. For Home Assistant, Slack, webhooks.

Pricing

from $0.14 / 1,000 price rows

Rating

0.0

(0)

Developer

EuroScrape

EuroScrape

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

EU Electricity Prices (Day-Ahead): All Zones & Cheap Hours

Tomorrow's electricity prices for 40+ European bidding zones — with the cheapest hours computed for you. Hourly (or native 15-minute) day-ahead spot prices from official market data, plus a free day summary per zone: the cheapest 3-hour window, negative-price intervals, min/max with their exact times.

Day-ahead prices and the cheapest 3-hour window, real data

  • ⚡ Every European zone: France, Germany-Luxembourg, all 4 Swedish and 5 Norwegian zones, both Danish zones, all Italian zones, Iberia, the Baltics, the Balkans… Type a country name and get all its zones.
  • 🕐 Cheapest window, of the length you need: 3 hours by default, 1 to 12 with windowHours — the single answer smart-home and EV owners actually want: when to charge, heat or run heavy loads.
  • 🔔 Daily alerts: schedule it after the 13:00 CET auction and get tomorrow's summary on Telegram, Slack, Discord or a webhook (Home Assistant friendly) — with negative-price and spike alerts.
  • 📜 History included: the same data goes back years, for backtesting a dynamic tariff or sizing a battery.

✨ Why this Actor

🌍 One input, a continent"zones": ["all"] = every European bidding zone in one dataset, same format.
🧮 Both unitsEvery row carries priceEurMwh and priceCtKwh — no mental division when comparing with your tariff.
⏱️ Market-native resolutionThe EU switched to 15-minute pricing; get hourly averages (default) or the raw quarter-hours.
🆓 Summaries freeAverages, extremes with times, cheapest/priciest windows (with start and end), hours of negative prices, daily spread.
🌱 Generation mix, freeincludeGenerationMix: renewable share, a green/yellow/red signal, load and generation by source (solar, wind, nuclear, hydro, gas, coal…) on every row; the greenest hours and the mix of the day in the summary.
🔌 Automation-readyJSON/CSV via the Apify API, plus webhook pushes — drop it into Home Assistant, Node-RED, Make or n8n.

🎯 Use cases

  • Smart home & EV: charge in the cheapest window every night, automatically.
  • Small businesses on spot tariffs: shift consumption, get spike warnings before an expensive day.
  • Energy analysts & journalists: compare zones, track negative-price frequency, pull years of history in one run.
  • Solar & battery owners: spot the negative-price intervals when exporting costs you money.
  • Carbon-aware automation: run the heat pump, the dishwasher or the batch job when the grid is greenest, not only cheapest.

🚀 Examples

Today and tomorrow for France and Germany:

{
"zones": ["FR", "DE-LU"]
}

Tomorrow's cheap hours on Telegram, every day at 13:30 CET:

{
"zones": ["France"],
"monitorName": "fr-spot",
"alertBelowEurMwh": 0,
"telegramBotToken": "123456:ABC…",
"telegramChatId": "123456789"
}

Tomorrow's cheapest 5 hours to charge an EV, pushed to Home Assistant:

{
"zones": ["FR"],
"windowHours": 5,
"monitorName": "ev-charge",
"webhookUrl": "https://your-home-assistant/api/webhook/…"
}

Cheap and green — Germany with the renewable share and the generation by source on every hour:

{
"zones": ["DE-LU"],
"includeGenerationMix": true
}

A year of 15-minute history for the whole Nordics:

{
"zones": ["Norway", "Sweden", "Denmark", "FI"],
"dateFrom": "2025-10-01",
"dateTo": "2026-10-01",
"resolution": "quarter"
}

📊 Data Report · 31 Oct 2026: day-ahead power in 18 countries

One run, ENTSO-E day-ahead market, average price of 31 October 2026 in the bidding zone of each capital, the day after European gas crossed 100 €/MWh:

CountryAverage €/MWh
Finland77
Sweden155
Norway171
Portugal207
Poland210
Spain218
France238
Slovakia248
Belgium248
Netherlands250
Czechia251
Denmark251
Germany251
Austria257
Italy258
Bulgaria281
Romania282
Hungary290

France: 238 €/MWh against 22 €/MWh on the same day of 2025 (×10.7). Same run, a year earlier: set dateFrom and dateTo to 2025-10-31.

Reproduce it (then widen the list):

{
"zones": [
"France",
"Germany",
"Spain",
"Finland",
"Hungary"
],
"includeSummary": true,
"includeGenerationMix": true
}

More reports like this one, twice a week: EuroScrape on LinkedIn.

📦 Output

A price row (real data):

{
"type": "price",
"zone": "FR",
"zoneName": "France",
"country": "France",
"date": "2026-10-02",
"timeCet": "2026-10-02T00:00",
"timeUtc": "2026-10-01T22:00Z",
"priceEurMwh": 176.41,
"priceCtKwh": 17.641,
"resolution": "hour"
}

The free day summary (real data — note the solar dip: the day averages 172 € but the early-afternoon window costs less than half the evening peak):

{
"type": "daySummary",
"zone": "FR",
"zoneName": "France",
"date": "2026-10-03",
"marketResolution": "15min",
"averageEurMwh": 172.52,
"minEurMwh": 63.94,
"minTimeCet": "2026-10-03T13:30",
"maxEurMwh": 243.06,
"maxTimeCet": "2026-10-03T18:45",
"negativeQuarterHours": 0,
"negativeHours": 0,
"cheapestWindow": { "hours": 3, "startCet": "2026-10-03T12:15", "averageEurMwh": 81.95, "endCet": "2026-10-03T15:15" },
"priciestWindow": { "hours": 3, "startCet": "2026-10-03T18:15", "averageEurMwh": 229.93, "endCet": "2026-10-03T21:15" },
"cheapest3hWindow": { "startCet": "2026-10-03T12:15", "averageEurMwh": 81.95 },
"priciest3hWindow": { "startCet": "2026-10-03T18:15", "averageEurMwh": 229.93 },
"spreadEurMwh": 179.12,
"peakAverageEurMwh": 155.24,
"offPeakAverageEurMwh": 189.79,
"source": "Bundesnetzagentur | SMARD.de via api.energy-charts.info (CC BY 4.0)"
}

With includeGenerationMix (real data, Germany, 23 Oct 2026 at 13:00 — a windy, sunny lunch hour: 88 % renewables, 110 € instead of the day's 226 € morning peak):

{
"type": "price",
"zone": "DE-LU",
"timeCet": "2026-10-23T13:00",
"priceEurMwh": 110.13,
"renewableSharePct": 88.2,
"solarSharePct": 19.1,
"windSharePct": 52.2,
"signal": "green",
"loadMw": 64224,
"residualLoadMw": 13217,
"generationMw": { "windOnshore": 31397, "solar": 13678, "coal": 9625, "windOffshore": 5932, "gas": 3954, "biomass": 3788, "waste": 1364, "hydro": 1244, "oil": 299, "other": 156, "geothermal": 13 },
"mixSource": "measured"
}

and the day summary adds averageRenewableSharePct (64.7 that day), greenestWindow (11:30–14:30 at 84.6 %), peakLoadMw with its time, generationMixPct (wind 48 %, coal 21.5 %, gas 9.5 %, solar 7.4 %…) and generationGwh per source.

💰 Pricing

EventPrice
Run start$0.003
Price row (one hour, one zone)$0.0002
Day summariesfree

A daily "France + Germany, today + tomorrow" run ≈ $0.02. A full year of hourly history for one zone ≈ $1.75. Apify subscribers pay less: −10% (Starter), −20% (Scale), −30% (Business). Set a maximum cost per run in the run options and the Actor stops cleanly when it's reached.

❓ FAQ

When is tomorrow published? The day-ahead auction clears around 12:45 CET; prices are available shortly after 13:00 CET. Schedule your daily run at 13:30 CET and you'll always catch them.

Which time zone are the times in? timeCet is market time (CET/CEST) — the clock the European power market runs on — and timeUtc is included for your automations.

Why 15 minutes? European day-ahead markets moved from hourly to 15-minute products in 2025. The default output averages them into hourly rows; set resolution: "quarter" for the native data.

Are all zones and dates in 15 minutes? No. Dates before the market switched, and a few zones such as Switzerland, are hourly. marketResolution tells you which one you got, and the windows and negative-price durations are computed on real time either way.

Is this my home tariff? It's the wholesale day-ahead price — the basis of dynamic tariffs (Tibber, aWATTar, Octopus…). Your supplier adds taxes, grid fees and margin on top; the shape of the day (cheap and expensive hours) is what this data gives you.

Where does the data come from? Official market data (Bundesnetzagentur | SMARD.de) served by the Fraunhofer ISE energy-charts.info API, licence CC BY 4.0 — the source is credited in every summary. If that API is down, the prices of Germany-Luxembourg, France, Austria, Belgium, the Netherlands, Switzerland, Italy North, Poland, Czechia, Hungary, Slovenia, Denmark (DK1, DK2), southern Norway (NO2) and southern Sweden (SE4) are read directly from SMARD, the same data at its origin; Spain and Portugal from OMIE, the Iberian market operator; Finland, Estonia, Latvia and Lithuania from Elering, the Estonian grid operator; central Sweden (SE3) from Energinet. Each backup was checked hour by hour against a second source. The other zones wait for the API to come back.

Where does the generation mix come from? ENTSO-E transparency data served by the same energy-charts.info API, per country (a country's zones share one mix). Past days and today are measured; the hours not yet measured use the renewable-share forecast, and mixSource tells you which one you got. For the current day, the day summary combines both so that greenestWindow, averageRenewableSharePct and maxRenewableSharePct cover the whole day (mixSource: "measured + forecast", with measuredUntilCet and measuredSharePct saying how much of the day is measured); load and generation by source stay measured only. Nothing is charged for it.

Great Britain? GB left the EU day-ahead coupling; it's not in this dataset (the Actor tells you if you ask for it).

🔌 API, AI agents and integrations

  • API: one call runs the Actor and returns the results, POST https://api.apify.com/v2/acts/euroscrape~eu-electricity-prices/run-sync-get-dataset-items (see the API tab for Python, JavaScript and cURL).
  • AI agents (MCP): add https://mcp.apify.com?tools=euroscrape/eu-electricity-prices to Claude, Cursor, VS Code or any MCP client, and the Actor becomes a tool your agent can call.
  • No-code automation: start runs and pass the results on with Apify's integrations for n8n, Make and Zapier, or with a webhook when a run ends.
  • Exports: every result set downloads as JSON, CSV, Excel or XML, and can be sent to Google Sheets.
  • Data Reports: twice a week, EuroScrape turns a run of one of its Actors into a 30-second data report (used-iPhone prices in 18 countries, electricity prices, Ryanair fares…) on LinkedIn. Follow the page to see what the data looks like.

⭐ Your feedback

If this Actor saves you time, a short review on Apify Store helps other users find it. Missing a zone or a statistic? Say it in your review: the most requested features are added first.

🔗 More from EuroScrape