Clearsource — EU public data APIs

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. Two more actors cover Romanian procurement open data and EU TED tenders. They are Apify actors: hosted jobs you call by API or run on a schedule.

Status, 2026-10-04: in development, nothing is published yet. The company-status actor will be published only after a legal review. Examples use synthetic data.

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": "..." }
}

See example output Why not call the APIs yourself?

The three actors

  • Romania company status (ANAF)

    Planned

    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.

  • Romania direct purchases & contracts

    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.

  • TED tenders

    Planned

    Built first, and published first. Search the official TED Search API by CPV code, buyer country, notice type and keyword, with an incremental mode. The Apify Store already has about 118 TED actors (market research, 2026-10-04), so this one competes on maintenance and provenance, not on being first. It also supplies live above-threshold Romanian notices.

Provenance and reliability

These are design rules, not a track record: there are no uptime figures yet, and measured ones will be published once the actors run.

  • 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 and data.gov.ro files, 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. Prices are set (decision of 2026-10-04) but not active until the actors are published.

Pay-per-event prices in USD, as of 2026-10-04
ActorCharged perPrice
Romania company statusCUI answered, found or not found$0.003 ($3 per 1,000)
Romania company status, watchCUI re-checked$0.001
Romania company status, watchstatus change detected$0.01
Romania direct purchases & contractsmatching row$0.001 ($1 per 1,000)
TED tendersnotice$0.002 ($2 per 1,000)

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-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 will they cost?

No. As of 2026-10-04 they are in development and not published, and the company-status actor will be published only after a legal review. Prices are in the pricing section. Clearsource 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 is designed to do, once it is published. 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. Not available yet.

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. 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.

Disabled placeholder.

Privacy note

This page sets no cookies, loads no third-party scripts, fonts or trackers, and has no working form. How our data products handle data about people — including the quarterly procurement mirror at clearsource.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 (EU), which may log IP addresses for security.