oneapi
Sign in
Mediu v1 / Mediu

Limit value exceedances

How many days each station exceeded the legal threshold for a pollutant, over a period.

GET
https://oneapi.ro/api/mediu/v1/aer/depasiri

Query parameters

NameTypeDescriptionAccepted values
poluantrequired string The pollutant. Required. PM10PM2.5NO2O3SO2CO
judetoptional string | null Restrict to one county (vehicle-registration code). max 4 car.
de_laoptional string | null First day included, YYYY-MM-DD. e.g. 2026-01-01
pana_laoptional string | null Last day included, YYYY-MM-DD. e.g. 2026-12-31

How it behaves

  • Pollutants are not measured at the same stations. PM10 has 171 stations, NO2 149, SO2 116, CO 99, O3 83, and PM2.5 only 78. A ranking or a comparison between two pollutants is in fact comparing two different networks, not just two substances. When comparing counties on PM2.5, remember that some have no station measuring it at all.
  • Every pollutant has a different test, because the law has a different test. PM10 is judged on the daily mean (50 µg/m³), NO2 on the hourly value (200), ozone on the maximum 8-hour running mean (120), SO2 on the daily mean (125), CO on the 8-hour maximum (10 mg/m³). The test field states exactly what was applied.
  • PM2.5 does not appear here. It only has an annual limit value, so a "daily exceedance" would have no legal basis. The request returns aplicabil: false with the explanation, not an empty list that would read as "zero exceedances".
  • The count covers only the requested period and only days with data. The figure the law tolerates refers to the whole calendar year — compare only if the period covers the full year. zile_cu_date tells you how complete the basis is.
  • For NO2 we count DAYS with at least one hour above the threshold, whereas the law tolerates 18 HOURS per year. Our figure is therefore less than or equal to the legal one, never greater — but it is not the same quantity.
  • Results are ordered descending by number of exceedances.

What it is for

  • Document in a report how many days a station exceeded the legal threshold in a period.
  • Compare counties by number of exceedances, on official data.
  • Check whether an area is approaching the number of exceedances tolerated per year.

Response structure

All fields below live inside data.

FieldTypeDescription
poluant object Poluantul, cu unitatea și valorile-limită.
aplicabil boolean false la poluanții fără valoare-limită zilnică.
motiv string De ce nu se aplică, când aplicabil e false.
test.camp string Câmpul comparat cu pragul.
test.prag number Pragul.
test.tolerate integer Depășiri tolerate pe an calendaristic.
test.descriere string Formularea testului.
perioada object The interval analysed; null means the whole series.
perioada.de_la string Începutul perioadei cerute.
perioada.pana_la string Sfârșitul perioadei cerute.
inregistrari integer Câte stații conține răspunsul.
rezultate[].statie string Codul EoI al stației.
rezultate[].localitate string UAT-ul în care cade stația.
rezultate[].judet string Județul.
rezultate[].judet_cod string Indicativul auto.
rezultate[].tip string Tipul stației — schimbă interpretarea.
rezultate[].zona string Mediul de amplasare.
rezultate[].zile_cu_date integer Câte zile cu date au intrat în numărătoare.
rezultate[].depasiri integer Câte dintre ele au depășit pragul.
rezultate[].valoare_maxima number Cea mai mare valoare de test din perioadă.
rezultate[].media_perioadei number Media mediilor zilnice din perioadă.
rezultate[].prima_zi string Prima zi cu date.
rezultate[].ultima_zi string Ultima zi cu date.
observatie string Avertismentul despre compararea cu cifra tolerată anual.
sursa object Sursa și licența.
poluant.cod integer The numeric pollutant code, as used by the EEA.
poluant.poluant string The symbol: PM10, NO2, O3, SO2, CO, PM2.5.
poluant.denumire string The name spelled out.
poluant.unitate string The unit of measure.
poluant.limite[] array The applicable legal limits: type, value, how many exceedances are tolerated per year, and the legal basis.

Response examples

GEThttps://oneapi.ro/api/mediu/v1/aer/depasiri?poluant=PM10
{
    "data": {
        "poluant": {
            "cod": 5,
            "poluant": "PM10",
            "denumire": "Pulberi în suspensie PM10",
            "unitate": "µg/m³",
            "limite": [
                {
                    "tip": "zilnic",
                    "valoare": 50,
                    "depasiri_tolerate_pe_an": 35,
                    "temei": "Directiva 2008/50/CE, anexa XI"
                }
            ]
        },
        "aplicabil": true,
        "test": {
            "camp": "media",
            "prag": 50,
            "tolerate": 35,
            "descriere": "Media zilnică peste 50 µg/m³. Legea tolerează 35 de zile pe an calendaristic."
        },
        "perioada": {
            "de_la": null,
            "pana_la": null
        },
        "inregistrari": 171,
        "rezultate": [
            {
                "statie": "RO0151A",
                "localitate": "Rovinari",
                "judet": "Gorj",
                "judet_cod": "GJ",
                "tip": "industrial",
                "zona": "suburban",
                "zile_cu_date": 382,
                "depasiri": 89,
                "valoare_maxima": 205.036,
                "media_perioadei": 40.34,
                "prima_zi": "2025-09-06",
                "ultima_zi": "2026-09-22"
            }
        ],
        "observatie": "Numărătoarea acoperă DOAR perioada cerută și doar zilele cu date. Cifra tolerată de lege („35 pe an\") se referă la anul calendaristic întreg — compar-o cu numărul de aici doar dacă perioada acoperă tot anul. Verifică `zile_cu_date` înainte de orice concluzie.",
        "sursa": {
            "nume": "European Environment Agency — Air Quality Download Service (date raportate de România prin RNMCA/ANPM)",
            "url": "https://eeadmz1-downloads-webapp.azurewebsites.net/",
            "licenta": "Politica de reutilizare a EEA — reutilizare permisă cu indicarea sursei."
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validarepoluant is missing or unknown.
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": "poluant is missing or unknown.",
        "detalii": {
            "poluant": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}