For onboarding, KYB and tender-monitoring pipelines
Romanian company status as JSON, with the source on every record
Send Romanian CUI numbers, get VAT, inactive, split-VAT and e-Factura flags from ANAF's public web service, and re-check your list on your schedule to see when one changes. More actors cover EU TED tenders, EU VAT rates from the Commission's TEDB and CN 2026 goods codes, and a Romanian procurement actor is planned. They are Apify actors: hosted jobs you call by API or run on a schedule. Company status, TED tenders, EU VAT rates and EU CN codes are live on the Apify Store; the procurement actor is not public yet.
Input
{
"cuis": ["RO00000001"],
"queryDate": "2026-10-04"
}
Output (shortened, full record below)
{
"found": true,
"vat": { "registered": true },
"vat_on_cash": { "active": false },
"inactive": { "is_inactive": false },
"split_vat": { "active": false },
"e_invoice_registered": true,
"provenance": { "source_url": "...", "retrieved_at": "...", "record_hash": "..." }
}
The actors
Guides: check Romanian VAT, inactive and e-Factura status by CUI in bulk · monitor EU and Romanian tenders from TED by CPV code · check if a Romanian company is inactive · check the RO e-Factura registry · CPV codes and daily tender alerts · EU VAT rates by country as JSON · find the CN code of a product.
-
Romania company status (ANAF)
Live on Apify Open the Store page
Send up to 10,000 CUI / CIF numbers per run. Get found / not found, VAT registration, VAT on cash, inactive status, split VAT and the e-Factura registry flag, as of a date you choose.
Watch mode re-checks your list (up to 5,000 CUIs, at most one check per company per day) on your schedule and alerts only when VAT, inactive, split-VAT or e-Factura status changes. Watch state stays in your Apify account. Sole-trader businesses are not watched.
Not included: insolvency. The insolvency bulletin is free only after login, so it is outside our rules. See the FAQ. Not real-time; not official; not affiliated with ANAF.
-
Romania direct purchases & contracts
Not public yet
Planned: quarterly SEAP open data from data.gov.ro (licence CC BY 4.0 per the dataset page): direct purchases, contracts, initiation notices, DPS invitations. Filter by keyword, CPV prefix or authority CUI. The data is quarterly, not live. Not public until the data.gov.ro operator has replied to our question.
-
TED tenders
Live on Apify Open the Store page
Search the official TED Search API by CPV code, buyer country, notice type and keyword, with an incremental mode. It also supplies live above-threshold Romanian notices.
-
EU VAT rates (TEDB)
Live on Apify Open the Store page
Standard and reduced VAT rates of the 27 Member States as reported to the European Commission's Taxes in Europe Database (TEDB), for today or a date you choose, optionally filtered by CN code or category. One record per country, or one per rate rule.
Information only, not tax advice. Rates as reported by Member States to TEDB; verify against national law before charging VAT. Not affiliated with the European Commission.
-
EU CN codes 2026
Live on Apify Open the Store page
Look up, browse and keyword-search the Combined Nomenclature 2026 in English, Romanian or German, with the full hierarchy of each code. The official dataset is bundled; no duty rates.
Candidate codes, not a customs classification; only the Official Journal text is authentic. Not affiliated with the European Union.
Provenance and reliability
These are design rules, not a track record: there are no uptime figures yet, and measured ones will be published once enough runs exist.
- Provenance on every record: source URL, retrieval time (UTC), source version, licence and attribution text, and a record hash to detect changes.
- Official sources only: the TED Search API, the ANAF public VAT web service, data.gov.ro files, the Commission's TEDB VAT web service and the Eurostat CN 2026 dataset, each approved on our internal allow-list with conditions (2026-10-04). Nothing else is used.
- Polite by design: one request at a time, documented rate limits respected (ANAF documents 100 CUIs per request and one request per second, and all users of the company-status actor share that one queue), no logins, no paywall circumvention, no proxies.
- Fails loudly: if a source changes its structure, the run stops with a drift report instead of returning wrong data.
- Daily self-check and a kill switch per actor.
- Privacy: no contact persons, phone numbers or IBANs are output. For sole traders and similar businesses, addresses are suppressed. Values that look like a personal numeric code (13 digits) are rejected.
- As is: data comes from official sources as is, with timestamps. It is information, not legal advice, and not a credit or due-diligence opinion. This project is not affiliated with, approved or endorsed by ANAF, the European Union or the Romanian authorities.
Example input and output
Synthetic data, shaped by our draft schemas of 2026-10-04. Not output of a live run. All outputs carry the same provenance keys. insolvency is always null in version 1 (see the FAQ).
Romania company status
Input
{
"cuis": ["RO00000001", "00000002"],
"queryDate": "2026-10-04",
"includeAddresses": true
}
Output (one record)
{
"record_type": "ro-company-status",
"input": "RO00000001",
"query_date": "2026-10-04",
"found": true,
"name": "EXAMPLE COMPANY S.R.L.",
"entity_kind": "legal-entity",
"vat": { "registered": true, "periods": [{ "from": "2020-01-01", "to": null, "message": null }] },
"vat_on_cash": { "active": false, "from": null, "to": null },
"inactive": { "is_inactive": false, "inactivated_on": null, "reactivated_on": null },
"split_vat": { "active": false, "from": null, "cancelled_on": null },
"e_invoice_registered": true,
"insolvency": null,
"provenance": {
"source_url": "https://webservicesp.anaf.ro/api/PlatitorTvaRest/v9/tva",
"retrieved_at": "2026-10-04T06:00:12.345Z",
"source_version": { "api_version": "v9", "doc_sha256": "<64 hex>" },
"licence": { "id": "LicenseRef-ANAF-public-ws", "attribution": "Sursa: ANAF" },
"record_hash": "sha256:<64 hex>"
}
}
Watch mode: one change record (shortened, synthetic)
{
"record_type": "ro-company-status-change",
"cui": "9900000010",
"name": "TEST SINTETIC SRL",
"checked_at": "2026-10-05T04:12:03.512Z",
"watch_status": "changed",
"changed_fields": ["inactive", "inactivated_on"],
"previous": { "inactive": false },
"current": { "inactive": true, "inactivated_on": "2026-10-02" },
"previously_checked_at": "2026-10-04T04:11:58.020Z"
}
Romania direct purchases & contracts
Input
{
"recordKinds": ["direct-purchase", "contract"],
"keywords": ["software"],
"cpvPrefixes": ["72"],
"periods": ["2026-Q2"],
"incremental": true
}
Output (one record)
{
"record_type": "ro-procurement-record",
"record_kind": "direct-purchase",
"authority_name": "EXAMPLE CONTRACTING AUTHORITY",
"procedure_name": "Example: software licences",
"cpv_code": "72000000-5",
"source_period": "2026-Q2",
"provenance": {
"source_url": "https://data.gov.ro/dataset/<uuid>/resource/<uuid>/download/<file>",
"retrieved_at": "2026-10-04T06:00:12.345Z",
"source_version": { "etag": "<etag>", "last_modified": "<ISO UTC>" },
"licence": { "id": "CC-BY-4.0", "attribution": "Contains data from Autoritatea pentru Digitalizarea României, data.gov.ro, licensed CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); modified (normalised, filtered)" },
"record_hash": "sha256:<64 hex>"
}
}
TED tenders
Input
{
"cpvCodes": ["72000000"],
"countries": ["ROU"],
"publishedFrom": "7 days",
"incremental": true
}
Output (one record)
{
"record_type": "ted-notice",
"publication_number": "000000-2026",
"buyer_country": "ROU",
"cpv_codes": ["72000000"],
"notice_url": "https://ted.europa.eu/en/notice/-/detail/000000-2026",
"provenance": {
"source_url": "https://api.ted.europa.eu/v3/notices/search",
"retrieved_at": "2026-10-04T06:00:12.345Z",
"source_version": { "api_version": "v3", "record_version": "1" },
"licence": {
"id": "LicenseRef-EC-Decision-2011-833",
"attribution": "Source: TED — Tenders Electronic Daily, © European Union, https://ted.europa.eu"
},
"record_hash": "sha256:<64 hex>"
}
}
Pricing
Pay per event on Apify: you pay for results delivered. Invalid inputs, failed runs and dry runs are free. These are the pay-per-event prices in the Store READMEs of 2026-10-10 for the live actors; the procurement price applies only once that actor is public.
| Actor | Charged per | Price |
|---|---|---|
| Romania company status | CUI answered, found or not found | $0.003 ($3 per 1,000) |
| Romania company status, watch | CUI re-checked | $0.001 |
| Romania company status, watch | status change detected | $0.01 |
| Romania direct purchases & contracts | matching row | $0.001 ($1 per 1,000) |
| TED tenders | notice | $0.002 ($2 per 1,000) |
| EU VAT rates | country result (summary) | $0.002 |
| EU VAT rates | rate record (detailed) | $0.0002 |
| EU CN codes | code result | $0.0005 |
Examples: checking 10,000 CUIs once costs about $30. Watching 500 companies daily costs about $15 per month plus $0.01 per change. Apify also charges a start event, by default $0.00005 per run (Apify docs, opened 2026-10-04). A later API with monthly plans is only an idea and has no price.
Frequently asked questions
Last verified: 2026-10-10 (TED and ANAF API facts: 2026-10-04). Sources are linked in each answer. Information, not legal advice.
How do I search EU TED tenders by CPV code via API?
Send a POST request to the TED Search API v3 at https://api.ted.europa.eu/v3/notices/search. No API key is required according to the TED developer documentation. The body needs a query in TED expert syntax and a list of fields to return. To filter by CPV code and buyer country, use classification-cpv IN (72000000) and buyer-country IN (ROU), joined with AND. Dates use the format YYYYMMDD, for example publication-date >= 20260927. In page mode TED limits retrievable notices to 15,000 and 250 per page; the ITERATION pagination mode has no limit on the number of notices.
curl -s -X POST https://api.ted.europa.eu/v3/notices/search \
-H 'Content-Type: application/json' \
-d '{"query":"classification-cpv IN (72000000)
AND buyer-country IN (ROU)
AND publication-date >= 20260927
SORT BY publication-date DESC",
"fields":["publication-number","publication-date","notice-type"],
"limit":3,"page":1,"scope":"ALL",
"paginationMode":"PAGE_NUMBER"}'
We ran this request once on 2026-10-04 and it returned notices. Sources: TED API documentation, Search API, OpenAPI file. TED's rate limit is not documented, so keep requests slow. Whether a CPV filter also matches child codes is unverified.
How do I check the VAT status of a Romanian company by CUI?
ANAF publishes a public web service for VAT status. According to ANAF's documentation (version 9 at the time of writing, file opened 2026-10-04), you POST a JSON array such as [{"cui": 16054368, "data": "2026-10-04"}] to https://webservicesp.anaf.ro/api/PlatitorTvaRest/v9/tva. The cui value is a number. A request may contain at most 100 CUIs and a client may make at most one request per second. The answer lists found companies with VAT registration, inactive status, split VAT and e-Factura registry data. Source: ANAF documentation. We have not run this call ourselves; the example below comes from the documentation.
curl -s -X POST https://webservicesp.anaf.ro/api/PlatitorTvaRest/v9/tva \
-H 'Content-Type: application/json' \
-d '[{"cui": 16054368, "data": "2026-10-04"}]'
Does the ANAF service tell me whether a company is insolvent?
Not in version 9 as documented: it has no insolvency field. The insolvency bulletin (BPI) is the official register; according to the e-Justice Portal page for Romania (last updated 4 June 2026), its free services require authentication and full online access needs a paid subscription. For that reason our company-status actor will return insolvency: null in its first version. Source: e-Justice Portal.
Is Romanian public procurement data available as open data?
Yes, partly. The SEAP operator publishes quarterly exports on data.gov.ro (datasets named achizitii-publice- plus the year) under Creative Commons Attribution 4.0 according to the dataset metadata read on 2026-10-04. The files cover initiation notices, DPS invitations, contracts, direct purchases and related kinds. They are published about one to two weeks after each quarter ends, so they are not a live feed, and file formats vary between CSV, XLSX and ODS. Direct purchases are largely absent from TED; live notices above EU thresholds are published in TED. Source: data.gov.ro.
Can I reuse TED notice data commercially?
The TED legal notice states that notices are reusable under Commission Decision 2011/833/EU, that TED editorial content is CC BY 4.0 and metadata CC0, and that the TED logo may not be used (page opened 2026-10-04). Notices can contain names, e-mails and phone numbers of contact persons, which are personal data, so we do not request those fields. Read the legal notice yourself and take advice for your use case. Source: TED legal notice.
What does "provenance" mean on each record?
Each record carries the exact source URL, the UTC time it was retrieved, the source's version marker (such as an API version or file ETag), the licence and attribution text, and a SHA-256 hash of the record content. Comparing the hash between runs shows what changed.
Are these actors available now, and what do they cost?
Four of five. As of 2026-10-10 Romania company status TED tenders, EU VAT rates and EU CN codes are public on the Apify Store; the procurement actor is not. Prices are in the pricing section. Regivora is operated by PPFTEC S.R.L.
Can I be told when a Romanian company changes its VAT, inactive or e-Factura status?
That is what the watch mode of the company-status actor does. It re-checks the list of CUIs you supply, on your schedule, against ANAF's public web service, and emits a record only when VAT, inactive, split-VAT or e-Factura status has changed. It checks each company at most once per day, keeps up to 5,000 CUIs, and keeps its state (CUI, a status fingerprint and the last-check time) in your own Apify account, where you can delete it. It is not real-time, it does not monitor all companies, it does not include insolvency, and sole-trader businesses are not watched.
Why not just call the official APIs myself?
You can, and for TED and ANAF the raw services are free. What we aim to add is batching, retries and backoff, a stable record format, incremental runs, change detection, privacy filtering and a maintained health check, so that you do not need to run that yourself. Whether that is worth paying for is what we are testing.
Waitlist
The waitlist is not open (an API, MCP server and SDK do not exist yet). The form below is switched off, connected to nothing, and collects nothing. When it opens it will use a confirmation e-mail (double opt-in) and a full privacy notice.
Privacy note
This page sets no cookies, loads no third-party scripts, fonts or trackers, and does not measure visits; it has no working form. How our data products handle data about people — including the quarterly procurement mirror at regivora.ppftec.com/data/, objections and your rights — is described in the privacy notice (în română). Objections: support@ppftec.com, removal within 24 hours. Operator: PPFTEC S.R.L. (https://ppftec.com). This site is served by Cloudflare, which may log IP addresses for security.