Coverage & provenance
What the corpus knows
Coverage is measured, never estimated. Where a field is thin, the rows that lack it say so rather than being quietly dropped or filled in.
| Field | Rows | Coverage | What it means |
|---|---|---|---|
| end_date | 203,727 | 100.0% | every row carries an expiry; rows without one are not stored |
| incumbent (lot scope) | 106,524 | 52.3% | holder of this specific lot |
| supplier known | 188,231 | 92.4% | including notice-scoped attribution |
| value | 69,273 | 34.0% | published and above the €1,000 placeholder floor |
| reopens_competition | 12,471 | 6.1% | winnable before the expiry date |
| expiry derived | 31,643 | 15.5% | computed from start date + duration |
By country
Distribution follows publishing convention as much as market size. Germany, Sweden, Poland and the Netherlands publish an explicit end date; France, Spain and Italy publish a duration instead, and reach the corpus only because the expiry is derived from it.
| Country | Contracts | Relative volume |
|---|---|---|
| DEU | 71,001 | |
| FRA | 35,092 | |
| POL | 20,027 | |
| SWE | 14,855 | |
| CZE | 9,366 | |
| ITA | 7,146 | |
| ESP | 6,764 | |
| BGR | 5,726 | |
| NLD | 5,157 | |
| DNK | 5,075 | |
| CHE | 4,727 | |
| BEL | 4,177 |
Known limits
- Value is published on 34.0% of rows. The value block is separately scoped in the source and is not returned reliably by the search endpoint. This is the largest open gap.
- Aggregate value counts each published figure once per notice. Summing per lot overstates it by roughly a fifth, because the source repeats one figure across every lot far more often than it varies them.
- Expiry dates cluster on 31 December — a year-end default in the source, not seasonality.
- Contracts published at €0.01 and €1.00 exist. Values below €1,000 are treated as absent rather than as small.