# GrünstromIndex

> Use the GrünstromIndex (Green Power Index) by Corrently to see when electricity at a German postcode is greenest. Get the hourly forecast for the next four days, find the best time to run appliances, check wholesale electricity prices, see which renewables and nearby towns supply the power, get a heat pump schedule and forecast a solar installation's output. Germany only. No account or API key required.

App · 6 actions. Web page: https://docs.lodol.com/docs/integrations/grunstromindex

## Actions

### Find the greenest time to use power

Find the hour with the most green power at a German postcode within the next few hours, to run a dishwasher, charge a car or start a batch job then. Says whether that is now, and how many minutes until it starts.

**Inputs**

- Postcode (`postcode`, text, required): A five-digit German postcode (Postleitzahl). The figures are for the electricity at that place, so use the postcode where the power is used.
- Within the next (hours) (`within_hours`, number): How far ahead to look, from 1 to 96 hours. Defaults to 24. Use a short window, such as 8, for something that has to happen today. From 1 to 96. Default: `24`.

**Outputs**

- `best_time` (text): When the greenest hour starts, in UTC.
- `best_time_local` (text): When the greenest hour starts, in German time.
- `green_power_index` (number): The GrünstromIndex, from 0 to 100: how much of the power at this place comes from renewables. Higher is greener.
- `is_now` (true/false): True when the greenest hour is the current one.
- `postcode` (text): The postcode the figures are for.
- `starts_in_minutes` (number): Minutes until it starts; 0 when it is now.
- `summary` (text): The answer as one or two sentences.
- `within_hours` (number): How many hours ahead were searched.

**Example output**

```json
{
  "best_time": "2026-10-16T15:00:00Z",
  "best_time_local": "2026-10-16T17:00:00+02:00",
  "green_power_index": 91.2,
  "is_now": false,
  "postcode": "69168",
  "starts_in_minutes": 1243,
  "summary": "The greenest time to use power at 69168 in the next 24 hours is Fri 16 Oct, 17:00 German time (index 91.2).",
  "within_hours": 24
}
```

### Get a solar power forecast

Estimate how much electricity a solar installation at a German postcode will make, hour by hour and per day for the next few days, from its size, tilt and direction. Gives today's and tomorrow's totals and the best hour, for example to plan when to run appliances on your own solar power.

**Inputs**

- Postcode (`postcode`, text, required): A five-digit German postcode (Postleitzahl). The figures are for the electricity at that place, so use the postcode where the power is used.
- Peak power (kWp) (`peak_power_kw`, number, required): The installation's size in kilowatt peak, as on the installer's paperwork, from 0.1 to 1000. A typical home roof is 5 to 10 kWp, a balcony panel about 0.8. From 0.1 to 1000.
- Panel tilt (degrees) (`tilt_degrees`, number): How steeply the panels lean, from 0 (flat) to 90 (upright, as on a balcony railing). Defaults to 30, which suits most pitched roofs. From 0 to 90. Default: `30`.
- Panels face (`facing`, text): Which way the panels face. Defaults to south. One of: `south`, `south_west` (South-west), `west`, `south_east` (South-east), `east`, `north`. Default: `south`.

**Outputs**

- `best_hour` (object)
- `days` (list)
- `facing` (text): The direction the panels face.
- `hour_count` (number): How many hours are in the list.
- `hours` (list)
- `peak_power_kw` (number): The installation's size, in kWp.
- `postcode` (text): The postcode the figures are for.
- `summary` (text): The answer as one or two sentences.
- `tilt_degrees` (number): The panel tilt used, in degrees.
- `today_kwh` (number): Expected output for the whole of today, in kWh.
- `tomorrow_kwh` (number): Expected output for tomorrow, in kWh.

**Example output**

```json
{
  "best_hour": {
    "energy_kwh": 2.628,
    "local_time": "2026-10-16T13:00:00+02:00",
    "start_time": "2026-10-16T11:00:00Z"
  },
  "days": [
    {
      "date": "2026-10-16",
      "energy_kwh": 32.79
    },
    {
      "date": "2026-10-17",
      "energy_kwh": 31.78
    }
  ],
  "facing": "South",
  "hour_count": 1,
  "hours": [
    {
      "energy_kwh": 2.628,
      "local_time": "2026-10-16T13:00:00+02:00",
      "start_time": "2026-10-16T11:00:00Z"
    }
  ],
  "peak_power_kw": 9.6,
  "postcode": "69168",
  "summary": "Solar forecast for 9.6 kWp facing south at 30\u00b0 in 69168: today 32.79 kWh, tomorrow 31.78 kWh. Best hour: Fri 16 Oct, 13:00 (2.628 kWh).",
  "tilt_degrees": 30,
  "today_kwh": 32.79,
  "tomorrow_kwh": 31.78
}
```

### Get electricity market prices

Get German wholesale electricity prices for every quarter hour from now until the end of tomorrow's published prices, in EUR per MWh and cents per kWh, alongside a local price adjusted for the green power at a postcode. Also gives the price now, the cheapest and most expensive quarter hours and the average. These are wholesale prices, not what a household tariff charges.

**Inputs**

- Postcode (`postcode`, text, required): A five-digit German postcode (Postleitzahl). The figures are for the electricity at that place, so use the postcode where the power is used.

**Outputs**

- `average_local_price_cents_per_kwh` (number): The average local price, in cents per kWh.
- `cheapest_slot` (object)
- `city` (text): The town or city of that postcode.
- `current_price` (object)
- `most_expensive_slot` (object)
- `postcode` (text): The postcode the figures are for.
- `slot_count` (number): How many quarter hours are in the list.
- `slots` (list)
- `summary` (text): The answer as one or two sentences.

**Example output**

```json
{
  "average_local_price_cents_per_kwh": 20.76,
  "cheapest_slot": {
    "end_time": "2026-10-16T09:15:00Z",
    "local_price_cents_per_kwh": 12.11,
    "local_price_eur_per_mwh": 121.14,
    "local_time": "2026-10-16T11:00:00+02:00",
    "market_price_cents_per_kwh": 14.5,
    "market_price_eur_per_mwh": 145.04,
    "start_time": "2026-10-16T09:00:00Z"
  },
  "city": "Wiesloch",
  "current_price": {
    "end_time": "2026-10-16T09:15:00Z",
    "local_price_cents_per_kwh": 12.11,
    "local_price_eur_per_mwh": 121.14,
    "local_time": "2026-10-16T11:00:00+02:00",
    "market_price_cents_per_kwh": 14.5,
    "market_price_eur_per_mwh": 145.04,
    "start_time": "2026-10-16T09:00:00Z"
  },
  "most_expensive_slot": {
    "end_time": "2026-10-16T09:30:00Z",
    "local_price_cents_per_kwh": 29.41,
    "local_price_eur_per_mwh": 294.14,
    "local_time": "2026-10-16T11:15:00+02:00",
    "market_price_cents_per_kwh": 25.91,
    "market_price_eur_per_mwh": 259.06,
    "start_time": "2026-10-16T09:15:00Z"
  },
  "postcode": "69168",
  "slot_count": 2,
  "slots": [
    {
      "end_time": "2026-10-16T09:15:00Z",
      "local_price_cents_per_kwh": 12.11,
      "local_price_eur_per_mwh": 121.14,
      "local_time": "2026-10-16T11:00:00+02:00",
      "market_price_cents_per_kwh": 14.5,
      "market_price_eur_per_mwh": 145.04,
      "start_time": "2026-10-16T09:00:00Z"
    },
    {
      "end_time": "2026-10-16T09:30:00Z",
      "local_price_cents_per_kwh": 29.41,
      "local_price_eur_per_mwh": 294.14,
      "local_time": "2026-10-16T11:15:00+02:00",
      "market_price_cents_per_kwh": 25.91,
      "market_price_eur_per_mwh": 259.06,
      "start_time": "2026-10-16T09:15:00Z"
    }
  ],
  "summary": "Electricity market prices for Wiesloch (69168), 2 quarter hours. Now: 12.11 ct/kWh. Cheapest: Fri 16 Oct, 11:00 (12.11 ct/kWh). Most expensive: Fri 16 Oct, 11:15 (29.41 ct/kWh)."
}
```

### Get the green power forecast

Get the hour-by-hour GrünstromIndex for a German postcode: how green the electricity there will be, from 0 to 100, with the solar and wind parts and an estimate of CO2 per kWh. Also gives the index right now and the greenest and least green hours, so a workflow can plan or alert on them.

**Inputs**

- Postcode (`postcode`, text, required): A five-digit German postcode (Postleitzahl). The figures are for the electricity at that place, so use the postcode where the power is used.
- Hours ahead (`hours`, number): How many hours to return, starting with the current hour, from 1 to 96. Defaults to 24. The forecast reaches about four days ahead, so a large number may return fewer hours. From 1 to 96. Default: `24`.

**Outputs**

- `average_index` (number): The average index over the hours returned.
- `city` (text): The town or city of that postcode.
- `current_hour` (object)
- `current_index` (number): The GrünstromIndex for the current hour.
- `greenest_hour` (object)
- `hour_count` (number): How many hours are in the list.
- `hours` (list)
- `least_green_hour` (object)
- `postcode` (text): The postcode the figures are for.
- `summary` (text): The answer as one or two sentences.

**Example output**

```json
{
  "average_index": 72.5,
  "city": "Wiesloch",
  "current_hour": {
    "co2_grams_per_kwh": 17,
    "end_time": "2026-10-16T10:00:00Z",
    "green_power_index": 83.6,
    "local_time": "2026-10-16T11:00:00+02:00",
    "solar_index": 66,
    "start_time": "2026-10-16T09:00:00Z",
    "wind_index": 22
  },
  "current_index": 83.6,
  "greenest_hour": {
    "co2_grams_per_kwh": 11,
    "end_time": "2026-10-16T11:00:00Z",
    "green_power_index": 91.2,
    "local_time": "2026-10-16T12:00:00+02:00",
    "solar_index": 74,
    "start_time": "2026-10-16T10:00:00Z",
    "wind_index": 22
  },
  "hour_count": 3,
  "hours": [
    {
      "co2_grams_per_kwh": 17,
      "end_time": "2026-10-16T10:00:00Z",
      "green_power_index": 83.6,
      "local_time": "2026-10-16T11:00:00+02:00",
      "solar_index": 66,
      "start_time": "2026-10-16T09:00:00Z",
      "wind_index": 22
    },
    {
      "co2_grams_per_kwh": 11,
      "end_time": "2026-10-16T11:00:00Z",
      "green_power_index": 91.2,
      "local_time": "2026-10-16T12:00:00+02:00",
      "solar_index": 74,
      "start_time": "2026-10-16T10:00:00Z",
      "wind_index": 22
    },
    {
      "co2_grams_per_kwh": 41,
      "end_time": "2026-10-16T12:00:00Z",
      "green_power_index": 42.8,
      "local_time": "2026-10-16T13:00:00+02:00",
      "solar_index": 23,
      "start_time": "2026-10-16T11:00:00Z",
      "wind_index": 20
    }
  ],
  "least_green_hour": {
    "co2_grams_per_kwh": 41,
    "end_time": "2026-10-16T12:00:00Z",
    "green_power_index": 42.8,
    "local_time": "2026-10-16T13:00:00+02:00",
    "solar_index": 23,
    "start_time": "2026-10-16T11:00:00Z",
    "wind_index": 20
  },
  "postcode": "69168",
  "summary": "Green power forecast for Wiesloch (69168), next 3 hours. Now: 83.6 out of 100. Greenest: Fri 16 Oct, 12:00 (91.2). Least green: Fri 16 Oct, 13:00 (42.8)."
}
```

### Get the heat pump schedule

Get an hour-by-hour signal for running a heat pump (or another flexible appliance) at a German postcode: boost when there is plenty of green power, normal, or reduce when there is little. Gives the signal now and when the next boost hour starts.

**Inputs**

- Postcode (`postcode`, text, required): A five-digit German postcode (Postleitzahl). The figures are for the electricity at that place, so use the postcode where the power is used.
- Hours ahead (`hours`, number): How many hours to return, starting with the current hour, from 1 to 96. Defaults to 24. The forecast reaches about four days ahead, so a large number may return fewer hours. From 1 to 96. Default: `24`.

**Outputs**

- `boost_hours` (number): How many of the hours returned are boost hours.
- `city` (text): The town or city of that postcode.
- `current_signal` (text): The signal for the current hour: boost, normal or reduce.
- `hour_count` (number): How many hours are in the list.
- `hours` (list)
- `next_boost_time` (text): When the next boost hour starts, in UTC; empty if none.
- `next_boost_time_local` (text): The same, in German time.
- `postcode` (text): The postcode the figures are for.
- `reduce_hours` (number): How many of the hours returned are reduce hours.
- `summary` (text): The answer as one or two sentences.

**Example output**

```json
{
  "boost_hours": 1,
  "city": "Wiesloch",
  "current_signal": "normal",
  "hour_count": 2,
  "hours": [
    {
      "end_time": "2026-10-16T10:00:00Z",
      "green_power_index": 69.4,
      "local_time": "2026-10-16T11:00:00+02:00",
      "signal": "normal",
      "start_time": "2026-10-16T09:00:00Z"
    },
    {
      "end_time": "2026-10-16T11:00:00Z",
      "green_power_index": 77.0,
      "local_time": "2026-10-16T12:00:00+02:00",
      "signal": "boost",
      "start_time": "2026-10-16T10:00:00Z"
    }
  ],
  "next_boost_time": "2026-10-16T10:00:00Z",
  "next_boost_time_local": "2026-10-16T12:00:00+02:00",
  "postcode": "69168",
  "reduce_hours": 0,
  "summary": "Heat pump schedule for Wiesloch (69168), next 2 hours. Now: normal. Next boost: Fri 16 Oct, 12:00; 1 boost hour in total."
}
```

### Get where local green power comes from

See which renewables make up the green power at a German postcode over recent days (wind, solar, biomass and so on, in percent), which nearby towns supply it, where the surplus goes, and how far it travels on average.

**Inputs**

- Postcode (`postcode`, text, required): A five-digit German postcode (Postleitzahl). The figures are for the electricity at that place, so use the postcode where the power is used.

**Outputs**

- `average_distance_km` (number): How far, on average, the power travels to cover demand here, in km.
- `city` (text): The town or city of that postcode.
- `delivered_to` (list)
- `period_end` (text): End of the period the mix covers, in UTC.
- `period_start` (text): Start of the period the mix covers, in UTC.
- `postcode` (text): The postcode the figures are for.
- `renewable_mix` (list)
- `summary` (text): The answer as one or two sentences.
- `supplied_from` (list)
- `top_source` (text): The biggest renewable source, e.g. Onshore wind.
- `top_source_share_percent` (number): Its share of the mix, in percent.

**Example output**

```json
{
  "average_distance_km": 7.4,
  "city": "Wiesloch",
  "delivered_to": [
    {
      "place": "Heidelberg",
      "postcode": "69126",
      "share_percent": 8.2
    },
    {
      "place": "Schwetzingen",
      "postcode": "68723",
      "share_percent": 7.5
    }
  ],
  "period_end": "2026-10-15T18:00:00Z",
  "period_start": "2026-10-14T16:00:00Z",
  "postcode": "69168",
  "renewable_mix": [
    {
      "share_percent": 50.78,
      "source": "Onshore wind"
    },
    {
      "share_percent": 33.34,
      "source": "Solar"
    },
    {
      "share_percent": 15.55,
      "source": "Biomass"
    },
    {
      "share_percent": 0.28,
      "source": "Landfill gas"
    },
    {
      "share_percent": 0.05,
      "source": "Geothermal"
    }
  ],
  "summary": "Green power in Wiesloch (69168) is mostly onshore wind (50.78%); the biggest local supplier is Dielheim; it travels about 7.4 km on average.",
  "supplied_from": [
    {
      "place": "Dielheim",
      "postcode": "69234",
      "share_percent": 10.5
    },
    {
      "place": "Gaiberg",
      "postcode": "69251",
      "share_percent": 7.5
    }
  ],
  "top_source": "Onshore wind",
  "top_source_share_percent": 50.78
}
```
