oneapi
Sign in
Business v1 / Firme

Activity history

The authorised NACE (CAEN) codes of the company over time, with the period they appear in the register.

GET
https://oneapi.ro/api/business/v1/firme/{cui}/istoric/activitati

Path parameters

NameTypeDescriptionExample
cuirequired string The company tax identification number, without the RO prefix (e.g. 6719278).

Query parameters

NameTypeDescriptionAccepted values
versiuneoptional string | null Only one CAEN edition: 0 (1998), 1 (Rev.1), 2 (Rev.2), 3 (Rev.3). 0123
in_vigoareoptional boolean | null 1 only today's activities, 0 only closed ones. e.g. 1
doar_schimbarioptional boolean | null 1 only rows with a real addition or drop (renumbering excluded). e.g. 1
de_laoptional string | null Only changes (additions or drops) from this date, YYYY-MM-DD. Implies doar_schimbari. e.g. 2025-10-01

How it behaves

  • Real changes are separated from renumbering. The trade register moved companies from CAEN Rev.2 to Rev.3 gradually, each at its own edition: then every Rev.2 code disappears and the Rev.3 equivalents appear. Read raw, 140 of eMAG's 148 rows looked like changes. adaugata and renuntata report only what the company changed, recognising old–new pairs through the official correspondence table (codes the table does not mention stayed the same), in both directions and likewise for Rev.1 codes converted to Rev.2 — the source sometimes went back, and some companies carried both nomenclatures for a while (at Dedeman, 236 "changed" rows are really 19). A Rev.2 activity with no equivalent among the new codes is a real drop, even if it disappeared on the transition day.
  • ?doar_schimbari=1 returns only rows with an addition or a drop; ?de_la=2025-09-01 narrows to changes after a date. "What did the company change in the last year" is one request, without reading hundreds of rows.
  • The main activity is known only for today. The trade register does not mark it in the activities file and ANAF does not publish its history — hence principala_acum on the rows. ANAF often keeps the main activity on the Rev.2 code after the register moved the company to Rev.3; the Rev.3 equivalents are in meta.caen_principal.echivalente_rev3.
  • The history starts with the trade-register edition of 21 March 2025, the first with authorised activities as a separate file. What the company had then appears without adaugata: we do not know since when.
  • Dates are edition dates (roughly monthly): an activity with adaugata: 2025-10-06 appeared between the previous edition and 6 October. A row seen in a single edition may be a correction at the source.
  • Same date names as the other histories: vazut_de_la and vazut_pana_la.

What it is for

  • Which activities the company had authorised on the date of a public tender.
  • When a company changed its field of activity.
  • Tracking a sector moving to the new CAEN edition.

Response structure

FieldTypeDescription
data[].principala_acum boolean true on the code that is the company's main activity TODAY, according to ANAF, and only on the current row.
meta.caen_principal object | null The current main activity, per ANAF: {cod, denumire, versiune, sursa, echivalente_rev3}; null if ANAF does not declare one.
data[].cod string The authorised NACE (CAEN) code.
data[].denumire string The code label, from the nomenclature.
data[].versiune string The CAEN edition: 0 (1998), 1 (2003), 2 (2008), 3 (2025).
data[].vazut_de_la string The first snapshot in which the company has this code authorised.
data[].vazut_pana_la string | null The last snapshot it still appears in; null if still authorised.
data[].in_vigoare boolean true if it appears in the most recent snapshot processed.
data[].adaugata null The edition in which the activity really appeared; null if it was already there in the first edition we see the company in (we do not know since when) or if it is just the Rev.3 equivalent of a Rev.2 code closed when the company moved to the new nomenclature.
data[].renuntata null The last edition the activity appeared in before disappearing; null if in force or if it disappeared only through renumbering (its Rev.3 equivalent appeared in the next edition).
data[].renumerotare boolean true if the start or end of the period comes from the Rev.2 → Rev.3 transition, not from a company decision.
meta.caen_principal.echivalente_rev3 array When ANAF still keeps the main activity on a Rev.2 code (common, even after the trade register moved the company to Rev.3), the corresponding Rev.3 codes per the official table; null if already Rev.3.
meta.rezumat.prima_editie string The first edition in which we see the company's activities — what it had then does not appear as "added".
meta.rezumat.trecere_rev3 string The edition in which the trade register moved the company to CAEN Rev.3; null if we see it on Rev.3 from the start.
meta.rezumat.adaugate integer How many activities the company added, renumbering excluded — over the whole history, regardless of filters.
meta.rezumat.renuntate integer How many activities it dropped, renumbering excluded.
meta.rezumat.ultima_schimbare string The date of the latest real change; null if there is none.
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/business/v1/firme/14399840/istoric/activitati?per_pagina=5
{
    "data": [
        {
            "cod": "4615",
            "denumire": "Intermedieri în comerțul cu mobilă, articole de menaj și de fierărie",
            "versiune": "3",
            "vazut_de_la": "2025-05-05",
            "vazut_pana_la": null,
            "in_vigoare": true,
            "adaugata": null,
            "renuntata": null,
            "renumerotare": true,
            "principala_acum": false
        }
    ],
    "meta": {
        "caen_principal": {
            "cod": "4754",
            "denumire": "Comerț cu amănuntul al articolelor și aparatelor electrocasnice, în magazine specializate",
            "versiune": "2",
            "sursa": "ANAF",
            "echivalente_rev3": [
                "4754",
                "4792"
            ]
        },
        "rezumat": {
            "prima_editie": "2025-03-21",
            "trecere_rev3": "2025-05-05",
            "adaugate": 9,
            "renuntate": 5,
            "ultima_schimbare": "2026-02-03"
        },
        "paginare": {
            "pagina": 1,
            "per_pagina": 5,
            "total": 148,
            "pagini": 30
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
404negasitThe company with tax ID [{cui}] was not found.
422validareAn undeclared parameter or a value that fails validation (versiune, in_vigoare, doar_schimbari, de_la). The offending field is in detalii.
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": "An undeclared parameter or a value that fails validation (versiune, in_vigoare, doar_schimbari, de_la). The offending field is in detalii.",
        "detalii": {
            "cui": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}