diavgis/greek-public-procurement
Diavgis — Greek Public Procurement, cross-linked Greek public procurement is published across three official systems that do not talk to each other: Διαύγεια (administrative acts), ΚΗΜΔΗΣ (the procurement registry) and EU TED. A tender found in one cannot be followed to its award, its contract or its payment in another. This dataset is those three sources harvested, normalised and cross-linked into contract lifecycles. This is a snapshot, not a live feed. Taken 2026-08-16… See the full description on the dataset page: https://huggingface.co/datasets/diavgis/greek-public-procurement.
Diavgis — Greek Public Procurement, cross-linked
Greek public procurement is published across three official systems that do not talk to each other: Διαύγεια (administrative acts), ΚΗΜΔΗΣ (the procurement registry) and EU TED. A tender found in one cannot be followed to its award, its contract or its payment in another. This dataset is those three sources harvested, normalised and cross-linked into contract lifecycles.
This is a snapshot, not a live feed. Taken 2026-08-16, covering acts issued 2026-03-01 → 2026-08-16. For current data use diavgis.gr or the free API — please don't re-crawl the site.
Files
2,779,130 rows in 72 MB, Apache Parquet (zstd) — readable with pandas, polars, DuckDB, Spark or the viewer above.
By source: ΚΗΜΔΗΣ 467,879 · Διαύγεια 450,628 · TED 4,996. By stage: award 282,589 · payment 264,845 · contract 162,768 · tender 135,353 · request 77,948.
Columns
id— ΑΔΑ for Διαύγεια,kimdis:<ΑΔΑΜ>for ΚΗΜΔΗΣ,ted:<id>for TEDkind—request·tender·award·contract·paymentbuyer_afm,supplier_afm— Greek tax IDs, join toentities.parquetamount_net,amount_gross,currency— read the note below before summingspend_repr—1when the amount is real spend rather than an estimate. Filter on it before summing: TED carries multi-year framework budgets that inflate totals badlycpv_primary,nuts,eu_fundedcancelled,revoked,superseded— lifecycle state at the sourceredacted—1when the counterparty is a private individual (see Privacy)
chains.parquet carries chain_id, act_id, role, confidence (0–1) and method — how the link was made. Filter on confidence if you need only high-certainty links.
Identifiers are strings, not numbers. A Greek ΑΦΜ can begin with 0; casting it to an integer silently corrupts it.
⚠ Amounts are VAT-inclusive more often than not
ΚΗΜΔΗΣ publishes net and gross separately, and both are carried here faithfully. Διαύγεια publishes one number and does not say which it is. Measured across 2,732 lifecycles that contain both a ΚΗΜΔΗΣ and a Διαύγεια act, ~82% of Διαύγεια amounts turn out to include VAT and nothing in the record tells you which.
- For a consistent total use
coalesce(amount_gross, amount_net)— a gross basis is the only one every source can support. That is what diavgis.gr publishes. - Do not test Διαύγεια amounts against the Ν.4412 thresholds (€30,000 and €60,000, both net of VAT). A €48,387 net procurement stored as its €60,000 gross reads as sitting exactly on the ceiling. Filter
source = 'kimdis'for threshold work. TED values are net per Directive 2014/24/EU Art. 5(1).
Coverage over this window: TED ~98.9%, Διαύγεια ~95.9%, ΚΗΜΔΗΣ ~80.9% — treat counts as a large sample, not a census. A few records carry source typos with absurd amounts, so cap outliers if you rank anything.
Archived rows: what the archive does not keep
To keep the live database inside its size limit, payment acts are moved to a compact archive 90 days after they are harvested. Archived rows stay in acts.parquet — same schema, same row counts — but the archive keeps only part of each record, so some columns come back empty because the value is no longer kept, not because it was empty at publication. Nothing in the file itself can tell you this, which is why it is written here.
Of the 31 columns, 15 are not stored in the archive. Four of them carry real information that is genuinely lost:
Six more are kept or reconstructed from something the archive still guarantees: ada, source and currency follow from the record's own identifier; cancelled and superseded are always 0, because an act carrying either state is never archived; and amount_net holds the archived amount, with amount_gross always empty — the archiver refuses any act that has a gross figure, so a single amount column stays unambiguous.
The remaining columns are empty on archived rows and on live payment rows, for the ordinary reason that payments never carried them: adam, buyer_name, deadline, eu_funded, contract_budget_net, cancellation_ada, source_updated_at, amount_check and prev_ref — all measured at 0% on a sample of 5,000 live payments. esidis_id is the one borderline case: 0 of all 3,295 ΚΗΜΔΗΣ payments and 3 of 5,000 Διαύγεια payments (0.06%) carry it, so archiving it away loses almost nothing — but not literally nothing.
No rows are archived in this snapshot. This note describes what changes in later releases.
Privacy
Greek transparency law publishes payments to natural persons alongside payments to companies. This release does not reproduce that. 78,323 acts are marked `redacted = 1`: the counterparty is a private individual and supplier_afm is empty. entities.parquet and act_suppliers.parquet exclude them as well, so a left join will miss a handful of ΑΦΜs by design.
The redacted acts themselves are kept — the amount, buyer, date and CPV are legitimate public spending facts. Please do not attempt to re-identify redacted counterparties from other sources.
Licence and attribution
CC-BY 4.0. Attribute as: Diavgis — Greek public procurement dataset, https://diavgis.gr
The underlying data is the open data of Διαύγεια, ΚΗΜΔΗΣ and EU TED. This release is the harvested, normalised and cross-linked derivative.
Live access
- Search and browse — <https://diavgis.gr>
- REST API and documentation — <https://diavgis.gr/docs/en>
- OCDS 1.1 feed, free and keyless (includes
tender.procurementMethod) — <https://api.diavgis.gr/ocds> - Methodology and per-record provenance — <https://diavgis.gr/about>
Diavgis is an independent private project. It is not the Greek government portal diavgeia.gov.gr, not ΚΗΜΔΗΣ or ΕΣΗΔΗΣ, and not owned, operated or endorsed by the Greek State. It aggregates and cross-links the open data those official sources publish.
