oneapi
Sign in
Business v1 / Firme

Working points

A company's hotels, restaurants, food shops, pharmacies and approved establishments, with address, authorisation and, where available, coordinates.

GET
https://oneapi.ro/api/business/v1/firme/{cui}/puncte-lucru

Path parameters

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

Query parameters

NameTypeDescriptionAccepted values
sursalistoptional text Optional. One or more registers, comma-separated or as a list (sursa[]=): situr_cazare, situr_alimentatie, ansvsa, dgsante, farmacii. All by default. situr_cazaresitur_alimentatieansvsadgsantefarmacii

How it behaves

  • This is not the list of working points declared at the Trade Register — that is not published openly anywhere. The Ministry of Finance has a parent-company column for secondary units but leaves it empty on all 2.65 million rows (checked on 17 Sep). Instead, the route rebuilds the authorised locations from registers where a row is a physical unit: classified tourism establishments (Ministry of Tourism), sanitary-veterinary units (ANSVSA), establishments approved for intra-EU trade (DG SANTE) and pharmacies.
  • A company with no authorised activity in these fields gets an empty list, even if it has working points. meta.surse shows where the search went and how much each register returned.
  • SITUR gives the operator's tax ID, so the link is reliable. ANSVSA and pharmacies give only the name: the tax ID comes from the matching engine, and potrivire says how certain it is. Names truncated at source ("SC DISTRIB") stay unlinked.
  • The same unit can appear several times in ANSVSA, once for each authorised activity (shop and online sales, for instance).

What it is for

  • Mapping a chain: every restaurant or shop of an operator, by county.
  • Checking that a partner really has the authorised unit at the declared address.
  • Prospecting in hospitality and food retail: the operators with the most locations in a county.

Response structure

FieldTypeDescription
data[].sursa string The register the location comes from: situr_cazare, situr_alimentatie, ansvsa, dgsante, farmacii.
data[].operator string The operator, as written in the register.
data[].unitate string | null The unit name (the hotel, the restaurant), where the register gives it.
data[].tip string | null The unit type: HOTEL, RESTAURANT CLASIC, MAGAZIN ALIMENTAR…
data[].categorie string | null The tourism classification (3 - STELE), SITUR only.
data[].adresa string | null The unit address, from the register.
data[].localitate string | null The locality, where the register gives it separately.
data[].judet string | null The county, named as in the Locations nomenclature; null when the register does not give it.
data[].coordonate object | null The unit coordinates {lat, lng}, where the register publishes them (SITUR almost always, ANSVSA rarely).
data[].coordonate.lat number Latitude, in decimal degrees (WGS 84).
data[].coordonate.lng number Longitude, in decimal degrees (WGS 84).
data[].autorizatie.numar string | null The number of the authorisation, certificate or approval.
data[].autorizatie.data string | null The issue date, where the register gives it separately.
data[].autorizatie.valabila_pana_la string | null The expiry date, where known.
data[].potrivire string exact — tax ID given by the register or identical name; probabil — link made by the matching engine from name and place.
meta.surse object How many locations the company has in each register consulted, zero included.
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/6205722/puncte-lucru
{
    "data": [
        {
            "sursa": "ansvsa",
            "operator": "Premier Restaurants Romania SRL",
            "unitate": null,
            "tip": "Restaurant-Vanzare internet",
            "categorie": null,
            "adresa": "Alba Iulia, Calea Motilor, Nr.120",
            "localitate": null,
            "judet": "Alba",
            "coordonate": null,
            "autorizatie": {
                "numar": "9087/12.12.2019",
                "data": null,
                "valabila_pana_la": null
            },
            "potrivire": "exact"
        }
    ],
    "meta": {
        "surse": {
            "situr_cazare": 0,
            "situr_alimentatie": 52,
            "ansvsa": 82,
            "dgsante": 0,
            "farmacii": 0
        },
        "paginare": {
            "pagina": 1,
            "per_pagina": 20,
            "total": 134,
            "pagini": 7
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
404negasitCompany [{cui}] not found.
422validareAn unknown value in sursa or an undeclared parameter. 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 unknown value in sursa or an undeclared parameter. The offending field is in detalii.",
        "detalii": {
            "cui": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}