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.
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.
next_cheap_hour for when to resume.curl "https://elecz.com/signal/cheapest-hours?zone=GB&hours=5"
{
"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 }
]
}
Every field is designed to be actionable — no post-processing required.
| Field | Type | Description |
|---|---|---|
| current_hour_signal | string | low / medium / high — ready to use as a run/wait/stop signal |
| current_hour_is_cheap | boolean | True if current hour is within the requested cheapest window |
| current_hour_rank | integer | Rank of current hour by price (1 = cheapest of the day) |
| cheap_window_ends | ISO 8601 | When the current cheap window ends — useful for scheduling a stop time |
| next_cheap_hour | ISO 8601 | Start of the next cheap period — useful for scheduling a delayed start |
| hours_until_next_cheap | integer | Hours until the next cheap period — useful for natural language responses |
| data_complete | boolean | True 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_window | object | Optimal consecutive 3-hour block for uninterruptible tasks (e.g. a full EV charge cycle). Contains start, end, and avg_price |
| cheapest_hours | array | Ranked list of cheapest hours with price and timestamp |
The ranking logic is the same in every supported zone, so the response behaves consistently regardless of market.
best_3h_window scans for the cheapest consecutive 3-hour block — useful for tasks that shouldn't be interrupted mid-run, like a full EV charge cycle.low (top third), medium, or high.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.
The cheapest hours API is the core signal for any energy-aware automation.
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.cheap_window_ends to know how long the cheap period lasts before switching to stored heat.cheapest_hours array directly.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.The cheapest_hours tool is available via the Elecz MCP server. Any MCP-compatible AI client can call it directly.
{
"mcpServers": {
"elecz": {
"url": "https://elecz.com/mcp"
}
}
}
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."
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.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.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.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.cheapest_hours is not available for those zones.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.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.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.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.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.Free. No API key. 40 countries. Works via MCP or REST.