Romanian Financial Statements by CUI (bilanțuri) avatar

Romanian Financial Statements by CUI (bilanțuri)

Pricing

from $10.00 / 1,000 statement extracteds

Go to Apify Store
Romanian Financial Statements by CUI (bilanțuri)

Romanian Financial Statements by CUI (bilanțuri)

Fetch official Romanian financial statements (bilanțuri / situații financiare) per CUI from the Ministry of Finance public webservice. Returns cifra de afaceri, net profit, total assets, liabilities and headcount per filing year.

Pricing

from $10.00 / 1,000 statement extracteds

Rating

0.0

(0)

Developer

Oaida Adrian

Oaida Adrian

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Romanian Financial Statements Scraper (bilanțuri) — Official MF Data

Get a Romanian company's official financial statements (bilanțuri / situații financiare) straight from the Ministry of Finance's public webservice — the same data behind the mfinante.gov.ro "Informații fiscale și bilanțuri" portal. No CAPTCHA, no HTML parsing, no third-party aggregators.

Pass a CUI (Romanian fiscal code) and the filing years you need; the Actor returns one clean record per year with the headline figures for due diligence and KYC.

What you get

  • 🇷🇴 Official source — data extracted by ANAF from the annual financial statements deposited by every Romanian company
  • 💰 Key figures per year — turnover (cifra de afaceri), net profit (negative = loss), total assets, liabilities (datorii)
  • 👥 Headcount — average number of employees (număr mediu de salariați)
  • 🏷️ Identity — CUI, company name as registered, filing type and year
  • 🔗 Provenance — source URL for every record

Input

{
"cui": "RO1590082",
"years": [2023, 2024],
"output": "json"
}
FieldTypeDefaultDescription
cuistring1590082Romanian fiscal code, with or without the RO prefix
yearsarraylast 2 yearsFinancial years to fetch (ANAF keeps ~6–10 years of filings)
outputstringjsonOutput format: json, csv, xlsx (csv/xlsx via Console export)

Output

One dataset item per filing year:

{
"cui": "1590082",
"company_name": "OMV PETROM SA",
"year": 2024,
"filing_type": "annual",
"turnover": 29692697896,
"net_profit": 4143914310,
"total_assets": 56329651371,
"liabilities": 8682417713,
"employees": 7207,
"filing_date": "",
"source_url": "https://webservicesp.anaf.ro/bilant?an=2024&cui=1590082"
}

All monetary values are in Romanian lei (RON). net_profit is negative when the company filed a loss. A CUI with no filed statement for a requested year is simply skipped; if no year returns data the run fails with a clear message.

Worked example

Due-diligence check on a large Romanian energy company. Input {"cui": "1590082", "years": [2023, 2024]} returns:

YearTurnover (RON)Net profit (RON)Total assets (RON)Employees
202429,692,697,8964,143,914,31056,329,651,3717,207
202333,828,196,8663,944,059,894

Both records carry the source_url pointing at the ANAF webservice so the numbers are independently verifiable. The same shape works for a micro-SRL (e.g. CUI 22886901 returns its 20-indicator statement including loss cases).

Use cases

  • Due diligence / KYC — the single most-demanded Romanian data point: pull turnover, profit and balance-sheet size before onboarding a supplier or partner
  • Credit & risk assessment — track revenue trajectory and losses across years; headcount as a size proxy
  • Investor screening — pre-filter Romanian targets by revenue band and asset size
  • Compliance — official-filing provenance (Ministry of Finance source URL on every record)
  • Market mapping — enrich a CUI list with the financial dimension for segmentation

Run it on a schedule or from your code

curl -X POST "https://api.apify.com/v2/acts/darknezz~ro-financial-statements/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"cui": "RO1590082", "years": [2023, 2024]}'

From Python with the official SDK:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("darknezz/ro-financial-statements").call(
run_input={"cui": "RO1590082", "years": [2023, 2024]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["year"], item["turnover"], item["net_profit"])

For a CUI list, use the SDK's call_multi to fan out one run per company:

inputs = [{"cui": cui, "years": [2023, 2024]} for cui in ["RO1590082", "22886901", "18189442"]]
runs = client.actor("darknezz/ro-financial-statements").call_multi(run_inputs=inputs)
for run in runs:
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["cui"], item["year"], item["net_profit"])

Pricing

Pay-per-event: $0.01 per financial statement extracted (one record per company-year), plus a one-time $0.01 Actor-start charge per run. You pay only for records actually delivered.

FAQ

Is this the official data? Yes — the webservice (webservicesp.anaf.ro/bilant) is the Ministry of Finance/ANAF public API that powers the mfinante.gov.ro balance-sheet portal. Records carry the source URL for auditability.

Why are some fields empty? The webservice returns the 20 extracted annual indicators (I1–I20); it does not expose the filing date or a full/simplified form flag, so filing_date is left empty and filing_type is annual.

How many years are available? The public dataset covers roughly the last decade (from 2014). Requesting an older or not-yet-filed year is skipped gracefully.

Can I query multiple companies? One CUI per run — loop the Actor over your CUI list, or use the Apify SDK's call_multi for parallel runs (see the snippet above).

Do I need the RO prefix? No — 1590082 and RO1590082 are both accepted and normalised to the same record.

How fresh is the data? The ANAF webservice is updated as annual statements are filed and processed — the 2024 statements of large filers appear in the same year; smaller companies file later. The Actor fetches live on every run, so there is no cached snapshot.

Is this legal? The data is public by law (OMFP 1420/2021) — every Romanian company's annual statement is published for public inspection. You are responsible for how you use the data downstream.

Limitations

  • One CUI per run by design — fan out with call_multi for batches.
  • filing_date and full/simplified flag are not exposed by the webservice (always "" / annual).
  • Years before ~2014 are not in the public dataset and are skipped.
  • ANAF throttles roughly 1 request/second — the Actor paces itself with retries/backoff; very large CUI lists should be spread over time.
  • An invalid CUI (or one with no filed statements at all) fails the run with a clear, actionable error instead of returning an empty success.