Use day-ahead electricity prices

Read tomorrow's wholesale electricity prices for any location, and charge in the cheapest hours automatically.

3 min readEdit this page
On this page

Electricity does not cost the same all day. Europe's wholesale markets set a price for every hour of tomorrow the afternoon before: the day-ahead price. Between a cheap night and an expensive evening peak the difference is routinely several-fold, and on a windy day the price can go negative.

Flowion collects these prices for every European market it covers and serves them for any of your locations. Use them in your own reports and apps, or let Flowion move charging into the cheap hours for you.

Give a location its price zone

Prices are set per bidding zone: a market area with one price. Zones are not countries. Sweden has four, Norway five, and Germany shares one with Luxembourg. Each location reads its prices from the zone you give it:

PATCH/v1/locations/$LOCATIONbash
curl -X PATCH "$API/locations/$LOCATION" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"priceZone": "10Y1001A1001A46L"}'

A zone is named by its EIC code. GET /v1/energy/zones lists every zone Flowion collects, each with a readable label, ready for a picker. A code outside that list is refused, and null clears the zone.

Set the zone on every location of a fleet that spans more than one zone. Zonal prices drift apart most exactly when the grid is stressed, which is when the right price matters.

Read a location's prices

GET/v1/locations/$LOCATION/energy/pricesbash
curl "$API/locations/$LOCATION/energy/prices" \
  -H "Authorization: Bearer $TOKEN"
200Response
{
  "zone": "10Y1001A1001A46L",
  "clock": {
    "timeZone": "Europe/Stockholm",
    "offsets": [
      { "from": "2026-10-01T08:00:00Z", "offsetMinutes": 120 }
    ]
  },
  "data": [
    {
      "periodStart": "2026-10-01T08:00:00Z",
      "resolutionMinutes": 60,
      "priceAmount": "84.17",
      "currency": "EUR"
    }
  ]
}

By default you get the next 48 hours from now. Narrow or move the window with since and until; an until that is not after since is 400. A location without a price zone answers 404.

clock tells you the location's time zone and its UTC offset across the window, so you can label points by local hour without a time zone database of your own. A second entry in offsets is a daylight saving change.

To read a zone directly, without a location, use GET /v1/energy/prices?zone=10Y1001A1001A46L with the same window parameters.

Read a price point correctly

  • priceAmount is per MWh, the wholesale price as the market publishes it, in currency. Divide by 1000 for a price per kWh.

  • It is a decimal string. Parse it as a decimal, never a float, or rounding will drift once you add up thousands of intervals.

  • It can be negative. When generation outstrips demand, producers pay to offload power. "-5.32" is a real price, and code that assumes prices are positive picks the wrong hour exactly when the saving is largest.

  • Read resolutionMinutes. Markets are moving to 15-minute prices, and the field tells you which you have.

Tomorrow's prices appear once the market publishes them in the afternoon. Until then, treat a missing hour as not yet known, never as zero. An empty data means the zone's market has published no prices for that window.

Charge in the cheapest hours

Wholesale is only part of what a site pays: grid fees, taxes and the supplier's markup sit on top. Record what a location really pays in a supply contract, and Flowion combines it with these prices into the location's price for every 15 minutes.

Give a session a goal (how much energy, finished by when) and Flowion pauses or slows it through the expensive slots while still finishing on time. The supply contract page shows how.

Endpoints

Energy · Locations & Circuits

In the API reference