Every operator publishes differently
Own portal, own format, own publication time.
Dynamic electricity tariffs from Swiss grid operators
Prices from Swiss grid operators, normalised into one schema: 96 quarter-hour slots a day, CHF per kWh, timestamps in UTC.
The Free plan includes one tariff and 100 requests a day. No payment details needed.
Not a developer? Find out when electricity is cheapest, quarter hour by quarter hour, with Smart.Illustrative day. Move across the bars to inspect a slot.
Direct from the grid operators
How it works
Each operator publishes its own tariff, in its own way and at its own time. We collect them, check them and serve them all in the same format.
Own portal, own format, own publication time.
Same fields, same units, same 15-minute resolution for every tariff.
{
"tariff_id": "groupe_e_vario",
"grid_price_utc": [
{ "2026-10-06T22:00:00Z": 0.0874 },
{ "2026-10-06T22:15:00Z": 0.0861 },
…
]
}
Example slot with illustrative values
Each slot carries its price split into components, so you can see which part moves during the day and which does not.
dynamic_elementsSigning in opens the full workspace. This is what each view is for.
Illustrative map. After sign-in you can check any postal code.
Postal codes and municipalities are matched to operators with the official ElCom / LINDAS dataset of the Swiss Confederation.
Tomorrow publishedToday availableAwaiting publication
Is your operator missing? Write to us. Requests decide which integration comes next. info@swisstariffhub.ch
Move charging sessions into the cheapest quarter hours.
Plan runtimes against tomorrow's prices, published the day before.
Show current tariffs on your own portal without maintaining scrapers.
One schema across operators for dashboards, forecasts and comparisons.
REST and JSON, a key in the header and the same response shape for every tariff.
X-API-Key headertariff_id or by Swiss postal code
The daily request limit is shared by all keys of an account.
Test the API on the tariff that matters to you.
All tariffs for apps, dashboards and internal tools.
Choose keys and daily requests. The price follows from those two numbers.
CHF 190 with Pro included, plus CHF 15 per extra key and CHF 40 per extra 1,000 requests a day.
Swiss datacenter, operated under the Swiss data protection act.
Municipalities and postal codes from ElCom / LINDAS open government data.
Interface in English, German, French and Italian.
A new key is shown once and never stored in clear text.
Create a free account, choose a tariff and make your first request in minutes.
Already have an account?
Legal
Contact
When to use electricity, quarter hour by quarter hour.
—
The price in detail: components, days side by side and exact figures.
Where dynamic tariffs are available, and what they cost right now.
Source: ElCom open data 2026 (grid operator responsible for each municipality) · boundaries © swisstopo.
Swiss dynamic electricity prices in one call: 15-minute slots, UTC timestamps, CHF/kWh.
| Field | Type | Description |
|---|---|---|
| tariff_id | string |
Unique slug identifier. Example
ckw_home_dynamic |
| tariff_name | string |
Human-readable name. Example
CKW Dynamic Home |
| provider_name | string |
Swiss energy utility (EVU). Example
CKW |
| zip_ranges | integer[] | Swiss postal codes served. |
| daily_update_time_utc | string |
Daily price refresh time (UTC). Example
17:30 |
| datetime_available_from_utc | datetime | First UTC datetime with data. |
| valid_until_utc | datetime nullable |
|
| time_resolution_minutes | integer |
Slot resolution in minutes. Example
15 |
| sgr_compliant | boolean | SmartGridready (SGr) certified. |
| Field | Type | Description |
|---|---|---|
| tariff_id | string | Tariff identifier. |
| zip_code | integer | |
| municipality | string | |
| start_timerequired | datetime |
Start of window in UTC. Example
2026-10-19T00:00:00Z |
| end_time | datetime | End of window in UTC. Defaults to start_time + 24 h. |
| Field | Type | Description |
|---|---|---|
| tariff_id | string |
Tariff slug identifier. Example
ckw_home_dynamic |
| date | string |
Swiss local date of the data. Example
2026-10-19 |
| start_time | datetime | UTC start of the actual day window returned. |
| end_time | datetime | UTC end of the actual day window returned. |
| energy_price_utc | object[] | Energy component (CHF/kWh). |
| grid_price_utc | object[] | Grid/network component (CHF/kWh). |
| residual_price_utc | object[] | Residual charges (CHF/kWh). |
| slot_count | integer | Number of 15-min slots returned (96 = full day). |
| zip_code_shared | object[] |
| Field | Type | Description |
|---|---|---|
| start_timerequired | datetime |
Start of window in UTC. Example
2026-10-19T00:00:00Z |
| end_time | datetime | End of window in UTC. Defaults to start_time + 24 h. |
| Field | Type | Description |
|---|---|---|
| energy_price_utc | object[] | Energy component slots (CHF/kWh). |
| grid_price_utc | object[] | Grid component slots (CHF/kWh). |
| residual_price_utc | object[] | Residual charges slots (CHF/kWh). |
| slot_count | integer | Number of 15-min slots for this tariff. |
| Field | Type | Description |
|---|---|---|
| tariff_idrequired | string | |
| days | integer |
| Field | Type | Description |
|---|---|---|
| date | string | |
| slot_count | integer | |
| avg_rp | number | |
| min_rp | number | |
| min_time | string | |
| max_rp | number | |
| max_time | string |
| Field | Type | Description |
|---|---|---|
| tariff_idrequired | string | |
| months | integer |
| Field | Type | Description |
|---|---|---|
| month | string | |
| month_label | string | |
| is_current | boolean | |
| days_with_data | integer | |
| slot_count | integer | |
| avg_rp | number | |
| min_rp | number | |
| min_date | string | |
| max_rp | number | |
| max_date | string |
| Field | Type | Description |
|---|---|---|
| date_str | string |
| Field | Type | Description |
|---|---|---|
| date | string | |
| tariffs | object[] |
| Company | UltorX GmbH |
|---|---|
| Legal form | Limited liability company (GmbH) |
| Registered office | Ronystrasse 17 6331 Hünenberg Kanton Zug, Schweiz |
| Business identification number (UID) | CHE-110.269.811 |
| VAT number | CHE-110.269.811 MWST |
| Commercial register number | CH-170.4.004.522-4 |
| Commercial register | Commercial Register Office of the Canton of Zug |
| info@swisstariffhub.ch | |
| Service operated | swisstariffhub.ch — API for Swiss dynamic electricity tariffs |
| Responsible for content | UltorX GmbH |
Free plan. No payment details needed.
By creating an account you accept the terms of service and the privacy policy.
This window closes in 10 s