EnergyLive API Documentation

Overview

The EnergyLive API provides programmatic access to Day-Ahead Market (DAM) data stored in the EnergyLive database, so that it can be integrated into your own applications, models and reports.

All responses are JSON. All dates are in the format YYYY-MM-DD and refer to the CET/CEST delivery day (Europe/Berlin).

Base URL

https://www.energylive.cloud/api/v1/

Authentication

Every request must be authenticated with your personal API token. You can generate (and regenerate) the token on your User Account page.

Send the token in one of the following ways:

Keep your token secret. If it may have been exposed, regenerate it from your User Account page.

Subscription access

SubscriptionCurrent data (today & tomorrow)Historical dataHistorical data of Italy (GME)
BasicYesNoNo
Full excluding GMEYesYesNo
Full (with GME)YesYesYes

"Historical" means any delivery day before today (CET). Requests for historical data without the required subscription return an error (see Error handling). With area=all, Italian zones are omitted from historical results when the subscription does not include GME data.

Endpoints

1. Get DAM Results

GET /dam-results

Returns the Day-Ahead Market results for all areas, as they appear on the platform's home page: base, peak and off-peak averages of the delivery day, plus month-to-date and year-to-date averages. By default the latest delivery day; with date, the results of an earlier day.

Parameters:

NameRequiredDescription
dateNoDelivery day (YYYY-MM-DD, CET). Default: the latest available delivery day. Days before today are historical data (Full subscriptions; Italian zones only with GME data, otherwise omitted). Month-to-date and year-to-date are computed up to that day.

Examples:

https://www.energylive.cloud/api/v1/dam-results?access-token=XXXXXXXX
https://www.energylive.cloud/api/v1/dam-results?access-token=XXXXXXXX&date=2025-01-15

Response:

{
    "date": "2026-09-28",
    "results": [
        {"code": "gr", "name": "Greece (GR)", "base": 135.108, "peak": 82.014, "offpeak": 188.201, "mtd": 159.208, "ytd": 105.969},
        ...
    ],
    "currency": "EUR",
    "rate_GBP": 0.84,
    "updated_CET": "2026-09-27 13:05:12",
    "updated_ts": 1790507112
}

2. Get Daily Base and Peak Averages

GET /daily-avg

Returns daily base and peak average prices, with the relative change from the previous day, for up to three areas.

Parameters:

NameRequiredDescription
areaYesUp to 3 areas separated by commas, e.g. GR,BG,RO. See Available areas (price areas).
dateNoDelivery day (YYYY-MM-DD). If omitted: Basic subscriptions get the latest available day; Full subscriptions get every day from the 1st of the current month up to the latest available day.

Examples:

https://www.energylive.cloud/api/v1/daily-avg?access-token=XXXXXXXX&area=GR,BG
https://www.energylive.cloud/api/v1/daily-avg?access-token=XXXXXXXX&area=BG,RO,HU&date=2022-11-10

Response:

[
    {"area": "GR", "date": "2026-09-28", "base": 135.11, "base_change": 0.328, "peak": 82.01, "peak_change": 1.1843},
    ...
]

3. Get Time Series (prices and volumes)

GET /

Returns DAM prices and/or volumes for the requested areas and delivery period.

Since the move of the European Day-Ahead Market to a 15-minute Market Time Unit (1 October 2025), data is returned in 15-minute resolution (96 values per day; 92/100 on daylight-saving change days). Use averaging=hour to receive hourly averages instead. Earlier periods are available in the resolution in which they were published (hourly).

Parameters:

NameRequiredDescription
areaYesAreas separated by commas (e.g. BG,GR,IT_PUN,HR), or all.
paramYesprice, volume, or all (comma separated).
fromNoFirst delivery day (YYYY-MM-DD, CET). Default: the latest available delivery day.
toNoLast delivery day (YYYY-MM-DD, CET), inclusive. Default: same as from.
averagingNohour returns hourly averages of the 15-minute values (the minute_local field is then omitted).
pageNoPage number for results larger than 1,000 rows (see Pagination). Default: 1.

Examples:

https://www.energylive.cloud/api/v1?access-token=XXXXXXX&area=BG,RO,GR,DE-LU,HU&param=price&from=2022-05-01&to=2022-05-10
https://www.energylive.cloud/api/v1?access-token=XXXXXXX&area=GR&param=price,volume&from=2026-09-01&to=2026-09-07&averaging=hour
https://www.energylive.cloud/api/v1?access-token=XXXXXXX&area=all&param=all
https://www.energylive.cloud/api/v1?access-token=XXXXXXX&area=all&param=price&page=2

Response:

[
    {"name": "GR_price", "date_local": "2026-09-28", "hour_local": 1, "minute_local": 0,  "datetime_CET": "2026-09-28 00:00:00", "value": 192.07},
    {"name": "GR_price", "date_local": "2026-09-28", "hour_local": 1, "minute_local": 15, "datetime_CET": "2026-09-28 00:15:00", "value": 188.72},
    ...
]

Pagination

The time-series endpoint returns at most 1,000 rows per request. Always check the following response headers and request the next pages with page=2, page=3, … until all rows have been received:

HeaderDescription
X-Pagination-Total-CountTotal number of rows
X-Pagination-Page-CountTotal number of pages
X-Pagination-Current-PageCurrent page
X-Pagination-Per-PageRows per page (1000)
LinkURLs of the self, first, prev, next and last pages

For example, one day of area=all&param=price in 15-minute resolution is about 4,000 rows (5 pages).

Available areas

DataAreas / bidding zones
Prices (param=price, /daily-avg) GR, BG, RO, HU, SK, CZ, RS, TR, HR, SI, FR, CH, AT, DE-LU, ES, PT, BE, GB, NL, IE, PL, FI, NO1, NO2, NO3, NO4, NO5, SE1, SE2, SE3, SE4, DK1, DK2, NI, AL, KS, ME, MK,
IT_PUN, IT_NAT, IT_CNOR, IT_CSUD, IT_NORD, IT_SARD, IT_SICI, IT_SUD, IT_CALA
Volumes (param=volume) GR, BG, RO, HU, RS, TR, HR, SI, FR, CH, AT, DE-LU, ES-PT, BE, GB, NL, PL, NI, AL, KS, ME, MK,
IT_TOTAL, IT_NAT, IT_CNOR, IT_CSUD, IT_NORD, IT_SARD, IT_SICI, IT_SUD, IT_CALA

Error handling

Request errors (invalid parameters, subscription restrictions, no data) are returned with HTTP status 200 and the following JSON body. Check the status field of the body:

{
    "name": "Bad Request",
    "message": "You do not have access to historical data.",
    "code": 0,
    "status": 400
}
statusmessageCause
400Error in area, parameters, processType combination.Unknown area or param value
400Invalid from / to / date. Expected format YYYY-MM-DD.Invalid date
400No areas found.Unknown area in /daily-avg
400You can select up to 3 areas.More than 3 areas in /daily-avg
400You do not have access to historical data.Historical data not included in the subscription
400You do not have access to historical data of Italy.Italian historical data not included in the subscription
404Please try again later. ("name": "Data not available")Data temporarily unavailable
404No results for YYYY-MM-DD. ("name": "Data not available")No prices for the requested date in /dam-results (e.g. a future day)

The following errors are returned with the corresponding HTTP status code and the same body structure:

HTTP statusCause
400 Bad RequestA required parameter is missing (e.g. Missing required parameters: area)
401 UnauthorizedMissing or invalid token
403 ForbiddenThe account has no active subscription, or the current Terms of Use and Privacy Notice have not been accepted (log in at www.energylive.cloud to accept them)
429 Too Many RequestsRate limit exceeded, or too many requests with an invalid or missing token from the same IP address (blocked for 15 minutes, see the Retry-After header)

Rate limiting

The API allows 60 requests per minute per account. Exceeding this limit results in a 429 Too Many Requests response; wait a few seconds and retry.

Requests with an invalid or missing token are limited per IP address: after 10 failed requests within one minute, all requests from that IP address receive 429 Too Many Requests for 15 minutes (see the Retry-After header). Do not retry requests that return 401; check the token instead.