HICP compared across countries
The same category, several entities, the same interval, rebased to a base of your choosing.
Rebasing is the point of this route, not a convenience. The published indices have 2015 = 100 as their base, so they answer „how much have prices risen since 2015" — rarely the question of someone making a comparison. Rebased to January 2020, the same data says something else, and more clearly: in December 2025 Romania is at 150.88 against 124.14 in the euro area, that is +50.9% against +24.1%. Every point comes with both values — nothing hidden, but the useful figure in plain sight.
HICP coverage sits at two levels. Fourteen entities have the whole COICOP tree (440–550 ECOICOP ver. 2 categories each, 371 present in all of them); the other fifteen have only the total index TOTAL, which is also the default category. A category requested for an entity that does not have it returns 404 with the list of those that do — not a silently missing series you might overlook.
The base month must exist for every entity requested. Bulgaria starts in December 1996, Croatia in December 1997, EU27 in December 1999. Rebasing on a month one entity does not have would mean different starting points — exactly the false comparison this route exists to prevent.
The series come ordered by total growth, descending: the order is the answer, not the order in which you typed the countries. variatie_totala is a level against the base, not an inflation rate.
Query parameters
TOTAL (the total index; CP00 is accepted as a synonym). Other categories exist for only fourteen entities.
max 32 car.
YYYY-MM.
e.g. 2020-01e.g. 2023-01e.g. 2022-01
YYYY-MM. Defaults to the last month all of them publish. At most 360 months.
e.g. 2024-12e.g. 2022-12
YYYY-MM. The month that becomes 100. Defaults to de_la.
e.g. 2020-01e.g. 2023-01e.g. 2022-01
?tari=RO,PL,EA). Codes as the source writes them: RO, EL, EA, EU27_2020.
e.g. RO,PL,EAe.g. RO,DEe.g. RO,BG,HU
How it behaves
- The same category, several entities, the same interval, rebased to a month you choose.
- Rebasing is the point of this route, not a convenience. The published indices use 2015 = 100, so they answer "how much have prices risen since 2015" — rarely the question of someone making a comparison. Rebased to January 2020, the same data says something else, and says it plainly: in December 2025 Romania sits at 150.88 against 124.14 for the euro area — +50.9% versus +24.1%. Every point carries both values: nothing hidden, but the useful figure in plain sight.
- HICP coverage comes in two tiers. Fourteen entities have the full COICOP tree — between 440 and 550 ECOICOP ver. 2 categories each, 371 present across all of them — while the other fifteen have only the total index
TOTAL, which is also the default category. A category requested for an entity that lacks it returns 404 with the list of those that have it: not a silently missing series you might overlook. - The base month must exist for every entity requested. Bulgaria starts in December 1996, Croatia in December 1997, EU27 in December 1999. Rebasing on a month one entity lacks would mean different starting points — exactly the false comparison this route exists to prevent. The refusal names the window they all share.
- The window may still begin before one entity does: each series then declares its own
de_la, andmeta.nota_inceputuriflags that they do not all start together. The only end that clamps silently is the right one, to the last month all of them publish. - Series come back sorted by total growth, descending — the order is the answer, not the order you listed the countries in.
variatie_totalais the rise in level against the base, in percent. It is not an inflation rate: for monthly and annual changes derived correctly from levels, see/hicp/variatie.
What it is for
- How much prices have risen in Romania against its neighbours or the euro area, from a chosen moment.
- Comparing one specific category — energy, food — across the countries that publish it.
- The raw material for a multi-country chart, already on a common base.
Response structure
baza.
meta.total_e_limita_de_jos is the word to switch on in code.
data is null and this says why. The window holds no values.
fara_date is prose and may be rephrased, this is not.
Response examples
{
"data": {
"categorie": "TOTAL",
"baza": "2020-01",
"de_la": "2020-01",
"pana_la": "2026-08",
"serii": [
{
"entitate": "RO",
"de_la": "2020-01",
"pana_la": "2026-08",
"puncte": 80,
"indice_baza": "110.09",
"indice_final_renormalizat": "157.55",
"variatie_totala": "57.55",
"valori": [
{
"luna": "2020-01",
"indice": "110.09",
"indice_renormalizat": "100.00"
}
]
}
]
},
"meta": {
"sursa": "Eurostat — HICP lunar (prc_hicp_minr, ECOICOP ver. 2), indici cu baza 2015 = 100.",
"entitati": 3,
"luni_interval": 80,
"acoperire": {
"EA": {
"de_la": "1996-01",
"pana_la": "2026-08"
},
"PL": {
"de_la": "1996-01",
"pana_la": "2026-08"
},
"RO": {
"de_la": "1996-01",
"pana_la": "2026-08"
}
},
"nota_renormalizare": "`indice` e cifra publicată, cu baza 2015 = 100. `indice_renormalizat` o raportează la luna din `baza`, care e întrebarea obişnuită a unei comparaţii: cât a crescut fiecare de la un moment ales.",
"nota_ordine": "Seriile vin ordonate descrescător după `variatie_totala` — ordinea e răspunsul, nu cea în care ai scris ţările.",
"nota_variatie": "`variatie_totala` e creşterea nivelului faţă de bază, în procente. NU e o rată de inflaţie anuală; pentru variaţii derivate corect din niveluri, vezi `/financiar/v1/hicp/variatie`.",
"nota_acoperire": "Paisprezece entităţi au arborele COICOP întreg; celelalte cincisprezece au doar `TOTAL`. `acoperire` dă intervalul fiecărei entităţi PENTRU CATEGORIA CERUTĂ.",
"categorii": "/financiar/v1/hicp/categorii"
}
}
{
"data": {
"categorie": "TOTAL",
"baza": "2023-01",
"de_la": "2023-01",
"pana_la": "2024-12",
"serii": [
{
"entitate": "RO",
"de_la": "2023-01",
"pana_la": "2024-12",
"puncte": 24,
"indice_baza": "136.61",
"indice_final_renormalizat": "111.97",
"variatie_totala": "11.97",
"valori": [
{
"luna": "2023-01",
"indice": "136.61",
"indice_renormalizat": "100.00"
}
]
}
]
},
"meta": {
"sursa": "Eurostat — HICP lunar (prc_hicp_minr, ECOICOP ver. 2), indici cu baza 2015 = 100.",
"entitati": 2,
"luni_interval": 24,
"acoperire": {
"DE": {
"de_la": "1996-01",
"pana_la": "2026-08"
},
"RO": {
"de_la": "1996-01",
"pana_la": "2026-08"
}
},
"nota_renormalizare": "`indice` e cifra publicată, cu baza 2015 = 100. `indice_renormalizat` o raportează la luna din `baza`, care e întrebarea obişnuită a unei comparaţii: cât a crescut fiecare de la un moment ales.",
"nota_ordine": "Seriile vin ordonate descrescător după `variatie_totala` — ordinea e răspunsul, nu cea în care ai scris ţările.",
"nota_variatie": "`variatie_totala` e creşterea nivelului faţă de bază, în procente. NU e o rată de inflaţie anuală; pentru variaţii derivate corect din niveluri, vezi `/financiar/v1/hicp/variatie`.",
"nota_acoperire": "Paisprezece entităţi au arborele COICOP întreg; celelalte cincisprezece au doar `TOTAL`. `acoperire` dă intervalul fiecărei entităţi PENTRU CATEGORIA CERUTĂ.",
"categorii": "/financiar/v1/hicp/categorii"
}
}
{
"data": {
"categorie": "TOTAL",
"baza": "2023-01",
"de_la": "2023-01",
"pana_la": "2024-12",
"serii": [
{
"entitate": "RO",
"de_la": "2023-01",
"pana_la": "2024-12",
"puncte": 24,
"indice_baza": "136.61",
"indice_final_renormalizat": "111.97",
"variatie_totala": "11.97",
"valori": [
{
"luna": "2023-01",
"indice": "136.61",
"indice_renormalizat": "100.00"
}
]
}
]
},
"meta": {
"sursa": "Eurostat — HICP lunar (prc_hicp_minr, ECOICOP ver. 2), indici cu baza 2015 = 100.",
"entitati": 3,
"luni_interval": 24,
"acoperire": {
"BG": {
"de_la": "1996-12",
"pana_la": "2026-08"
},
"HU": {
"de_la": "1996-01",
"pana_la": "2026-08"
},
"RO": {
"de_la": "1996-01",
"pana_la": "2026-08"
}
},
"nota_renormalizare": "`indice` e cifra publicată, cu baza 2015 = 100. `indice_renormalizat` o raportează la luna din `baza`, care e întrebarea obişnuită a unei comparaţii: cât a crescut fiecare de la un moment ales.",
"nota_ordine": "Seriile vin ordonate descrescător după `variatie_totala` — ordinea e răspunsul, nu cea în care ai scris ţările.",
"nota_variatie": "`variatie_totala` e creşterea nivelului faţă de bază, în procente. NU e o rată de inflaţie anuală; pentru variaţii derivate corect din niveluri, vezi `/financiar/v1/hicp/variatie`.",
"nota_acoperire": "Paisprezece entităţi au arborele COICOP întreg; celelalte cincisprezece au doar `TOTAL`. `acoperire` dă intervalul fiecărei entităţi PENTRU CATEGORIA CERUTĂ.",
"categorii": "/financiar/v1/hicp/categorii"
}
}
{
"data": {
"categorie": "TOTAL",
"baza": "2022-01",
"de_la": "2022-01",
"pana_la": "2022-12",
"serii": [
{
"entitate": "RO",
"de_la": "2022-01",
"pana_la": "2022-12",
"puncte": 12,
"indice_baza": "120.42",
"indice_final_renormalizat": "112.56",
"variatie_totala": "12.56",
"valori": [
{
"luna": "2022-01",
"indice": "120.42",
"indice_renormalizat": "100.00"
}
]
}
]
},
"meta": {
"sursa": "Eurostat — HICP lunar (prc_hicp_minr, ECOICOP ver. 2), indici cu baza 2015 = 100.",
"entitati": 2,
"luni_interval": 12,
"acoperire": {
"EA": {
"de_la": "1996-01",
"pana_la": "2026-08"
},
"RO": {
"de_la": "1996-01",
"pana_la": "2026-08"
}
},
"nota_renormalizare": "`indice` e cifra publicată, cu baza 2015 = 100. `indice_renormalizat` o raportează la luna din `baza`, care e întrebarea obişnuită a unei comparaţii: cât a crescut fiecare de la un moment ales.",
"nota_ordine": "Seriile vin ordonate descrescător după `variatie_totala` — ordinea e răspunsul, nu cea în care ai scris ţările.",
"nota_variatie": "`variatie_totala` e creşterea nivelului faţă de bază, în procente. NU e o rată de inflaţie anuală; pentru variaţii derivate corect din niveluri, vezi `/financiar/v1/hicp/variatie`.",
"nota_acoperire": "Paisprezece entităţi au arborele COICOP întreg; celelalte cincisprezece au doar `TOTAL`. `acoperire` dă intervalul fiecărei entităţi PENTRU CATEGORIA CERUTĂ.",
"categorii": "/financiar/v1/hicp/categorii"
}
}
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 | baza_indisponibila | The base month is missing for someone; the response gives the shared window. interval_prea_lung beyond 360 months. Fewer than two entities, or a malformed month. categorie_indisponibila — the category is missing for one of the entities; the response lists those that have it. |
| 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": "baza_indisponibila",
"mesaj": "The base month is missing for someone; the response gives the shared window. interval_prea_lung beyond 360 months. Fewer than two entities, or a malformed month. categorie_indisponibila — the category is missing for one of the entities; the response lists those that have it.",
"detalii": {
"categorie": [
"The value sent does not satisfy the parameter rule."
]
}
}
}