Skip to content

Canovix

Romanian public open data from data.gov.ro as one standardized REST API — "Stripe for public data".

data.gov.ro hosts thousands of datasets as one-off file dumps: hand-built CSVs with inconsistent delimiters, Excel sheets with banner rows and merged headers, mixed encodings, Romanian column names with and without diacritics. This API ingests those files, standardizes them into typed, validated, consistently-named tables, and serves them through one uniform interface:

GET /v1/{domain}/{dataset}

Every dataset — whatever mess it arrived in — supports the same query language, the same pagination, the same export, and the same response envelope.

What you get

  • One consistent shape. Snake-case ASCII column names, typed values, a stable {data, pagination, meta, links} envelope everywhere.
  • A real query language. Stripe-style filters (?county=CLUJ, ?vehicle_count[gte]=100), multi-field sorting, field selection — on every dataset, validated strictly (typos are a 422, not a silently unfiltered 200).
  • Two pagination models. Offset pages with totals for browsing; opaque cursors for cheap deep iteration.
  • Bulk export. Any dataset (or filtered subset) streamed as CSV or NDJSON in one request.
  • Discovery built in. /v1/datasets/{id} tells you the columns, types, row count, a sample row, and the provenance of the exact source file the data came from.
  • Provenance. Every row traces to an ingestion run: source URL, checksum, pipeline version, import timestamp.

At a glance

curl -H "Authorization: Bearer $API_KEY" \
  "https://api.canovix.ro/v1/transport/vehicle_registry?county=CLUJ&vehicle_count[gte]=100&sort=-vehicle_count&limit=3"
{
  "data": [
    {
      "county": "CLUJ",
      "category": "AUTOTURISME",
      "manufacturer": "VOLKSWAGEN",
      "manufacturer_canonical": "VOLKSWAGEN",
      "vehicle_count": 27877
    }
  ],
  "pagination": { "total": 210, "count": 1, "limit": 3, "offset": 0, "has_next": true, "next_offset": 3 },
  "meta": {
    "api_version": "v1",
    "dataset": "vehicle_registry",
    "domain": "transport",
    "source_year": 2023,
    "last_updated": "2026-07-23T19:58:11+00:00",
    "generated_at": "2026-07-24T09:00:00Z"
  },
  "links": { "self": "...", "next": "..." }
}

Where to go next

  • Getting started — get a key, make your first request.
  • Querying & filtering — the full filter/sort/projection reference.
  • Discovery — find datasets and inspect their schemas at runtime.
  • The Datasets section — one reference page per dataset, generated from the same configuration that drives the pipeline, so it is always in sync.

Base URL

The data API lives at https://api.canovix.ro, and every example on this site uses it. Paths are stable and versioned under /v1. Your account dashboard, this documentation and the landing page are on https://canovix.ro.