Energie v1 / Piaţa de energie
Preţul energiei, interval cu interval
Seria preţului pe piaţa pentru ziua următoare, interval cu interval, în EUR/MWh — la sfert de oră de când rezoluţia s-a schimbat, la oră înainte. Răspunsul spune ce rezoluţie a avut fiecare bucată.
GET
https://oneapi.ro/api/energie/v1/piata/preturi
Parametri de interogare
NumeTipDescriereValori acceptate
de_laopțional
string | null
Începutul ferestrei. Implicit acum 7 zile.
ex. 2026-09-01
pana_laopțional
string | null
Sfârşitul ferestrei. Implicit acum.
ex. 2026-09-07
zonaopțional
string | null
Codul EIC al zonei de ofertare. Implicit România. Singura zonă importată azi e
10YRO-TEL------P; orice altă valoare dă 422, nu o serie goală. Lista e în /piata/acoperire, la zone_ofertare.
10YRO-TEL------P
per_paginaopțional
text
Câte intervale pe pagină, până la 2000.
ex. 96
paginaopțional
text
Pagina, numărată de la 1.
ex. 1
Cum se comportă
- Istoricul are un gol, şi el se vede la
/piata/acoperire. Seria începe în 2015, dar importul de istoric e încă în curs: în prezent lipsesc ~28-30 de luni (2015-03 → 2017-08). O cerere care cade în gol întoarce200cu listă goală — ceea ce NU înseamnă că piaţa n-a avut activitate, ci că perioada n-a fost adusă încă. Câmpulgoluridin acoperire listează exact lunile care lipsesc, calculat din date, deci se micşorează singur pe măsură ce istoricul se completează. - Seria poate depăşi momentul prezent. Preţul de zi-următoare se publică în avans, deci ultimul interval din răspuns e adesea o oră care încă nu s-a consumat. Nu e o eroare şi nu e o prognoză de-a noastră: e cotaţia fermă, publicată de bursă înainte de livrare. Consecinţa practică: o fereastră care se termină „acum" poate amesteca ore deja consumate cu ore încă nelivrate, iar o medie peste ea le pune la un loc. Dacă ai nevoie strict de realizat, taie fereastra la ora curentă.
- Preţul de zi-următoare al zonei de ofertare, aşa cum îl publică ENTSO-E Transparency Platform. Nu e preţul din factură: peste el se adaugă tarifele de reţea, certificatele şi marja furnizorului.
- Preţul poate fi negativ şi rămâne aşa în răspuns. Se întâmplă când producţia regenerabilă depăşeşte cererea şi cineva plăteşte ca să scape de energie. Dacă tai valorile la zero, falsifici media zilei.
- Rezoluţia nu e constantă. Piaţa a trecut la sfertul de oră, iar seriile mai vechi rămân orare — de aceea fiecare interval îşi poartă
rezolutie_min, iar orice medie calculată de noi e ponderată cu durata. O medie aritmetică peste amestec dă un rezultat greşit, care arată plauzibil. sumarse calculează pe toată fereastra, nu pe pagina returnată — altfel paginarea ar schimba media.
La ce folosește
- Indexezi un contract de furnizare la preţul pieţei şi ai nevoie de seria exactă, nu de o medie.
- Alegi ora din zi în care porneşti un consum flexibil — încărcarea unei flote, o pompă de căldură, un proces industrial.
- Arăţi într-un grafic cât a costat energia ieri, cu tot cu intervalele în care preţul a fost negativ.
Structura răspunsului
CâmpTipDescriere
data.serie[].moment
string
Începutul intervalului, ISO 8601 în UTC.
data.serie[].rezolutie_min
integer
15 sau 60.
data.serie[].pret_eur_mwh
number
Preţul intervalului. Poate fi negativ.
data.sumar
object
Statistica întregii ferestre, nu doar a paginii: minim, maxim, medie ponderată, câte intervale au avut preț negativ.
data.sumar.medie_ponderata_eur_mwh
number
Media pe fereastră, ponderată cu durata.
data.zona
string
Codul EIC al zonei de ofertare pentru care e seria.
data.de_la
string
Începutul ferestrei cerute, în UTC.
data.pana_la
string
Sfârșitul ferestrei cerute, în UTC.
data.fara_date
null
Prezent (nenul) DOAR când seria e goală, şi spune DE CE:
motiv e dupa_acoperire (fereastra cerută e după ultimul punct importat), inainte_de_acoperire sau gol_in_acoperire (lipsă în mijlocul istoricului). acoperire dă capetele reale ale seriei. ⚠️ O serie goală NU înseamnă că piaţa n-a avut activitate.
data.sumar.intervale_cu_pret_negativ
integer
Câte intervale au avut preț sub zero. Nu e o anomalie de date.
data.sumar.ore_acoperite
number
Câte ore de piață acoperă intervalele din fereastră — arată golurile fără să le cauți.
data.observatie
string
Cum se citesc prețurile negative și amestecul de rezoluții.
data.sursa
object
ENTSO-E Transparency Platform, cu atribuirea obligatorie.
meta.paginare.pagina
integer
Pagina curentă, numărată de la 1.
meta.paginare.per_pagina
integer
Câte înregistrări are o pagină.
meta.paginare.total
integer
Totalul înregistrărilor care se potrivesc, dincolo de pagina curentă.
meta.paginare.pagini
integer
Câte pagini are lista.
Exemple de răspuns
GEThttps://oneapi.ro/api/energie/v1/piata/preturi
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2026-09-29 20: 39: 50",
"pana_la": "2026-10-06 20: 39: 50",
"fara_date": null,
"sumar": {
"intervale": 593,
"primul": "2026-09-29T20: 45: 00+03: 00",
"ultimul": "2026-10-06T00: 45: 00+03: 00",
"minim_eur_mwh": 0.69,
"maxim_eur_mwh": 435.08,
"medie_ponderata_eur_mwh": 170.1,
"intervale_cu_pret_negativ": 0,
"ore_acoperite": 148.25
},
"serie": [
{
"moment": "2026-09-29T20: 45: 00+03: 00",
"rezolutie_min": 15,
"pret_eur_mwh": 242.65
}
],
"observatie": "Prețurile pot fi NEGATIVE — se întâmplă când producția regenerabilă depășește cererea. Nu e o eroare de date. `rezolutie_min` spune cât durează intervalul: seriile recente sunt la 15 minute, cele vechi la o oră.",
"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": 593,
"pagini": 2
}
}
}
GEThttps://oneapi.ro/api/energie/v1/piata/preturi?de_la=2026-09-05&pana_la=2026-09-06&per_pagina=96
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2026-09-04 21: 00: 00",
"pana_la": "2026-09-05 21: 00: 00",
"fara_date": null,
"sumar": {
"intervale": 97,
"primul": "2026-09-04T21: 00: 00+03: 00",
"ultimul": "2026-09-05T21: 00: 00+03: 00",
"minim_eur_mwh": 12.77,
"maxim_eur_mwh": 289.45,
"medie_ponderata_eur_mwh": 142.95,
"intervale_cu_pret_negativ": 0,
"ore_acoperite": 24.25
},
"serie": [
{
"moment": "2026-09-04T21: 00: 00+03: 00",
"rezolutie_min": 15,
"pret_eur_mwh": 281.83
}
],
"observatie": "Prețurile pot fi NEGATIVE — se întâmplă când producția regenerabilă depășește cererea. Nu e o eroare de date. `rezolutie_min` spune cât durează intervalul: seriile recente sunt la 15 minute, cele vechi la o oră.",
"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": 96,
"total": 97,
"pagini": 2
}
}
}
GEThttps://oneapi.ro/api/energie/v1/piata/preturi?de_la=2026-10-01&pana_la=2026-10-02
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2026-09-30 21: 00: 00",
"pana_la": "2026-10-01 21: 00: 00",
"fara_date": null,
"sumar": {
"intervale": 97,
"primul": "2026-09-30T21: 00: 00+03: 00",
"ultimul": "2026-10-01T21: 00: 00+03: 00",
"minim_eur_mwh": 10.56,
"maxim_eur_mwh": 314.78,
"medie_ponderata_eur_mwh": 163.47,
"intervale_cu_pret_negativ": 0,
"ore_acoperite": 24.25
},
"serie": [
{
"moment": "2026-09-30T21: 00: 00+03: 00",
"rezolutie_min": 15,
"pret_eur_mwh": 247.33
}
],
"observatie": "Prețurile pot fi NEGATIVE — se întâmplă când producția regenerabilă depășește cererea. Nu e o eroare de date. `rezolutie_min` spune cât durează intervalul: seriile recente sunt la 15 minute, cele vechi la o oră.",
"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/preturi?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: 50",
"fara_date": null,
"sumar": {
"intervale": 46876,
"primul": "2024-06-14T21: 00: 00+03: 00",
"ultimul": "2026-10-06T00: 45: 00+03: 00",
"minim_eur_mwh": -100.63,
"maxim_eur_mwh": 1021.61,
"medie_ponderata_eur_mwh": 118.97,
"intervale_cu_pret_negativ": 914,
"ore_acoperite": 20236
},
"serie": [
{
"moment": "2024-06-14T21: 00: 00+03: 00",
"rezolutie_min": 60,
"pret_eur_mwh": 140.78
}
],
"observatie": "Prețurile pot fi NEGATIVE — se întâmplă când producția regenerabilă depășește cererea. Nu e o eroare de date. `rezolutie_min` spune cât durează intervalul: seriile recente sunt la 15 minute, cele vechi la o oră.",
"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": 46876,
"pagini": 94
}
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 422 | validare | Fereastra e inversată ori parametrii de paginare depăşesc limitele. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.
{
"eroare": {
"cod": "validare",
"mesaj": "Fereastra e inversată ori parametrii de paginare depăşesc limitele.",
"detalii": {
"de_la": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}