Home › Guides › Romania company data (ANAF)
Romania company data from ANAF: CUI lookup, VAT status and the inactive-taxpayer flag
ANAF is the Romanian tax authority, and its VAT-payer service is the authoritative answer on whether a Romanian company exists, is VAT-registered and is in good standing. The Romania Company Data scraper turns a list of CUIs into full records — name, trade register number, both addresses, VAT history and the inactive-taxpayer flag that says whether you can legally deduct a supplier's invoices. No API key, an official source, and you pay only for delivered rows.
Who it's for
- Invoice compliance — an invoice from an inactive taxpayer is not deductible in Romania, and
isInactiveis the field that decides it. - VAT validation at scale — check a whole supplier list's VAT registration and cash-VAT status in one run.
- Counterparty onboarding — confirm the legal name and trade register number before signing.
CUI, VAT number and trade register number
Three identifiers appear on a Romanian company record, and only one of them is the lookup key:
- CUI — the fiscal identification code, and the only key ANAF accepts. Pass it with or without the
ROprefix (14399840,RO1590082). - VAT number —
ROplus the CUI, present when the company is VAT-registered (taxNumber). - Trade register number — the
J40/…style number (tradeRegisterNumber).
ANAF has no name search. If you only have a company name, resolve the CUI first — from an invoice, the trade register or an EU VIES lookup. The same split between a registration number and a VAT number runs through most of the region; the Eastern European company registries guide explains why the two should not be confused.
What you get
| Data | Field and meaning |
|---|---|
| Legal name | companyName — registered legal name |
| CUI | registrationNumber — the fiscal identification code |
| VAT number | taxNumber — RO + CUI, when VAT-registered |
| Trade register number | tradeRegisterNumber — the J40/… number |
| Status | status — active, or inactive when ANAF has flagged the taxpayer inactive; statusRaw — ANAF's own registration-state wording |
| Addresses | address as printed on the taxpayer record; registeredOfficeAddress — the registered office (sediu social); fiscalAddress — the fiscal domicile, where it differs |
| Locality and contact | city, postalCode and the registered phone |
| VAT history | isVatRegistered — whether the company is currently VAT-registered; vatPeriods — every VAT registration period with start and end dates |
| VAT regimes | vatOnCollection — cash-basis VAT (TVA la încasare); splitVat — split-VAT status |
| Inactive taxpayer | isInactive — ANAF's inactive-taxpayer flag; inactivatedOn, reactivatedOn and struckOffOn — the dates it was declared inactive, reactivated and struck off the register |
| e-Invoice | eInvoiceRegistered — registered in the RO e-Factura system |
| Provenance | sourceUrl (the ANAF lookup), query, scrapedAt and, when a lookup fails, error with the reason |
An example row, trimmed:
{
"country": "RO",
"companyName": "DANTE INTERNATIONAL SA",
"registrationNumber": "14399840",
"taxNumber": "RO14399840",
"tradeRegisterNumber": "J40/372/2002",
"status": "active",
"address": "MUNICIPIUL BUCUREŞTI, SECTOR 2, STR. GARA HERĂSTRĂU, NR.6",
"isVatRegistered": true,
"vatPeriods": [{ "from": "2002-02-01", "to": null }],
"isInactive": false
}
Input example
{
"queries": ["14399840", "8971726", "RO1590082"],
"maxResultsPerQuery": 1,
"maxConcurrency": 1,
"includeRaw": false
}
Set includeRaw to attach ANAF's untouched record under raw, for fields the scraper does not map. Lower maxConcurrency if ANAF starts throttling.
How it runs
- Batched requests. ANAF accepts up to 100 CUIs per request, and the scraper uses that: a 500-company run costs five requests, not five hundred.
- Live source. Every run queries ANAF's documented open REST service (PlatitorTvaRest v9) live, with no key.
- Seconds, not minutes, for a short list. The three-CUI input above finished in 4 s in the reference run on 9 September 2026, and in 12 s in a check after publication on 28 September.
Honest limits
- CUI only. There is no name search; a company name will not resolve.
- Rate limits by IP. ANAF answers datacenter IPs but rate-limits by IP on large runs. The defaults are one request at a time with a short delay; turn the proxy on for very large lists.
- Not every field on every record. In the three-company reference run, the postcode was filled on 2 of 3 rows and the phone on 1 of 3.
- Data protection. Always verify your use complies with the source's terms and applicable data-protection law.
Pricing
You pay only for the rows a run delivers. Failed or empty lookups are never charged. Current prices are on the actor's Pricing tab.
Related
More company-data scrapers on foXLabs. For the checks a register can and cannot prove when you onboard a business, read KYB company verification.
Frequently asked questions
Do I need an API key or a login?
No. ANAF publishes the taxpayer register as a documented open REST service with no key.
What can I search by?
By CUI only, the Romanian fiscal identification code, with or without the RO prefix. ANAF does not expose a name search, so a company name will not resolve; get the CUI from an invoice, the trade register or a VIES lookup first.
Why does the inactive flag matter?
An invoice from an inactive taxpayer is not deductible in Romania. isInactive carries ANAF's inactive-taxpayer flag, with the dates in inactivatedOn and reactivatedOn.
How current is the data?
Every run queries ANAF live, so results are as fresh as the register itself.
What happens when a query returns nothing?
You still get a row carrying your original query and an error field explaining why. Nothing is silently dropped, and you are not charged for it.
Try it: paste your suppliers' CUIs into the input above and check VAT status and the inactive flag in one run.
Open Romania Company Data →Or browse all foXLabs datasets on Apify.