Live · 9 EVU · UTC
Swiss Dynamic Electricity Tariffs — real time
One normalized API for all Swiss dynamic electricity tariffs. Updated daily, 96 × 15-min slots per day, three price components per slot.
9Active EVU
96Slots / day
3Price components
UTCNormalized timezone
CHFCurrency / kWh
What we offer
Everything you need to integrate Swiss dynamic tariffs
Real-time prices
Energy, grid and residual prices updated daily. 96 × 15-min UTC slots per tariff.
Normalized API
Single REST API for all Swiss EVU. Same format, same schema, regardless of provider.
9 providers, one call
CKW, EKZ, AEM, Groupe E, Primeo, AVAG, ELAG and more — all in a single endpoint.
Secure API key access
Personal API key with rate limiting, single-session enforcement and plan-based access control.
Smart analytics
Daily summary, monthly stats, Smart view with best/worst hours and interactive dashboard.
Multilingual dashboard
Full interface in Italian, German, French and English. Interactive map of Swiss municipalities.
Pricing
Simple, transparent plans
Free
CHF 0/ month
For personal use and exploration. Pick one tariff and get full access to it.
- 1 tariff of your choice (permanent)
- Today's prices — all 96 slots
- Smart view for your tariff
- Interactive map (your zone)
- 100 API requests / day
- All tariffs simultaneously
- Historical data (unlimited)
- Monthly summary & metrics
Recommended
Pro
CHF 19/ month
For companies, aggregators and home-automation systems.
- All 9+ tariffs simultaneously
- Full historical data
- Smart view — all tariffs
- Interactive map — all zones
- 2 000 API requests / day
- Monthly summary & /metrics
- Priority support
Seleziona tariffa
—
loading...
—
—
—
Upgrade to see slot details
Log in or upgrade to Pro to inspect individual 15-min price slots.
Coverage map
Dynamic tariff providers by Swiss municipality · source: ElCom 2026
Loading municipality boundaries…
—
—
Grey municipalities have no dynamic tariff available in 2026.
457 out of 2,148 Swiss municipalities covered. Source: ElCom open data.
API Access
Log in to access the documentation and live playground.
Request API Access
Free tier: 500 requests/day.
API Reference
GET
/api/v1/tariffs
🔑 X-API-Key required
✓ Free & Pro
Parameters
No parameters — returns all tariffs in a single call.
Response fields
| tariff_id | string | Unique slug identifier. ckw_home_dynamic |
| tariff_name | string | Human-readable name. CKW Dynamic Home |
| provider_name | string | Swiss energy utility (EVU). CKW |
| zip_ranges | integer[] | Swiss postal codes served. |
| daily_update_time_utc | string | Daily price refresh time (UTC). 17:30 |
| datetime_available_from_utc | datetime | First UTC datetime with data. |
| valid_until_utc | datetime|null | null if currently active. |
| time_resolution_minutes | integer | Slot resolution in minutes. 15 |
| sgr_compliant | boolean | SmartGridready (SGr) certified. |
Code sample
Response
[
{
"tariff_id": "ckw_home_dynamic",
"tariff_name": "CKW Dynamic Home",
"provider_name": "CKW",
"zip_ranges": [6000, 6002, 6003],
"daily_update_time_utc": "11:05",
"datetime_available_from_utc": "2026-01-01T00:00:00+00:00",
"valid_until_utc": null,
"time_resolution_minutes": 15,
"sgr_compliant": true
}
]
GET
/api/v1/prices
🔑 X-API-Key required
✓ Free & Pro
Query parameters
| tariff_id | string required | Tariff identifier. |
| start_time | datetime required | Start of window in UTC. 2026-07-11T00:00:00Z |
| end_time | datetime optional | End of window in UTC. Defaults to start_time + 24 h. |
Response fields
| tariff_id | string | Tariff slug identifier.ckw_home_dynamic |
| date | string | Swiss local date of the data.2026-07-11 |
| 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). |
Timezone & DST
Plan behaviour
/api/v1/prices?tariff_id=...&start_time=2026-07-11T00:00:00Z
Live tariff:
Open ↗
Code sample
Response example
{
"tariff_id": "ckw_home_dynamic",
"date": "2026-07-11",
"start_time": "2026-07-11T23:00:00+00:00",
"end_time": "2026-07-11T23:00:00+00:00",
"slot_count": 96,
"energy_price_utc": [
{"2026-06-18T22:00:00+00:00": 0.0842},
{"2026-06-18T22:15:00+00:00": 0.0791},
... 94 more slots
],
"grid_price_utc": [
{"2026-06-18T22:00:00+00:00": 0.0412},
... 95 more slots
],
"residual_price_utc": [
{"2026-06-18T22:00:00+00:00": 0.0051},
... 95 more slots
]
}
Try it now
tariff_id
date
GET
/api/v1/prices/all
all tariffs
🔑 X-API-Key required
⚡ Pro only
Query parameters
| start_time | datetime required | Start of window in UTC. 2026-07-11T00:00:00Z |
| end_time | datetime optional | End of window in UTC. Defaults to start_time + 24 h. |
Response structure
Response is a JSON object keyed by tariff_id.
| 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. |
Plan behaviour
GET /api/v1/prices/all?start_time=2026-07-11T00:00:00Z
Code sample
Response example
{
"ckw_home_dynamic": {
"date": "2026-07-11",
"slot_count": 96,
"energy_price_utc": [
{"2026-06-18T22:00:00+00:00": 0.0842},
... 95 more
],
"grid_price_utc": [...],
"residual_price_utc": [...]
},
"ekz_dynamisch": {
"date": "2026-07-11",
"slot_count": 96,
"energy_price_utc": [...],
"grid_price_utc": [...],
"residual_price_utc": [...]
},
... all active tariffs
}