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 returns200with an empty list — which does NOT mean the market had no activity, but that the period has not been imported yet. Thegolurifield 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
senzone: 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
}
}
}
GEThttps://oneapi.ro/api/energie/v1/piata/consum?de_la=2026-09-05&pana_la=2026-09-06
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2026-09-04 21: 00: 00",
"pana_la": "2026-09-05 21: 00: 00",
"fara_date": null,
"serie": [
{
"moment": "2026-09-04T21: 00: 00+03: 00",
"rezolutie_min": 15,
"valoare_mw": 6908
}
],
"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": 97,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/energie/v1/piata/consum?de_la=2026-09-01&pana_la=2026-09-08
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2026-08-31 21: 00: 00",
"pana_la": "2026-09-07 21: 00: 00",
"fara_date": null,
"serie": [
{
"moment": "2026-08-31T21: 00: 00+03: 00",
"rezolutie_min": 15,
"valoare_mw": 7156
}
],
"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": 673,
"pagini": 2
}
}
}
GEThttps://oneapi.ro/api/energie/v1/piata/consum?de_la=2024-06-15
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2024-06-14 21: 00: 00",
"pana_la": "2026-10-06 20: 39: 53",
"fara_date": null,
"serie": [
{
"moment": "2024-06-14T21: 00: 00+03: 00",
"rezolutie_min": 15,
"valoare_mw": 6717
}
],
"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": 80503,
"pagini": 162
}
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 422 | validare | The window is reversed. |
| 429 | cota_depasita | The 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."
]
}
}
}