Business v1 / Fonduri europene
Kohesio beneficiaries
The beneficiaries of Kohesio projects, with the budget each attracted. The names come as the platform publishes them, so not all are linked to a Romanian tax ID.
GET
https://oneapi.ro/api/business/v1/fonduri/kohesio/beneficiari
Query parameters
NameTypeDescriptionAccepted values
qoptional
string | null
Searches the beneficiary name, 2–120 characters.
max 120 car.
tara_codoptional
string | null
Ţara e cea publicată de sursă acolo unde o publică; vezi
dacă e un fapt de la sursă sau implicitul. Filtrul pe o ţară pe care sursa n-o declară ar da
rezultate care par certe şi nu sunt — de aceea răspunsul poartă provenienţa lângă valoare. max 2 car.
tara_sursa din răspuns, care spunedacă e un fapt de la sursă sau implicitul. Filtrul pe o ţară pe care sursa n-o declară ar da
rezultate care par certe şi nu sunt — de aceea răspunsul poartă provenienţa lângă valoare. max 2 car.
cuioptional
integer | null
The tax ID of the company the beneficiary is linked to, digits only.
1
legatoptional
boolean | null
true only beneficiaries linked to a company, false only the unlinked ones.
How it behaves
- The beneficiaries of Kohesio projects, with the associated projects and amounts.
- The ranking is by total budget, descending. The five beneficiaries without a budget come LAST, not first — otherwise „the largest beneficiaries" would have opened with three entries carrying no amount.
- ⚠️ It overlaps with
/firme/{cui}/fonduri: both describe European funds in Romania for 2014–2023, from different sources and without a common key. Measured: 2,563 of the 12,100 distinct names here (21.2%) appear IDENTICALLY in the national data too. Added up without deduplication, the same money is counted twice. - ⚠️ Kohesio publishes no tax ID, neither for the beneficiary nor for the project. Since 13 Oct 2026 beneficiaries are nonetheless linked to companies, by matching on NAME: the
cuifield gives the company, andpotrivirestates how certain the link is (exact,probabil,manual) or why it is missing (ambiguu,none, orexternfor beneficiaries with no project in Romania). Linked: 9,377 of 12,124 (77.3%). Filter withcui=, or withlegat=falsefor those left unlinked. „What European funds did this company get" is answered from/firme/{cui}/fonduri(the national source) and/firme/{cui}/kohesio(the European one).
What it is for
- Identifying the largest cohesion-fund beneficiaries.
- Checking whether a partner appears in European projects.
- Analysing how concentrated funds are among a few beneficiaries.
Response structure
FieldTypeDescription
data[].kohesio_id
string | null
The beneficiary identifier in Kohesio (
Q…). It is the key that links back to data[].beneficiari[] on the projects at /fonduri/kohesio.
data[].nume
string
The name.
data[].cui
integer | null
The tax ID of the company the beneficiary is linked to, or
null if it could not be linked. ⚠️ It does NOT come from the source: it is the result of a name match — read potrivire next to it.
data[].potrivire
string | null
How certain the link to the company is:
exact (identical name, unique in the company register), probabil (close, confirmed by location), manual (verified by a human), ambiguu (several companies with the same name — deliberately left unlinked), none (no match), extern (a beneficiary with no project in Romania, so no company to match).
data[].buget_eur
number | null
The total budget of the beneficiary's projects, in euro.
data[].buget_ue_eur
number | null
The share funded from European funds, in euro, across all of the beneficiary's projects.
data[].nr_proiecte
integer
The number of projects.
data[].tara_cod
string | null
The country code (ISO 3166-1 alpha-2), or
null. Kohesio publishes the beneficiary country ONLY for the top 1,000 (tara_sursa: "oficial"); for the other 11,124 the field is null, because the source does not publish it — rather than a default that looks like a fact.
data[].tara_sursa
string | null
oficial = the country is published by Kohesio for this beneficiary (1,000 out of 12,124), so tara_cod is a fact from the source. null = the source does not publish it, and tara_cod is null too. Until 2 Oct 2026 the column was NOT NULL, so all 12,124 carried the RO default — Italian beneficiaries included.
meta.paginare.pagina
integer
Pagina curentă.
meta.paginare.per_pagina
integer
Rezultate pe pagină.
meta.paginare.total
integer
Total rezultate.
meta.paginare.pagini
integer
Număr de pagini.
Response examples
GEThttps://oneapi.ro/api/business/v1/fonduri/kohesio/beneficiari?q=primaria
{
"data": [
{
"kohesio_id": "Q3117695",
"nume": "MUNICIPIUL TG - JIU/PRIMARIA",
"buget_eur": 39519685.51,
"buget_ue_eur": 33591732.84,
"nr_proiecte": 13,
"tara_cod": "RO",
"tara_sursa": "oficial"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 21,
"pagini": 2
}
}
}
GEThttps://oneapi.ro/api/business/v1/fonduri/kohesio/beneficiari?q=universitatea
{
"data": [
{
"kohesio_id": "Q3115688",
"nume": "UNIVERSITATEA DIN CRAIOVA",
"buget_eur": 79547414.5,
"buget_ue_eur": 69179791.87,
"nr_proiecte": 34,
"tara_cod": "RO",
"tara_sursa": "oficial"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 71,
"pagini": 4
}
}
}
GEThttps://oneapi.ro/api/business/v1/fonduri/kohesio/beneficiari?tara_cod=RO
{
"data": [
{
"kohesio_id": "Q7387008",
"nume": "COMPANIA NAŢIONALĂ DE ADMINISTRARE A INFRASTRUCTURII RUTIERE S.A.",
"buget_eur": 7340431473.55,
"buget_ue_eur": 2936172589.44,
"nr_proiecte": 25,
"tara_cod": "RO",
"tara_sursa": "oficial"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 1000,
"pagini": 50
}
}
}
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 route takes no parameters apart from lang: any other parameter returns 422 instead of being ignored. |
| 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 route takes no parameters apart from lang: any other parameter returns 422 instead of being ignored.",
"detalii": {
"q": [
"The value sent does not satisfy the parameter rule."
]
}
}
}