euenergy APIeuenergy.live ↗
Access day-ahead and historical electricity prices for all European countries and bidding zones via the euenergy.live API. Includes load data and city listings.
What is the euenergy API?
The euenergy.live API exposes 5 endpoints covering day-ahead and historical electricity prices across all European countries and bidding zones, including multi-zone markets like Norway (NO1–NO5), Sweden (SE1–SE4), and Denmark (DK1–DK2). get_europe_prices_by_date returns EUR/MWh prices and day-over-day change percentages for every tracked zone in a single call, while get_country_price_history provides 30 days of daily price and load data per zone.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/c74b9239-02cc-43eb-8380-260c5e2eb628/get_all_countries_list' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace euenergy-live-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: European Electricity Prices — bounded, re-runnable."""
from parse_apis.european_electricity_prices_api__euenergy_live_ import (
EuEnergy, CountryCode, CountryNotFound
)
client = EuEnergy()
# List all available countries/bidding zones (capped).
for country in client.countries.list(limit=5):
print(country.code, country.name)
# Get today's Europe-wide price snapshot and inspect top prices.
snapshot = client.europesnapshots.get()
print(snapshot.date, snapshot.display_date)
for price in snapshot.prices[:3]:
print(price.country_code, price.country_name, price.price_eur_mwh, price.change_pct)
# Drill into one country's 30-day price history via constructible + sub-resource.
austria = client.country(CountryCode.AT)
for entry in austria.prices.list(limit=3):
print(entry.date, entry.price_eur_mwh, entry.load_mw, entry.is_day_ahead)
# List cities in Austria with dedicated price pages.
for city in austria.cities.list(limit=3):
print(city.name, city.city_slug, city.path)
# Fetch bulk historical prices across all zones for a date range.
bulk = client.bulkpricehistories.get(start_date="2026-06-09", end_date="2026-06-11", limit=3)
print(bulk.start_date, bulk.end_date)
# Typed error handling: attempt to fetch an invalid zone.
try:
bad = client.country("XX")
for _ in bad.prices.list(limit=1):
pass
except CountryNotFound as exc:
print(f"Not found: {exc.country_code}")
print("exercised: countries.list / europesnapshots.get / prices.list / cities.list / bulkpricehistories.get / CountryNotFound")
Returns all European countries and bidding zones with their codes and names. Multi-zone countries (Norway NO1-5, Sweden SE1-4, Denmark DK1-2) appear once per zone. Use the returned codes as input to other endpoints.
No input parameters required.
{
"type": "object",
"fields": {
"countries": "array of objects with code (string, zone/country code e.g. AT, NO1, DE-LU) and name (string, e.g. Austria, Norway)"
},
"sample": {
"data": {
"countries": [
{
"code": "AT",
"name": "Austria"
},
{
"code": "BE",
"name": "Belgium"
},
{
"code": "DE-LU",
"name": "Germany"
},
{
"code": "NO1",
"name": "Norway"
},
{
"code": "SE3",
"name": "Sweden"
}
]
},
"status": "success"
}
}About the euenergy API
Country and Zone Coverage
get_all_countries_list returns every supported country and bidding zone as an array of objects with a code field (e.g. AT, DE-LU, NO1, SE3) and a name field. Countries with multiple bidding zones appear as separate entries per zone. The codes returned here are the required input for every other endpoint, so this is the right starting point for any integration.
Daily and Historical Prices
get_europe_prices_by_date accepts an optional date parameter in YYYY-MM-DD format and returns the prices array with country_name, country_code, price_eur_mwh, change_pct, and an is_day_ahead boolean for every tracked zone. Omitting the date returns today's data. For zone-level depth, get_country_price_history takes a country_code and returns 30 days of entries including price_eur_mwh, price_eur_kwh, load_mw, change_pct, and is_day_ahead per day, along with latest_price_eur_kwh and latest_price_eur_mwh as formatted strings.
Bulk Historical Data
get_bulk_historical_prices covers a date range defined by start_date and end_date (both YYYY-MM-DD) with an optional limit on the number of days fetched per call. The response is organized as history_by_country, an object keyed by country code where each value is an array of {date, price_eur_mwh, change_pct} records. This structure makes it straightforward to build time-series datasets across all zones simultaneously.
City-Level Listings
get_country_cities_list accepts a country_code and returns a cities array with name, city_slug, country_slug, and path for each city that has a dedicated price page. Bidding-zone codes map to the parent country's city list, so NO1 through NO5 all resolve against Norway's city index.
The euenergy API is a managed, monitored endpoint for euenergy.live — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when euenergy.live changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official euenergy.live API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track day-ahead electricity price changes across all European bidding zones for a given date using
get_europe_prices_by_date. - Build a 30-day price trend dashboard per zone using the
load_mwandprice_eur_mwhfields fromget_country_price_history. - Compile multi-country time-series datasets for energy market analysis via
get_bulk_historical_priceswith a custom date range. - Identify the cheapest European zones on any given day by sorting the
pricesarray fromget_europe_prices_by_datebyprice_eur_mwh. - Alert on large day-over-day price swings by monitoring the
change_pctfield across zones. - Enumerate city-level electricity price pages for a country using
get_country_cities_listto build regional landing pages or lookup tools. - Validate or backfill missing zone codes in an existing dataset using
get_all_countries_list.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does euenergy.live have an official developer API?+
What does `get_country_price_history` return and how far back does it go?+
date, price_eur_mwh, price_eur_kwh, load_mw, change_pct, and is_day_ahead. The response also includes latest_price_eur_kwh and latest_price_eur_mwh as pre-formatted strings. History beyond 30 days is not available from this endpoint; get_bulk_historical_prices with a custom date range covers longer windows.Does the bulk historical endpoint return intraday or hourly prices?+
get_bulk_historical_prices returns one daily price per zone per day (price_eur_mwh and change_pct). Intraday or hourly granularity is not currently exposed by any endpoint in this API. You can fork the API on Parse and revise it to add an hourly breakdown endpoint if the source exposes that data.Are city-level electricity prices available, or only country and zone-level data?+
get_country_cities_list returns the list of cities with dedicated price pages (name, slug, and path), but the current endpoints do not return the actual price values for individual cities. Coverage is at the country and bidding-zone level for price data. You can fork the API on Parse and revise it to add a city-price endpoint using the slugs returned by get_country_cities_list.How does the `limit` parameter in `get_bulk_historical_prices` interact with the date range?+
limit caps the number of days fetched within the start_date to end_date window. If the range spans 60 days but limit is set to 10, only 10 days of data are returned. The actual last day fetched is reported back in the end_date field of the response. Omitting limit fetches the full range up to the endpoint's internal maximum.