Romanian Financial Statements by CUI (bilanțuri)
Pricing
from $10.00 / 1,000 statement extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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"}
| Field | Type | Default | Description |
|---|---|---|---|
cui | string | 1590082 | Romanian fiscal code, with or without the RO prefix |
years | array | last 2 years | Financial years to fetch (ANAF keeps ~6–10 years of filings) |
output | string | json | Output 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:
| Year | Turnover (RON) | Net profit (RON) | Total assets (RON) | Employees |
|---|---|---|---|---|
| 2024 | 29,692,697,896 | 4,143,914,310 | 56,329,651,371 | 7,207 |
| 2023 | 33,828,196,866 | 3,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 ApifyClientclient = 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_multifor batches. filing_dateand 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.