oneapi
Sign in
Energie v1 / Piaţa de energie

Bidding zone load

The bidding zone's actual load, in MW for each interval — real consumption, not the forecast.

GET
https://oneapi.ro/api/energie/v1/piata/consum

Query parameters

NameTypeDescriptionAccepted values
de_laoptional string | null Start of the window. Defaults to 7 days ago. e.g. 2026-09-05
pana_laoptional string | null End of the window. Defaults to now. e.g. 2026-09-06
zonaoptional string | null The EIC code of the bidding zone. Defaults to Romania. The only zone imported today is 10YRO-TEL------P; any other value returns 422, not an empty series. The list is in /piata/acoperire, under zone_ofertare. 10YRO-TEL------P
per_paginaoptional text Intervals per page, up to 2000. e.g. 96
paginaoptional text The page, counted from 1. e.g. 1

How it behaves

  • The history has a gap, and it is visible at /piata/acoperire. The series starts in 2015, but the historical import is still in progress: about 28-30 months are currently missing (2015-03 → 2017-08). A request falling inside the gap returns 200 with an empty list — which does NOT mean the market had no activity, but that the period has not been imported yet. The goluri field in the coverage route lists exactly which months are missing, computed from the data, so it shrinks on its own as the history fills in.
  • This is the actual total load of the bidding zone, not the forecast published in advance. They are two different series at the source, and they diverge precisely on the interesting days.
  • As with generation, the value is average power over the interval. Energy comes from multiplying by duration — the summary route gives it ready-made.
  • The figure is not comparable with the load in the sen zone: that is an instantaneous Transelectrica reading, this is the interval average, from a different source with a different definition.

What it is for

  • Compare the load curve with the price curve, to see where the peaks form.
  • Normalise your own consumption against national load, for an efficiency report.
  • Feed a forecasting model with actual load rather than the forecast.

Response structure

FieldTypeDescription
data.serie[].valoare_mw number Consumul, ca putere medie pe interval, în MW.
data.serie[].rezolutie_min integer Durata intervalului, în minute.
data.serie[].moment string Start of the interval, in UTC.
data.fara_date null Present (non-null) ONLY when the series is empty, and says WHY: motiv is dupa_acoperire (the window is past the last imported point), inainte_de_acoperire, or gol_in_acoperire (a hole inside the history). acoperire gives the real ends of the series. ⚠️ An empty series does NOT mean the market had no activity.
data.observatie string That this is actual load, not the forecast.
data.sursa object ENTSO-E Transparency Platform, with the required attribution.
meta.paginare.pagina integer Current page, counted from 1.
meta.paginare.per_pagina integer How many records a page holds.
meta.paginare.total integer Total matching records, beyond the current page.
meta.paginare.pagini integer How many pages the list has.

Response examples

GEThttps://oneapi.ro/api/energie/v1/piata/consum
{
    "data": {
        "zona": "10YRO-TEL------P",
        "de_la": "2026-09-29 20: 39: 53",
        "pana_la": "2026-10-06 20: 39: 53",
        "fara_date": null,
        "serie": [
            {
                "moment": "2026-09-29T20: 45: 00+03: 00",
                "rezolutie_min": 15,
                "valoare_mw": 6879
            }
        ],
        "observatie": "E consumul REALIZAT al zonei de ofertare, nu prognoza. Putere medie pe interval, în MW.",
        "sursa": {
            "nume": "ENTSO-E Transparency Platform",
            "url": "https://transparency.entsoe.eu",
            "atribuire": "Date din ENTSO-E Transparency Platform.",
            "licenta": "Reutilizare permisă cu ATRIBUIRE obligatorie către Transparency Platform. Drepturile nu sunt sublicențiabile.",
            "observatie": "Zona `piata` e seria oficială europeană; zona `sen` e instantaneul Transelectrica. Au surse, pași și definiții diferite — cifrele lor nu se compară direct."
        }
    },
    "meta": {
        "paginare": {
            "pagina": 1,
            "per_pagina": 500,
            "total": 152,
            "pagini": 1
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareThe window is reversed.
429cota_depasitaThe plan's monthly quota has been exceeded (see Retry-After).

All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "The window is reversed.",
        "detalii": {
            "de_la": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}