Data sources
Where our information comes from, which regions have none, and where we can be wrong.
What we use
There are three groups of data: operator schedules (the foundation), Ukrenergo’s grid regime posts (to recognise emergency outages) and independent signals (to notice divergence from a schedule). The primary data belongs to its authors: we do not alter it, only bring it into one shape.
Not every channel is verified equally. Some we checked on live data, some on saved samples. That is why we show data freshness for each region and mark it “stale” when an operator stays silent for long.
Operator schedules
- An open collection of regional operator schedules. A public dataset that gathers the schedules of twelve regional operators into one format (Cherkasy, Chernihiv, Khmelnytskyi, Kharkiv, Lviv, Ivano-Frankivsk, Poltava, Rivne, Ternopil, Zakarpattia, Zaporizhzhia, Zhytomyr). It has no separate licence, so we credit its authors and do not pass the data off as ours.
- DTEK (Kyiv, Kyiv Oblast, Dnipro, Odesa). DTEK’s sites are protected against automated access and we do not bypass that protection. Instead we take data from an open MIT-licensed mirror. For Kyiv and Dnipro there is also a Yasno source.
- Yasno. A public schedule API for Kyiv and Dnipro (DTEK and CEK). It sometimes refuses requests from servers, so we have a fallback source.
- Mykolaivoblenergo. The operator’s own JSON API.
- Lvivoblenergo and Prykarpattiaoblenergo. The operators’ own APIs as a fallback. An empty response from them is normal when the day’s schedule is not yet published.
Grid regime
Ukrenergo posts in Telegram messages like “Information about outages”, “State of the power system” and “Attention” about emergency outages. We read the channel’s public web page, recognise the post type and the region, and keep the text minimal and linked to its source. This lets us show “Emergency outages” where hourly schedules do not apply.
We tested the classifier on real posts, but Ukrenergo’s wording changes. When a post cannot be recognised unambiguously, we do not invent a regime.
Signals
Independent signals are power sensors, resident reports and indirect indicators: EV charger availability and regional internet indicators. They only adjust the estimate, and their influence is capped. Reports and sensor data are published only in aggregate, with a delay of at least 30 minutes and when there are at least five. We never publish addresses or coordinates of sources. More in “How it works”.
To be honest: signals are unevenly available, and in many regions there are few or none. There the estimate rests on the schedule alone and confidence is lower.
Coverage by operator
The registry has 25 operators. For 19 of them a schedule source is configured; for the rest there is no usable source. For Crimea, Sevastopol and Luhansk Oblast the registry has no operator, and the map shows “No data”.
| Operator | Region (ISO) | How we get the schedule |
|---|---|---|
| DTEK Kyiv Electric Networks (KEM) | UA-30 | Yasno (public schedule API) (fallback: Open mirror of DTEK data) |
| DTEK Kyiv Regional Electric Networks (KREM) | UA-32 | Open mirror of DTEK data |
| DTEK Dnipro Electric Networks (DnEM) | UA-12 | Yasno (public schedule API) (fallback: Open mirror of DTEK data) |
| Central Energy Company (CEK), Dnipropetrovsk region | UA-12 | Yasno (public schedule API) |
| DTEK Odesa Electric Networks (OEM) | UA-51 | Open mirror of DTEK data |
| DTEK Donetsk Electric Networks (DEM) | UA-14 | The operator publishes no schedule |
| Cherkasyoblenergo | UA-71 | Open collection of regional operator schedules |
| Chernihivoblenergo | UA-74 | Open collection of regional operator schedules |
| Khmelnytskoblenergo | UA-68 | Open collection of regional operator schedules |
| Kharkivoblenergo | UA-63 | Open collection of regional operator schedules |
| Lvivoblenergo | UA-46 | Open collection of regional operator schedules (fallback: Lvivoblenergo’s own API) |
| Prykarpattiaoblenergo | UA-26 | Open collection of regional operator schedules (fallback: Prykarpattiaoblenergo’s own API) |
| Poltavaoblenergo | UA-53 | Open collection of regional operator schedules |
| Rivneoblenergo | UA-56 | Open collection of regional operator schedules |
| Ternopiloblenergo | UA-61 | Open collection of regional operator schedules |
| Zakarpattiaoblenergo | UA-21 | Open collection of regional operator schedules |
| Zaporizhzhiaoblenergo | UA-23 | Open collection of regional operator schedules |
| Zhytomyroblenergo | UA-18 | Open collection of regional operator schedules |
| Vinnytsiaoblenergo | UA-05 | Open collection of regional operator schedules |
| Mykolaivoblenergo | UA-48 | Mykolaivoblenergo API |
| Volynoblenergo | UA-07 | Schedule is published as an image |
| Sumyoblenergo | UA-59 | Schedule is published as an image |
| Kirovohradoblenergo | UA-35 | Schedule is published as Telegram text |
| Chernivtsioblenergo | UA-77 | Schedule is on a page without structured data |
| Khersonoblenergo | UA-65 | The operator publishes no schedule |
Limits
- A schedule is the operator’s plan. It can change without notice, and reality can diverge from it.
- Delay. We poll sources periodically, so an operator’s change does not appear instantly. Data older than 45 minutes is marked “stale”.
- The level of detail is queue and region. There is no house on the map. The one exception is the address lookup for Kyiv and Dnipro: it comes from Yasno’s address service, we take only the queue number from it and do not store the address.
- Some regions have no schedule, see the table above. There we show “No data”.
- We do not bypass technical protections on operators’ sites and do not publish content we have no right to.
Maps and attribution
Region and district boundaries: © OCHA / SSPE “Kartographia” (CC BY-IGO). Settlement names and coordinates: GeoNames (CC BY 4.0).
Signals: map and data — SvitloBot (aggregates by oblast and schedule group, at least 5 sensors); air-quality stations — SaveDnipro / SaveEcoBot (CC BY 4.0); public sensors — Sensor.Community; public probes — RIPE Atlas; charging stations — TOKA (weak supplementary signal only).