# Romania's power grid, minute by minute (MonitorEnergie.ro) > Romania's national power system from MonitorEnergie.ro: the Transelectrica operational feed archived minute by minute since November 2007 (consumption, production, cross-border balance, production by source, the flow through each of the 18 interconnection points, temperature and the day-ahead price), MonitorEnergie.ro's own seven-day production and load forecasts, daily day-ahead prices across European bidding zones since 2015, weekly fuel prices (EC Oil Bulletin) and daily Brent, fuel taxes, gas storage, gas flows and household gas offers, and the site's article catalogue — plus the original rounded daily summaries read from the site's Markdown pages. - Dataset id: `monitorenergie-ro` - Update cadence: 6-hourly - Upstream source: https://monitorenergie.ro/ - Tags: energy, electricity, grid, romania, transelectrica, prices, sen, gas, fuel, forecast - Current version: ingest `01M647RVR7GT1V35B6T740KQ9R`, snapshot 2026-10-29, generated 2026-10-29T17:24:40.547Z ## Licence and attribution - Licence: Creative Commons Attribution 4.0 International (`CC-BY-4.0`) - Licence text: https://creativecommons.org/licenses/by/4.0/ - Required attribution: Transelectrica, via MonitorEnergie.ro - Notes: CC BY 4.0 is declared in the API description (openapi.json `info.license`), in a `Link: rel="license"` header on every API response, in robots.txt and in llms.txt. Attribute as "Transelectrica, via MonitorEnergie.ro", the citation the site asks for. MonitorEnergie.ro collects public data and computes nothing it does not say it computes; the upstream publishers are Transelectrica (the operational feed), ENTSO-E (day-ahead prices), Open-Meteo / ERA5 (temperature), the European Commission Weekly Oil Bulletin (fuel prices and taxes), the U.S. EIA (Brent, public domain), GIE AGSI+ (gas storage), ENTSOG / Transgaz (gas flows) and ANRE (household gas offers) — a reuser relying on one series should also respect that publisher's terms. The forecasts are MonitorEnergie.ro's own estimates. The API is read with a free key MonitorEnergie.ro gave by email as a courtesy, on the conditions that it is not queried more often than needed and that the data is not redistributed as if it were ours — hence the attribution, and a request pattern that fetches each day once. They can change or withdraw the key without notice; the history already published stays, and new days stop arriving. Reproduce the attribution line verbatim anywhere you republish this data. ## Manifest - Start here for how this directory works: https://date-deschise.bunnytech.app/llms.txt - This dataset: https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/manifest.json - All datasets: https://date-deschise-s3.bunnytech.app/public/index.json - Human page: https://date-deschise.bunnytech.app/datasets/monitorenergie-ro The manifest is the contract: file URLs, row counts, column types, min/max statistics and example queries all live there. Re-read it to discover a new version. ## Fastest path — Parquet exports Immutable, physically sorted snapshot exports. No catalog fetch, best row-group pruning, safe to cache forever. Register one view per table: ```sql INSTALL httpfs; LOAD httpfs; CREATE OR REPLACE VIEW daily_summary AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/daily_summary.parquet'); CREATE OR REPLACE VIEW daily_generation_by_source AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/daily_generation_by_source.parquet'); CREATE OR REPLACE VIEW daily_typical_hour AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/daily_typical_hour.parquet'); CREATE OR REPLACE VIEW daily_price_summary AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/daily_price_summary.parquet'); CREATE OR REPLACE VIEW grid_readings AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/grid_readings.parquet'); CREATE OR REPLACE VIEW fetch_coverage AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/fetch_coverage.parquet'); CREATE OR REPLACE VIEW interconnection_points AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/interconnection_points.parquet'); CREATE OR REPLACE VIEW generation_forecast AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/generation_forecast.parquet'); CREATE OR REPLACE VIEW load_forecast AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/load_forecast.parquet'); CREATE OR REPLACE VIEW eu_day_ahead_prices AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/eu_day_ahead_prices.parquet'); CREATE OR REPLACE VIEW fuel_prices AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/fuel_prices.parquet'); CREATE OR REPLACE VIEW brent_prices AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/brent_prices.parquet'); CREATE OR REPLACE VIEW fuel_taxes AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/fuel_taxes.parquet'); CREATE OR REPLACE VIEW gas_storage AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/gas_storage.parquet'); CREATE OR REPLACE VIEW gas_daily_balance AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/gas_daily_balance.parquet'); CREATE OR REPLACE VIEW gas_crossborder_flows AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/gas_crossborder_flows.parquet'); CREATE OR REPLACE VIEW gas_household_offers AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/gas_household_offers.parquet'); CREATE OR REPLACE VIEW articles AS SELECT * FROM read_parquet('https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/articles.parquet'); ``` Example queries: -- Monthly peak consumption and the share of wind and solar, since 2020 ```sql ATTACH IF NOT EXISTS 'ducklake:https://date-deschise-s3.bunnytech.app/catalog/catalog.ducklake' AS "datadirectory" (READ_ONLY); SELECT date_trunc('month', reading_date) AS month, max(consumption_mw) AS peak_consumption_mw, sum(wind_mw + solar_mw) / sum(production_mw) AS wind_solar_share FROM datadirectory.monitorenergie_ro.grid_readings WHERE reading_date >= '2020-01-01' GROUP BY month ORDER BY month ``` -- Average flow with Bulgaria and Hungary, hour by hour, last week: Positive flows into Romania. interconnection_points maps every column to its country. ```sql ATTACH IF NOT EXISTS 'ducklake:https://date-deschise-s3.bunnytech.app/catalog/catalog.ducklake' AS "datadirectory" (READ_ONLY); SELECT date_trunc('hour', minute_local) AS hour, avg(flow_varn_mw + flow_kozl1_mw + flow_kozl2_mw + flow_dobr_mw) AS bulgaria_mw, avg(flow_beke1_mw + flow_sand_mw) AS hungary_mw FROM datadirectory.monitorenergie_ro.grid_readings WHERE minute_local >= current_date - INTERVAL 7 DAY GROUP BY hour ORDER BY hour ``` ## Live lake — DuckLake catalog with time travel Attach the published catalog read-only over plain https. This works in native DuckDB AND in duckdb-wasm in the browser — the reader catalog resolves its data files through public https URLs, so no credentials and no backend are involved. ```sql INSTALL ducklake; LOAD ducklake; ATTACH 'ducklake:https://date-deschise-s3.bunnytech.app/catalog/monitorenergie-ro/catalog.ducklake' AS monitorenergie_ro (READ_ONLY); SELECT * FROM monitorenergie_ro.main.daily_summary LIMIT 5; USE monitorenergie_ro; ``` - Latest catalog: https://date-deschise-s3.bunnytech.app/catalog/monitorenergie-ro/catalog.ducklake - This exact version: https://date-deschise-s3.bunnytech.app/catalog/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/catalog.ducklake (sha256 4e337dc6d8c135674f00626e34ebd38295c23d4e9028e3162264f46795d4dce1) - Written by DuckDB v2.0.0 - Time travel: this ingest is snapshot 59 — e.g. `SELECT * FROM monitorenergie_ro.daily_summary AT (VERSION => 59)` ## Wholesale — S3 access For bulk downloads, read the bucket prefix directly over S3 with httpfs: ```sql INSTALL httpfs; LOAD httpfs; CREATE SECRET hetzner ( TYPE s3, ENDPOINT 'fsn1.your-objectstorage.com', URL_STYLE 'path', KEY_ID '', SECRET '' ); SELECT * FROM read_parquet('s3://date-deschise-s3/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/**/*.parquet'); ``` ## Schema ### daily_summary One row per calendar day: national consumption, production and cross-border balance (minimum, average, maximum), the day's total energy balance, and whether Romania was, on net, an importer or exporter. The actual window MonitorEnergie.ro analysed (period_start/period_end) is whatever the source returned, not necessarily exactly the requested day — see those two columns. - 6,884 rows · 267 KB · write mode `snapshot_history` - Physically sorted by: `day` - Primary key: `day` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/daily_summary.parquet (6,884 rows) Columns: - `day` DATE NOT NULL — Calendar day (UTC) this row summarises, as requested with ?from=day&to=day. (range: "2007-11-10" … "2026-10-29") (~6949 distinct) - `period_start` TIMESTAMP — The ACTUAL start of the window the source analysed ("De la:") — a naive Europe/Bucharest local-time wall clock, stored verbatim with no timezone conversion. MonitorEnergie.ro silently narrows a wide requested range to whatever it can serve; for the single-day requests this connector issues, the returned window normally equals the requested day, but this column always carries what was actually returned, never what was requested. - `period_end` TIMESTAMP — The ACTUAL end of the window the source analysed ("Până la:") — a naive Europe/Bucharest local-time wall clock, stored verbatim with no timezone conversion. - `readings_analysed` INTEGER [readings] — Number of underlying SEN feed readings the source aggregated to build this summary ("Citiri analizate:"). - `consumption_min_mw` DOUBLE [MW] — Minimum national consumption over the window. - `consumption_avg_mw` DOUBLE [MW] — Average national consumption over the window. - `consumption_max_mw` DOUBLE [MW] — Maximum national consumption over the window. - `production_min_mw` DOUBLE [MW] — Minimum national production over the window. - `production_avg_mw` DOUBLE [MW] — Average national production over the window. - `production_max_mw` DOUBLE [MW] — Maximum national production over the window. - `balance_min_mw` DOUBLE [MW] — Minimum cross-border balance (import minus export) over the window. Positive means importing, negative means exporting. - `balance_avg_mw` DOUBLE [MW] — Average cross-border balance over the window. - `balance_max_mw` DOUBLE [MW] — Maximum cross-border balance over the window. - `production_total_mwh` DOUBLE [MWh] — Total electricity produced over the window, normalised to MWh from whatever unit (MWh/GWh/TWh) the source displayed it in. - `consumption_total_mwh` DOUBLE [MWh] — Total electricity consumed over the window, normalised to MWh. - `export_total_mwh` DOUBLE [MWh] — Total electricity exported over the window, normalised to MWh. - `import_total_mwh` DOUBLE [MWh] — Total electricity imported over the window, normalised to MWh. - `net_position` VARCHAR — Whether Romania was, on net, an 'importer' or 'exporter' over the window — taken from the source's own bolded verdict when present, otherwise derived from the sign of the average balance. ### daily_generation_by_source One row per calendar day per generation source (hydrocarbons, hydro, solar, coal, wind, storage, biomass, nuclear): the energy generated and that source's share of the day's total production mix. - 55.1K rows · 224 KB · write mode `snapshot_history` - Physically sorted by: `day`, `source_code` - Primary key: `day`, `source_code` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/daily_generation_by_source.parquet (55.1K rows) Columns: - `day` DATE NOT NULL — Calendar day (UTC) this row summarises. (range: "2007-11-10" … "2026-10-29") (~6949 distinct) - `source_code` VARCHAR NOT NULL — Stable machine code for the generation source: one of hidrocarburi, hidro, fotovoltaic, carbune, eolian, stocare, biomasa, nuclear. (range: "biomasa" … "stocare") (~8 distinct) - `source_name` VARCHAR — Romanian display name for the source, exactly as MonitorEnergie.ro's table labels it. - `energy_mwh` DOUBLE [MWh] — Energy generated by this source over the day, normalised to MWh from whatever unit (MWh/GWh/TWh) the source displayed. - `share_pct` DOUBLE [%] — This source's share of total production for the day. Can be negative for fotovoltaic when net metering pushes it below zero. ### daily_typical_hour The "typical day" shape MonitorEnergie.ro computes for the analysed window: the average, minimum and maximum value of a series across every reading that fell in each hour-of-day bucket (00:00 .. 23:00), for the window analysed at the request of the given calendar day. - 164.3K rows · 939 KB · write mode `snapshot_history` - Physically sorted by: `day`, `hour` - Primary key: `day`, `hour`, `series` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/daily_typical_hour.parquet (164.3K rows) Columns: - `day` DATE NOT NULL — Calendar day (UTC) this row summarises. (range: "2007-11-10" … "2026-10-29") (~6949 distinct) - `hour` INTEGER NOT NULL [hour] — Hour of day, 0-23, in the site's own Europe/Bucharest wall-clock hour buckets. (range: 0 … 23) (~24 distinct) - `series` VARCHAR NOT NULL — Which series this row describes. Currently always 'consum' (consumption) — the source publishes a typical-day table only for consumption, not for production. (~1 distinct) - `avg_mw` DOUBLE [MW] — Average value across all readings that fell in this hour bucket. - `min_mw` DOUBLE [MW] — Minimum value across all readings that fell in this hour bucket. - `max_mw` DOUBLE [MW] — Maximum value across all readings that fell in this hour bucket. ### daily_price_summary Day-ahead market (PZU) wholesale electricity price statistics for the Romania bidding zone, over the window MonitorEnergie.ro analysed at the request of the given calendar day. - 4,279 rows · 49 KB · write mode `snapshot_history` - Physically sorted by: `day` - Primary key: `day` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/daily_price_summary.parquet (4,279 rows) Columns: - `day` DATE NOT NULL — Calendar day (UTC) this row summarises. (range: "2015-01-01" … "2026-10-29") (~4252 distinct) - `hours_with_price` INTEGER [hours] — Number of hours in the analysed window for which a PZU price was published. Can be less than the full window when the market had no session for some hours. - `price_min_eur_mwh` DECIMAL(12,4) [EUR/MWh] — Minimum day-ahead price over the window. - `price_avg_eur_mwh` DECIMAL(12,4) [EUR/MWh] — Average day-ahead price over the window. - `price_max_eur_mwh` DECIMAL(12,4) [EUR/MWh] — Maximum day-ahead price over the window. ### grid_readings Romania's national power system from November 2007: consumption, production, the cross-border balance, production by source, the physical flow through each of the 18 interconnection points, the population-weighted temperature and the day-ahead price. MonitorEnergie.ro's archive of the Transelectrica operational feed, read through its API: one row per minute from summer 2026, when the archive became minute-by-minute, and one row per ten minutes before that, its earlier cadence (each value is the average of the readings in its bucket). The archive also has gaps where collection stopped (see fetch_coverage). On the autumn clock change the repeated hour 03:00-03:59 is merged by the source into one set of buckets. - 1M rows · 23 MB · write mode `snapshot_history` - Physically sorted by: `minute_local` - Primary key: `minute_local` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/grid_readings.parquet (1M rows) Columns: - `minute_local` TIMESTAMP NOT NULL — The bucket's minute: reading_at_local truncated to the minute, on the Europe/Bucharest wall clock with no offset. Unique per row. (range: "2007-11-10 22:18:00" … "2026-10-29 18:26:00") (~1045118 distinct) - `reading_at_local` TIMESTAMP NOT NULL — The moment the archive reports for the bucket, on the Europe/Bucharest wall clock with no offset — inside the bucket, not necessarily on the minute. - `reading_date` DATE NOT NULL — Calendar day of the reading on the Europe/Bucharest calendar. (~6975 distinct) - `bucket_seconds` INTEGER [s] — Width of the bucket the archive averaged into this row: 60 where the archive is minute-by-minute, 600 where it kept one reading every ten minutes — there a stray extra reading (under 5% of a month) is averaged with its neighbour instead of getting a row. - `consumption_mw` DOUBLE [MW] — National consumption. - `production_mw` DOUBLE [MW] — National production. - `balance_mw` DOUBLE [MW] — Cross-border balance, consumption minus production: positive means Romania imports, negative that it exports. - `solar_mw` DOUBLE [MW] — Photovoltaic production. Slightly negative at night (the plants draw power). - `wind_mw` DOUBLE [MW] — Wind production. - `hydrocarbons_mw` DOUBLE [MW] — Production from gas and oil. - `coal_mw` DOUBLE [MW] — Production from coal. - `nuclear_mw` DOUBLE [MW] — Nuclear production (Cernavodă). - `hydro_mw` DOUBLE [MW] — Hydro production. - `biomass_mw` DOUBLE [MW] — Production from biomass. - `storage_mw` DOUBLE [MW] — Storage output, as the feed reports it (ISPOZ). - `flow_varn_mw` DOUBLE [MW] — Physical flow through the Varna interconnection with Bulgaria (point code `varn`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_kozl1_mw` DOUBLE [MW] — Physical flow through the Kozlodui 1 interconnection with Bulgaria (point code `kozl1`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_kozl2_mw` DOUBLE [MW] — Physical flow through the Kozlodui 2 interconnection with Bulgaria (point code `kozl2`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_dobr_mw` DOUBLE [MW] — Physical flow through the Dobrogea interconnection with Bulgaria (point code `dobr`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_djer_mw` DOUBLE [MW] — Physical flow through the Djerdap interconnection with Serbia (point code `djer`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_kusj_mw` DOUBLE [MW] — Physical flow through the Djerdap II interconnection with Serbia (point code `kusj`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_pancevo1_mw` DOUBLE [MW] — Physical flow through the Pancevo 1 interconnection with Serbia (point code `pancevo1`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_pancevo2_mw` DOUBLE [MW] — Physical flow through the Pancevo 2 interconnection with Serbia (point code `pancevo2`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_sip_mw` DOUBLE [MW] — Physical flow through the Sip interconnection with Serbia (point code `sip`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_kiki_mw` DOUBLE [MW] — Physical flow through the Kikinda interconnection with Serbia (point code `kiki`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_beke1_mw` DOUBLE [MW] — Physical flow through the Bekescsaba interconnection with Hungary (point code `beke1`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_sand_mw` DOUBLE [MW] — Physical flow through the Sandorfalva interconnection with Hungary (point code `sand`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_vulc_mw` DOUBLE [MW] — Physical flow through the Vulcănești interconnection with Moldova (point code `vulc`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_unge_mw` DOUBLE [MW] — Physical flow through the Ungheni interconnection with Moldova (point code `unge`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_cose_mw` DOUBLE [MW] — Physical flow through the Costești interconnection with Moldova (point code `cose`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_cioa_mw` DOUBLE [MW] — Physical flow through the Cioara interconnection with Moldova (point code `cioa`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_gote_mw` DOUBLE [MW] — Physical flow through the Gotești interconnection with Moldova (point code `gote`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `flow_muka_mw` DOUBLE [MW] — Physical flow through the Mukacevo interconnection with Ukraine (point code `muka`), averaged over the bucket. Positive means power flowing into Romania, negative out of it; summed over all points they come to roughly balance_mw. - `temperature_c` DOUBLE [°C] — Hourly mean temperature across Bucharest, Cluj-Napoca, Timișoara, Iași, Constanța, Craiova, Brașov and Galați, weighted by population (Open-Meteo, ERA5 for history). - `day_ahead_price_eur_mwh` DECIMAL(12,4) [EUR/MWh] — Day-ahead (PZU) price for the Romania bidding zone in the market interval holding this reading (hourly, quarter-hourly since October 2025), from ENTSO-E. NULL before 2015. ### fetch_coverage What this dataset has fetched from the API, one row per source per day: how many rows the day produced and whether it had already ended when fetched. It is how each run knows what is left to fetch, and how a reader tells a day the archive has no data for (rows = 0, complete) from one not fetched yet (no row). - 10.3K rows · 33 KB · write mode `snapshot_history` - Physically sorted by: `source`, `day` - Primary key: `source`, `day` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/fetch_coverage.parquet (10.3K rows) Columns: - `source` VARCHAR NOT NULL — Which API series: 'archive' (grid_readings) or 'eu_prices'. (range: "archive" … "eu_prices") (~2 distinct) - `day` DATE NOT NULL — The day, on the Europe/Bucharest calendar. (range: "2007-11-10" … "2026-10-30") (~6975 distinct) - `rows` INTEGER NOT NULL [rows] — Rows the day produced: one-minute buckets for archive, bidding zones for eu_prices. - `quarter_hours` INTEGER [quarter-hours] — For eu_prices, how many quarter-hour prices sit behind the averages; NULL for archive. - `bucket_seconds` INTEGER [s] — For archive, the bucket width of the request; NULL for eu_prices. - `complete` BOOLEAN NOT NULL — True when the day had ended on the Europe/Bucharest calendar when it was fetched, so it is not fetched again. - `fetched_at` TIMESTAMP NOT NULL — When the run that fetched the day started (UTC). ### interconnection_points The interconnection points of Romania's grid, as MonitorEnergie.ro's catalog lists them, with the grid_readings column holding each point's flow. - 18 rows · 1.5 KB · write mode `replace` - Physically sorted by: `country_code`, `point_code` - Primary key: `point_code` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/interconnection_points.parquet (18 rows) Columns: - `point_code` VARCHAR NOT NULL — Point code used by the API. (range: "beke1" … "vulc") (~18 distinct) - `point_name` VARCHAR — Point name. - `country_code` VARCHAR NOT NULL — ISO 3166-1 alpha-2 code of the neighbouring country. (range: "BG" … "UA") - `country_name` VARCHAR — Neighbouring country, in Romanian as the catalog names it. - `feed_code` VARCHAR — The point's code in the Transelectrica operational feed. - `readings_column` VARCHAR — Column of grid_readings carrying this point's flow; NULL for a point the catalog lists that this dataset does not have a column for yet. ### generation_forecast MonitorEnergie.ro's own seven-day forecast of solar, wind and hydro production (weather forecast plus a weather-to-output model learned from its archive; hydro from its typical pattern). One row per issue, forecast day and source; every issue is kept, so a forecast can be scored against grid_readings. An estimate, not a measurement. - 84 rows · 1.4 KB · write mode `append` - Physically sorted by: `forecast_date`, `issued_at_local`, `source` - Primary key: `issued_at_local`, `forecast_date`, `source` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/generation_forecast.parquet (84 rows) Columns: - `issued_at_local` TIMESTAMP NOT NULL — When the forecast was computed, on the Europe/Bucharest wall clock with no offset. (range: "2026-10-29 02:18:02" … "2026-10-29 17:22:03") (~4 distinct) - `forecast_date` DATE NOT NULL — The day forecast, on the Europe/Bucharest calendar. (range: "2026-10-29" … "2026-11-04") (~7 distinct) - `source` VARCHAR NOT NULL — 'solar', 'wind' or 'hydro' — the grid_readings column without _mw. (range: "hydro" … "wind") (~3 distinct) - `forecast_avg_mw` DOUBLE [MW] — Forecast average power over the day. - `method` VARCHAR — How the source forecast it, verbatim: 'prognoza' (weather model) or 'tipar' (typical pattern). ### load_forecast MonitorEnergie.ro's own seven-day forecast of consumption, production, imports and exports (the level of the day type, corrected for forecast temperature and the last two weeks' error). One row per issue and forecast day; every issue is kept. An estimate. - 28 rows · 2.3 KB · write mode `append` - Physically sorted by: `forecast_date`, `issued_at_local` - Primary key: `issued_at_local`, `forecast_date` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/load_forecast.parquet (28 rows) Columns: - `issued_at_local` TIMESTAMP NOT NULL — When the forecast was computed, on the Europe/Bucharest wall clock with no offset. (range: "2026-10-29 02:18:03" … "2026-10-29 17:22:04") (~4 distinct) - `forecast_date` DATE NOT NULL — The day forecast, on the Europe/Bucharest calendar. (range: "2026-10-29" … "2026-11-04") (~7 distinct) - `day_type` VARCHAR — Day type, verbatim: 'lucratoare' (working day), 'sambata' (Saturday), 'sarbatoare' (Sunday or public holiday). - `consumption_avg_mw` DOUBLE [MW] — Forecast average consumption. - `production_avg_mw` DOUBLE [MW] — Forecast average production. - `balance_avg_mw` DOUBLE [MW] — Forecast average balance; positive means importing. - `import_avg_mw` DOUBLE [MW] — Forecast average import. - `export_avg_mw` DOUBLE [MW] — Forecast average export. - `temperature_c` DOUBLE [°C] — Forecast mean temperature the forecast assumed. - `confidence` VARCHAR — The source's own confidence label, verbatim (e.g. 'buna'). ### eu_day_ahead_prices Daily average day-ahead electricity price in each European bidding zone MonitorEnergie.ro tracks, from January 2015 (ENTSO-E Transparency Platform data). Early years cover only a few zones. - 80K rows · 227 KB · write mode `snapshot_history` - Physically sorted by: `price_date`, `zone_code` - Primary key: `price_date`, `zone_code` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/eu_day_ahead_prices.parquet (80K rows) Columns: - `price_date` DATE NOT NULL — Delivery day, on the Europe/Bucharest calendar. (range: "2015-01-01" … "2026-10-30") (~3193 distinct) - `zone_code` VARCHAR NOT NULL — Zone key as the source gives it (country code; one zone each). (range: "AT" … "SK") (~26 distinct) - `zone_name` VARCHAR — Zone name in Romanian, verbatim (e.g. "Italia (nord)"). - `price_avg_eur_mwh` DECIMAL(12,4) [EUR/MWh] — Average day-ahead price over the day. - `is_romania` BOOLEAN NOT NULL — True for the Romania bidding zone. ### fuel_prices Weekly national average pump prices of petrol (95), diesel and LPG in Romania and the EU average, with and without taxes, from the European Commission's Weekly Oil Bulletin, from 2005. Romania in both RON and EUR (converted at the bulletin's weekly rate); EU in EUR. - 8,928 rows · 42 KB · write mode `upsert` - Physically sorted by: `fuel_type`, `country`, `currency`, `observed_at` - Primary key: `observed_at`, `country`, `fuel_type`, `currency` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/fuel_prices.parquet (8,928 rows) Columns: - `observed_at` DATE NOT NULL — The bulletin week (its Monday), on the bulletin's own calendar (UTC). (range: "2005-01-03" … "2026-10-26") (~1090 distinct) - `country` VARCHAR NOT NULL — 'RO' or 'EU' (EU average). (range: "EU" … "RO") (~2 distinct) - `fuel_type` VARCHAR NOT NULL — 'gasoline95', 'diesel' or 'lpg'. (range: "diesel" … "lpg") (~3 distinct) - `currency` VARCHAR NOT NULL — 'RON' or 'EUR'. (range: "EUR" … "RON") (~2 distinct) - `price_with_tax` DECIMAL(12,4) [currency per litre] — Price per litre, taxes included. - `price_without_tax` DECIMAL(12,4) [currency per litre] — Price per litre before taxes. - `provider` VARCHAR — Source code as the API gives it ('ec'). - `source_url` VARCHAR — The bulletin file the value was read from. ### brent_prices Daily Brent crude spot price from the U.S. EIA, from 1987. - 9,117 rows · 43 KB · write mode `upsert` - Physically sorted by: `observed_at` - Primary key: `observed_at` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/brent_prices.parquet (9,117 rows) Columns: - `observed_at` DATE NOT NULL — Trading day, on the EIA's own calendar (UTC). (range: "1987-05-20" … "2026-10-27") (~9573 distinct) - `price_usd_per_barrel` DECIMAL(12,4) [USD/barrel] — Brent spot price. - `provider` VARCHAR — Source code as the API gives it ('eia'). - `source_url` VARCHAR — The EIA series page. ### fuel_taxes Taxes on motor fuel in Romania — excise, VAT and other — with the period each applies, as reported to the EC Oil Bulletin. The API answers only the taxes in force today, so earlier periods appear as they were in force when this dataset first ran. - 9 rows · 2.2 KB · write mode `upsert` - Physically sorted by: `fuel_type`, `tax_type`, `valid_from` - Primary key: `fuel_type`, `tax_type`, `valid_from` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/fuel_taxes.parquet (9 rows) Columns: - `fuel_type` VARCHAR NOT NULL — 'gasoline95', 'diesel' or 'lpg'. (range: "diesel" … "lpg") (~3 distinct) - `tax_type` VARCHAR NOT NULL — 'excise', 'vat' or 'other'. (range: "excise" … "vat") (~3 distinct) - `valid_from` DATE NOT NULL — First day the amount applies, on the Europe/Bucharest calendar. (range: "2009-01-07" … "2026-10-05") (~4 distinct) - `valid_to` DATE — Last day it applies (Europe/Bucharest calendar); NULL while in force. - `amount` DECIMAL(18,6) — The tax: an amount per litre, or a percentage — see unit. - `unit` VARCHAR — 'RON/litre' or 'percent'. - `legal_reference` VARCHAR — The legal act, when the source names one. - `provider` VARCHAR — Source code as the API gives it ('ec'). - `source_url` VARCHAR — The bulletin file the value was read from. ### gas_storage Romania's underground gas storage per site and gas day, from GIE AGSI+ as MonitorEnergie.ro shows it, with the EU average fill. The page shows only the latest gas day; this table keeps one per run. - 12 rows · 1.8 KB · write mode `snapshot_history` - Physically sorted by: `gas_day`, `site` - Primary key: `gas_day`, `site` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/gas_storage.parquet (12 rows) Columns: - `gas_day` DATE NOT NULL — The gas day, on the Europe/Bucharest calendar. (range: "2026-10-26" … "2026-10-27") (~2 distinct) - `site` VARCHAR NOT NULL — Storage site. (range: "Bilciurești" … "Urziceni") (~6 distinct) - `operator` VARCHAR — Operator. - `stored_twh` DOUBLE [TWh] — Gas in storage. - `capacity_twh` DOUBLE [TWh] — Working capacity. - `full_pct` DOUBLE [%] — Fill level. - `net_flow_gwh_day` DOUBLE [GWh/day] — Net injection (positive) or withdrawal over the gas day. - `eu_average_full_pct` DOUBLE [%] — EU average fill on the same gas day. ### gas_daily_balance Romania's natural gas balance per gas day — production, consumption, imports, exports, storage injection and withdrawal — from ENTSOG physical flows reported by Transgaz, as MonitorEnergie.ro shows it. One gas day per run. - 2 rows · 1.2 KB · write mode `snapshot_history` - Physically sorted by: `gas_day` - Primary key: `gas_day` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/gas_daily_balance.parquet (2 rows) Columns: - `gas_day` DATE NOT NULL — The gas day, on the Europe/Bucharest calendar. (range: "2026-10-27" … "2026-10-28") (~2 distinct) - `production_gwh` DOUBLE [GWh] — Domestic production. - `consumption_gwh` DOUBLE [GWh] — Consumption. - `import_gwh` DOUBLE [GWh] — Imports. - `export_gwh` DOUBLE [GWh] — Exports. - `storage_injection_gwh` DOUBLE [GWh] — Injected into storage. - `storage_withdrawal_gwh` DOUBLE [GWh] — Withdrawn from storage. ### gas_crossborder_flows Physical natural gas flow through each of Romania's cross-border points per gas day (ENTSOG, reported by Transgaz). One gas day per run. - 12 rows · 1 KB · write mode `snapshot_history` - Physically sorted by: `gas_day`, `point` - Primary key: `gas_day`, `point` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/gas_crossborder_flows.parquet (12 rows) Columns: - `gas_day` DATE NOT NULL — The gas day, on the Europe/Bucharest calendar. (range: "2026-10-27" … "2026-10-28") (~2 distinct) - `point` VARCHAR NOT NULL — Cross-border point. (range: "Csanádpalota" … "Ungheni") (~6 distinct) - `country_code` VARCHAR — Neighbouring country, ISO 3166-1 alpha-2. - `direction` VARCHAR — 'import', 'export' or 'none'. - `flow_gwh` DOUBLE [GWh] — Flow over the gas day, in the stated direction. ### gas_household_offers Every household natural gas offer in the official ANRE (POSF) comparator, as listed on a day: the gas price alone and with regulated transport and distribution for one distribution area, VAT excluded. The page shows only the current list; this table keeps one listing per day. - 32 rows · 2.8 KB · write mode `snapshot_history` - Physically sorted by: `listed_on`, `gas_price_lei_kwh` - Primary key: `listed_on`, `supplier`, `offer_name` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/gas_household_offers.parquet (32 rows) Columns: - `listed_on` DATE NOT NULL — The day the list was published, on the Europe/Bucharest calendar. (range: "2026-10-29" … "2026-10-29") (~1 distinct) - `supplier` VARCHAR NOT NULL — Supplier, verbatim. (~21 distinct) - `offer_name` TEXT NOT NULL — Offer name, verbatim. (~30 distinct) - `gas_price_lei_kwh` DECIMAL(12,4) NOT NULL [RON/kWh] — Price of the gas alone, without VAT. (range: 0.162 … 0.475) - `total_price_lei_kwh` DECIMAL(12,4) [RON/kWh] — Price with transport and distribution for distribution_area, without VAT. - `price_type` VARCHAR — 'fixed' or 'variable'. - `valid_until` DATE — Last day the offer is valid, on the Europe/Bucharest calendar. - `distribution_area` VARCHAR — The area whose distribution tariff total_price includes. ### articles MonitorEnergie.ro's articles — news written from institutions' press releases, and guides — as a catalogue: title, excerpt, links and dates. The full text stays on the site (markdown_url serves it as Markdown). - 501 rows · 112 KB · write mode `upsert` - Physically sorted by: `published_at_local` - Primary key: `slug` - Files: 1 - https://date-deschise-s3.bunnytech.app/public/monitorenergie-ro/v/01M647RVR7GT1V35B6T740KQ9R/articles.parquet (501 rows) Columns: - `slug` VARCHAR NOT NULL — The article's stable identifier. (~511 distinct) - `article_type` VARCHAR — 'news' or 'guide'. - `title` TEXT — Title, in Romanian. - `excerpt` TEXT — Opening of the article, as the site excerpts it. - `url` VARCHAR — The article page. - `markdown_url` VARCHAR — The same article as Markdown. - `cover_url` VARCHAR — Cover image. - `published_at_local` TIMESTAMP — Publication moment, on the Europe/Bucharest wall clock with no offset. (range: "2026-07-31 11:59:11" … "2026-10-27 09:26:25") - `updated_at_local` TIMESTAMP — Last update, on the Europe/Bucharest wall clock with no offset. - `author` VARCHAR — Author, as the site names it. ## Performance notes - There are no indexes in a lakehouse. The physical sort order plus Parquet row-group min/max statistics ARE the index. Predicates on the leading sort columns prune whole row groups; everything else is a full column scan. - `daily_summary` prunes on `day`. - `daily_generation_by_source` prunes on `day` → `source_code`. - `daily_typical_hour` prunes on `day` → `hour`. - `daily_price_summary` prunes on `day`. - `grid_readings` prunes on `minute_local`. - `fetch_coverage` prunes on `source` → `day`. - `interconnection_points` prunes on `country_code` → `point_code`. - `generation_forecast` prunes on `forecast_date` → `issued_at_local` → `source`. - `load_forecast` prunes on `forecast_date` → `issued_at_local`. - `eu_day_ahead_prices` prunes on `price_date` → `zone_code`. - `fuel_prices` prunes on `fuel_type` → `country` → `currency` → `observed_at`. - `brent_prices` prunes on `observed_at`. - `fuel_taxes` prunes on `fuel_type` → `tax_type` → `valid_from`. - `gas_storage` prunes on `gas_day` → `site`. - `gas_daily_balance` prunes on `gas_day`. - `gas_crossborder_flows` prunes on `gas_day` → `point`. - `gas_household_offers` prunes on `listed_on` → `gas_price_lei_kwh`. - `articles` prunes on `published_at_local`. - `ILIKE '%needle%'` cannot prune: it decompresses that whole column. Prefer prefix predicates on the lowercased search companion columns where they exist. - Every file URL under `/v//` is immutable. Cache it as aggressively as you like. - Files are never rewritten in place — a new ingest writes a new version path. Re-read the manifest to pick up updates rather than polling the file URLs. - Pull only the columns you need. Parquet is columnar and the reader range-GETs what it reads. ## Do not - Do not scrape https://date-deschise.bunnytech.app HTML. Every number on those pages comes from the manifest above. - Do not hit the upstream source (https://monitorenergie.ro/) in bulk. This mirror exists so you do not have to. - Do not read DuckLake internal data files with a plain Parquet reader. They come with positional delete files, and ignoring those silently returns deleted rows. Use the ducklake extension, or use the published exports above. - Do not republish without the attribution line, and do not imply endorsement.