Cheapest Electricity Hours API

Which hours are cheapest
to run things today?
Ask the API.

The cheapest_hours API returns ranked electricity hours for the next 24h — built on day-ahead market data, with a ready-to-use scheduling signal. No math, no custom logic. Just call it and act on the answer. Whether the question is the cheapest time to charge an EV, the best time to run a dishwasher or heat pump, or simply when electricity is cheapest today, the same endpoint answers all of it. Charging an EV tonight? See the plain-language answer instead of raw API output.

40
countries
24h
look-ahead
hourly
updated
€0
no API key
Connect via MCP → REST API docs

The response tells you what to do — not just what the price is

Most APIs return a list of prices and leave the scheduling logic to you. Elecz returns a decision-ready signal so an agent or automation can act immediately.

low
Current hour is among the cheapest of the day. Good time to run high-consumption devices — EV charging, heat pump, dishwasher, batch jobs.
medium
Price is average. Acceptable to run if needed, but a cheaper window is likely coming. Defer if possible.
high
Current hour is expensive. Avoid running non-essential loads. Check next_cheap_hour for when to resume.
REST — GET /signal/cheapest-hourscURL
curl "https://elecz.com/signal/cheapest-hours?zone=GB&hours=5"
Response example (zone: GB)JSON
{
  "zone": "GB",
  "currency": "GBP",
  "unit": "p/kWh",
  "current_hour_signal": "low",
  "current_hour_is_cheap": true,
  "current_hour_rank": 2,
  "cheap_window_ends": "2026-05-12T06:00:00+01:00",
  "next_cheap_hour": "2026-05-12T23:00:00+01:00",
  "hours_until_next_cheap": 17,
  "data_complete": true,
  "cheapest_hours": [
    { "rank": 1, "hour": "2026-05-12T04:00", "price": 8.3 },
    { "rank": 2, "hour": "2026-05-12T05:00", "price": 9.1 },
    { "rank": 3, "hour": "2026-05-12T03:00", "price": 9.7 },
    { "rank": 4, "hour": "2026-05-12T23:00", "price": 10.2 },
    { "rank": 5, "hour": "2026-05-12T02:00", "price": 11.4 }
  ]
}

Response fields

Every field is designed to be actionable — no post-processing required.

FieldTypeDescription
current_hour_signalstringlow / medium / high — ready to use as a run/wait/stop signal
current_hour_is_cheapbooleanTrue if current hour is within the requested cheapest window
current_hour_rankintegerRank of current hour by price (1 = cheapest of the day)
cheap_window_endsISO 8601When the current cheap window ends — useful for scheduling a stop time
next_cheap_hourISO 8601Start of the next cheap period — useful for scheduling a delayed start
hours_until_next_cheapintegerHours until the next cheap period — useful for natural language responses
data_completebooleanTrue if tomorrow's day-ahead prices are already published and included in the ranking. Day-ahead data typically available from ~13:00 CET for ENTSO-E zones, ~10:30 JST for Japan.
best_3h_windowobjectOptimal consecutive 3-hour block for uninterruptible tasks (e.g. a full EV charge cycle). Contains start, end, and avg_price
cheapest_hoursarrayRanked list of cheapest hours with price and timestamp

How cheapest_hours is calculated

The ranking logic is the same in every supported zone, so the response behaves consistently regardless of market.

Markets without public day-ahead data (AU, NZ, KR, US-TX, ZA, PH-*) can't use this ranking — see the full market coverage table for which zones support cheapest_hours.

What developers build with it

The cheapest hours API is the core signal for any energy-aware automation.

⚡ EV charging scheduler
Check current_hour_signal — if low, start charging now. Otherwise delay to next_cheap_hour. No custom price comparison needed. Building this for a person, not an app? See Best Time to Charge Your EV.
🌡️ Heat pump control
Pre-heat when electricity is cheap. Use cheap_window_ends to know how long the cheap period lasts before switching to stored heat.
🍽️ Appliance automation
Dishwasher, washing machine, tumble dryer — schedule to run during the top 3–5 cheapest hours. Use cheapest_hours array directly.
🤖 AI agent scheduling
User asks "when should I run the dryer?" — agent calls cheapest_hours, answers with a concrete time and estimated saving. Works via MCP in Claude, Grok, Cursor — see the AI agent integration guide for the full rule set.
💻 Batch job scheduler
Run compute-heavy or GPU-intensive jobs during the cheapest hours. Useful for data centers, ML training runs, or any workload with flexible timing.
🔋 Battery storage
Charge battery storage during cheapest hours, discharge during expensive ones. Use the full ranked list to build a charge/discharge schedule for the day.

Via MCP — one line of config

The cheapest_hours tool is available via the Elecz MCP server. Any MCP-compatible AI client can call it directly.

MCP config — Claude Desktop / Cursor / GrokJSON
{
  "mcpServers": {
    "elecz": {
      "url": "https://elecz.com/mcp"
    }
  }
}
Example — agent response using cheapest_hoursnatural language
User: "Should I start the dishwasher now?"

Agent (via Elecz MCP):
"Now is actually a good time — you're in the 2nd cheapest hour of
the day at 9.1 p/kWh. The cheap window runs until 06:00, so you
have about 50 minutes. If you miss it, the next cheap period
starts at 23:00 tonight."

Frequently asked questions

Is there a free day-ahead electricity price API?
Yes — Elecz provides day-ahead prices as the foundation for cheapest_hours. Next-day prices are published daily (~13:00 CET for ENTSO-E zones, ~10:30 JST for Japan) and automatically included in the ranking when available. The data_complete flag tells you whether tomorrow's data is already in. No API key or registration required.
Is there a free API for finding the cheapest electricity hours?
Yes — Elecz provides a free cheapest_hours API for 40 countries. No API key, no account, no registration. Call GET /signal/cheapest-hours?zone=GB and you get a ranked list of cheapest hours plus scheduling signals.
How many hours ahead does it look?
Up to 24h ahead, spanning today and tomorrow. The data_complete flag tells you whether tomorrow's prices are already published (typically from ~13:00 CET). When both days are available, the ranking covers the full 24h window ahead.
How do I choose how many cheapest hours to return?
Pass the hours parameter — for example ?zone=FI&hours=3 returns the 3 cheapest hours. Default is 5. The current_hour_signal is calculated relative to your requested window.
Which countries are supported?
40 countries across Europe (all ENTSO-E zones), UK, USA (CAISO, ERCOT, NYISO), Canada (Ontario), Australia, New Zealand, South Korea, and Japan. Note: AU, NZ, and KR do not publish day-ahead data, so cheapest_hours is not available for those zones.
Can I use this with Home Assistant or n8n?
Yes. Via the REST API — sensor.rest works today. A dedicated Home Assistant integration (custom_component) is not yet available. For workflow automation, the official n8n community node (n8n-nodes-elecz) integrates cheapest_hours into any n8n workflow. The current_hour_signal field returns low, medium, or high — ready to use as a trigger condition without any custom logic.
How is this different from just fetching spot prices and sorting them myself?
You could — but cheapest_hours also returns current_hour_signal, cheap_window_ends, next_cheap_hour, and hours_until_next_cheap. These context fields are what make the response actionable for agents and automations without additional logic.
When should I charge my EV tonight?
Call cheapest_hours and check current_hour_signal — if it's already low, start now. Otherwise use next_cheap_hour for the start time and best_3h_window if the charge needs a full uninterrupted block. For a plain-language version of this same answer, see Best Time to Charge Your EV Today.
Is electricity cheap right now?
current_hour_signal answers this directly — low means yes, high means no, medium means average. No threshold math required; the signal is already computed relative to the rest of the ranked window.
What is the cheapest 3-hour window today?
best_3h_window returns the cheapest consecutive 3-hour block in the response, with its start, end, and avg_price — useful for tasks that need to run uninterrupted, like a full EV charge or a dishwasher cycle.
I just want to know when to charge my EV — do I need to read all this?
No — see Best Time to Charge Your EV Today for a plain-language, no-API-required answer. Come back here if you want to build something on top of the signal yourself.
cheapest electricity hours API cheapest hours electricity API free day-ahead electricity price API day-ahead cheapest hours API off-peak electricity hours API electricity scheduling API EV charging cheapest hours API electricity price signal API cheapest electricity time API hourly electricity price API energy price scheduling API no auth electricity price API home automation smart home electricity API heat pump electricity price API electricity price Home Assistant integration electricity price n8n node cheapest time to use electricity cheapest time to charge EV best time to run dishwasher best time to run washing machine best time for heat pump when electricity is cheapest today lowest electricity price today

Find the cheapest hours.
Act on them automatically.

Free. No API key. 40 countries. Works via MCP or REST.

Connect via MCP → Full API overview