Skip to the content

Methodology

Where the data comes from, how we calculate, and what the terms mean.

holanap.hu shows the output of Hungary's solar panels, quarter-hour by quarter-hour. This page describes where the data comes from, what is measured and what is estimated, how we calculate from it, and what the terms mean. Wherever something is not our own calculation, the source is given alongside.

In short

Solar power has three parts. MAVIR, the Hungarian transmission system operator, measures the utility-scale plants and estimates rooftop systems and businesses' own panels — nobody measures those. The data is quarter-hourly; the utility-scale measurement runs a few minutes behind reality, the two estimates roughly a quarter of an hour. What we calculate ourselves (the records, the CO₂ savings, the signals in “When should I use electricity?”, the roof model) carries a calculated or model label. Where a value is missing, you see a gap, not a zero.

Where does the data come from?

Measured and estimated · MAVIR · energy-charts · Open-Meteo · OpenStreetMap

The headline figure and consumption come from MAVIR; the exchange price (HUPX day-ahead, DAM), the grid's CO₂ and the neighbours' data from energy-charts; irradiance from Open-Meteo. Below, source by source, we describe what we take from each.

The three parts from MAVIR

MAVIR has no JSON API: the charts on its website can be exported as XLSX, with quarter-hourly rows. The live data comes from a single chart, number 20002 (“Erőművi termelés primer források szerinti megoszlása és az import-export szaldó — nettó üzemirányítási mérés alapján”: generation by primary source and the import–export balance, based on net operational metering). Solar power is the sum of three parts:

  • Utility-scale plants (“Ipari PV”, industrial PV): measured data from MAVIR's operational metering, a few minutes behind reality.
  • Rooftop systems (HMKE, household plants of up to 50 kW): estimated data (nobody measures them; MAVIR estimates them), about a quarter of an hour behind.
  • Businesses' own panels (SCTE, plants generating for their own consumption): also estimated, in the same way.

Consumption is the net system load drawn from the grid plus the solar power generated on site (rooftops + businesses) — the same way holadelej.hu calculates it.

Why don't we use energy-charts' “Solar” series? Because it only sees the utility-scale plants. On 27 September 2026 utility-scale plants delivered 22.3 GWh, rooftops about 11 and businesses about 2.7 GWh: the two missing parts together make up more than a third of the total (MAVIR, energy-charts).

Quarter-hourly resolution

MAVIR's timestamps mark the end of the quarter-hour; we align everything to the start of the quarter-hour and show it in Budapest time. A day has 96 quarter-hours; 92 or 100 when the clocks change (100 on 25 October 2026). The daily total is the sum of the quarter-hourly power values (MW) × 0.25 h, in GWh.

“Now” is the last completed quarter-hour in which all three parts are present. The trap in the 20002 export: for a quarter-hour that has not been estimated yet, it writes 0 for rooftops and businesses instead of leaving the cell empty. In daytime (when the sun is more than 2° above the horizon in Budapest) the rooftop estimate is never exactly zero, so we treat it as missing, not as generation.

At night the utility-scale measurement is not zero either: it shows a value of around 100 MW (96 MW on the night of 29 September 2026). That is not sunlight, so after sunset the page does not show it as the headline figure.

The forecasts

The “Tomorrow” section and the forecast-versus-actual accuracy come from MAVIR's day-ahead forecast, from four separate exports: the forecasts for utility-scale plants (11838), rooftops (19240), businesses (19260) and net system load (7678). From the same exports we take the installed capacity (AC) of rooftops and businesses. For each of them the window runs from 00:00 yesterday to 24:00 tomorrow, Budapest time; the forecast changes once a day.

How often do we ask MAVIR?

MAVIR rejects requests that come too close together with HTTP 429 (measured on 29 September 2026: with a 0.3 s gap the second request already failed, with a 1.2 s gap the third; with gaps of 1.5–3 s seven requests went through). So each endpoint run requests at most one export (the hourly log run at most four, 3 seconds apart), the shared cache is the CDN, and the browser calls the five endpoints one after another with two-second pauses: the live one every five minutes, the forecasts at start-up and every half hour. The CDN times are in the table in the For developers section.

Delays and the “last good data”

The dot in the header shows the age of the measured data. Green (“fresh”) if the latest measured quarter-hour ended at most 45 minutes ago; yellow (“running later than usual”) if it is older; red (“the update is failing”) if two update rounds in a row have failed. The bar under the dot shows the age, up to 120 minutes.

Every endpoint that calculates from an external source — apart from the point-specific /api/pvgis and /api/idojaras, which only the CDN holds — also writes its successful response to a persistent store (Netlify Blobs). If the source does not respond — on the morning of 30 September 2026 MAVIR's export server was unresponsive for hours — the endpoint serves the store's last good data, with the elavult_mp field (how many seconds ago it was calculated) and the elavult_ok field (why it is not fresh; only responses served from the store contain it). The CDN keeps such a response for just 60 seconds, so that recovery shows up quickly. The header then turns yellow and reads: “MAVIR is not responding — data from N min ago”. If the store is empty too, the endpoint returns 502, and only the section that would use the data shows an error — the rest carries on.

A function scheduled every hour runs even without visitors: it fetches the live data, updates the records and writes a daily entry to the log for completed days (see Records and the log).

The other sources

  • energy-charts.info (Fraunhofer ISE): the Hungarian day-ahead exchange price, i.e. the HUPX DAM price, in euros/MWh — the source is Bundesnetzagentur | SMARD.de, CC BY 4.0; quarter-hourly since 1 October 2025, hourly before that. The same price also appears on the HUPX website; we take it from energy-charts' openly licensed data series. energy-charts also supplies the renewable-share forecast, the grid's CO₂ intensity, the neighbouring countries' solar power and consumption, and the yearly price and residual-load data (the duck). energy-charts allows about two requests per minute per IP address, so CO₂, the renewable share and the neighbours are fetched by a function that runs every ten minutes, using rotating collection: one item per run, in an eleven-slot (110-minute) cycle. A country's data can therefore be 2–4 hours old; the page fades rows older than 4 hours and leaves them out of the comparison.
  • Open-Meteo: irradiance (global, direct and diffuse), cloud cover and wind at 850 hPa for 160 grid points — hourly model values, not measurements; irradiance is the average over the preceding hour. The CDN keeps it for half an hour. CC BY 4.0.
  • OpenStreetMap: outlines and locations of 888 solar plants (Overpass, 29 September 2026), © OpenStreetMap contributors, ODbL. Where OSM gives no MW figure, the plant's size is unknown.
  • MAVIR PV statistics: installed capacity at the end of each year, and up to 31 August 2026: 8,871.2 MW, 339,652 systems (hence the “340,000”). The figures for rooftops and businesses are provisional.
  • Ember (yearly electricity data) and Eurostat (tps00001, population on 1 January 2025): each country's solar share of electricity generation, and solar power per person.
  • KSH, the Hungarian Central Statistical Office: a household uses 2,082 kWh of electricity a year, and there are 4.3 million households (2024; the same constants as on holadelej.hu). These drive the “What is that in real terms?” comparisons.
  • The sun's position: the algorithm of NOAA's solar calculator (after Meeus), computed in the browser and on the server; sunrise and sunset agree with the USNO values to within a minute.

Your browser requests nothing directly from MAVIR or energy-charts: our own server fetches the data and keeps it in a cache.

How we calculate

Calculated · from MAVIR data, the energy-charts price and the Open-Meteo model

Most of the calculations live in tested functions with no DOM (the same ones run in the browser and on the server); the page's modules only draw. Where a figure rests on an assumption, we say so.

Solar power and its share of consumption

  • Solar power (MW) = utility-scale plants + rooftops + businesses in the same quarter-hour. If any part is missing, that quarter-hour has no solar power — not zero.
  • Consumption = net system load drawn from the grid + rooftops + businesses. “Solar power now covers N% of consumption” is the ratio of the two.
  • Capacity factor = current solar power divided by installed capacity. Installed capacity: for utility-scale plants, the latest row of MAVIR's PV statistics; for rooftops and businesses, the latest installed (AC) value in MAVIR's forecast export.
  • Today so far (GWh): the solar power of the daylight quarter-hours since midnight Budapest time, summed × 0.25 h.
  • What is that in real terms? A household uses 2,082 kWh a year, about 238 W around the clock; there are 4.3 million households (KSH, 2024). An electric car is taken at 16 kWh/100 km, the Earth's circumference at 40,075 km. These are illustrative comparisons, not measurements.

The daylight quarter-hour

We only count a quarter-hour as solar power if, at its midpoint (7.5 minutes after it starts), the sun is above the horizon in Budapest: its elevation is greater than −0.833° (the upper edge of the solar disc on the horizon, allowing for refraction). The night-time value of around 100 MW in the utility-scale measurement is not sunlight — it counts towards neither the total nor the peak. Solar power “today so far”, the records, the CO₂ savings and the forecast accuracy are all made up of daylight quarter-hours only.

We judge the state of the country from the 160 grid points: if the sun is up at none of them, it is night (the next sunrise takes the place of the headline figure); if it is up at all of them, day; in between, dusk or dawn, and the headline figure stays. This state is calculated in the browser from the sun's position, without any data.

Records and the log

The page shows five records:

  • Highest solar output (MW): the highest solar power of any daylight quarter-hour, rounded to one decimal place.
  • Best day (GWh): the most solar power over a complete day (one in which every quarter-hour has solar power and consumption).
  • Highest solar share of consumption (%): the highest quarter-hourly ratio of solar power to consumption.
  • Lowest grid load (MW): the lowest net system load of any daylight quarter-hour.
  • Lowest price this year (€/MWh): this year's lowest HUPX DAM price, from the energy-charts price series.

Only a value strictly better than the previous one is a record; a tie is not. If a day's record keeps improving during the day, the log keeps one entry for that day, and the “previous” value is the record from before that day. The “New record today” badge appears at the top of the page if today's or yesterday's value broke a record; the first value (when there is nothing yet to beat) is not a new record.

The log is kept by a function that runs every hour: once the previous day has closed, if it is complete, it writes a daily entry (the day's GWh, the peak and its time, the largest share, the lowest load, the forecast accuracy); it keeps at most 400 days and the last 50 changes of the record history. The log counts from the first logged day: the Records section shows the start date, and since the hourly run logs the completed previous day, that is the day before deployment. From earlier, we know only one figure, the peak published by MAVIR: 7,116.7 MW on 13 August 2026 (4,447 + 2,003 + 667 MW; time unknown). So every record applies from the start of the log, except this one peak.

The “This year's peak” tile shows the largest of three values: MAVIR's published peak, the log's record, and today's or yesterday's live value. In a tie MAVIR's value wins, then the log's record — unless today's (or yesterday's) live value is itself the log's record (the hourly run has already stored it): then the live value stands, so that the tile says the same as the badge.

Forecast versus actual

MAVIR's day-ahead forecast is compared with the actual figures for the solar power of daylight quarter-hours, in quarter-hours where both are available. Deviation = (actual − forecast) / forecast, calculated in GWh: −19% means the outcome was 19% below the forecast. The 30-day accuracy is the mean of the absolute deviations over the 30 calendar days counting back from the last logged day; with fewer than five logged days we draw no chart and give no average. The “largest quarter-hourly deviation” only counts where the forecast is at least 500 MW: otherwise, at sunset, MAVIR's metering noise (a few hundred MW against a 15 MW forecast) would be the “largest”.

CO₂

Savings. Today's daylight solar power (GWh) × 442 g/kWh (which is the same as tonnes per GWh). The 442 is the difference between two IPCC life-cycle medians: natural gas (combined cycle) at 490 and utility-scale solar at 48 g/kWh (IPCC AR5; Wikipedia's summary). In other words, we do not treat solar power as emission-free either. The result is a comparison — “compared with an average gas-fired power station producing the same” — not a measurement, and it does not claim that solar power actually displaced a gas plant. If today's daylight solar power does not yet amount to at least one tonne (at night, at dawn), we show yesterday's. The text rounds to two significant figures (“5,300 tonnes”, “240 tonnes”). We checked the 490 against the Wikipedia summary; the article also cites the 48 as the IPCC life-cycle median, but we have not checked it separately.

The grid's current intensity (g CO₂/kWh): energy-charts' co2eq series, quarter-hourly, with a forecast. The energy-charts API does not document this series, so we do not know whether it is generation- or consumption-based: we show it as an estimate. It only counts as “now” if the series is no more than 75 minutes behind the current time and was written to the store no more than three hours ago. For comparison there is Ember's annual average: 163 g/kWh for Hungary in 2025. Ember's figure and the energy-charts estimate do not necessarily use the same method (we have not checked whether Ember's is life-cycle- or combustion-based), so this is only an order-of-magnitude comparison.

The cloud drop

We mark a cloud drop when utility-scale output fell within 30 minutes (in one or two quarter-hourly steps) by so much that the difference between that fall and the fall in MAVIR's forecast is at least 400 MW. We subtract the forecast because at sunset output falls regardless of clouds. If the forecast for those quarter-hours is unknown, we mark nothing: we could not tell clouds from sunset. Only today's quarter-hours that have already been measured count; drops that run into each other merge into one, and the band only covers the falling steps. The “−900 MW” label is the largest fall within the drop. We do not measure the cause: “cloud drop” is simply our name for a fall larger than the forecast's.

The levels in “When should I use electricity?”

There are three levels, hour by hour. Each hour has a renewable share (energy-charts' forecast) and a solar share of consumption (for today the actual value where there is one, otherwise MAVIR's forecast):

  • Plenty of green power (green): a renewable share of at least 70%, or solar power covering at least 50% of consumption.
  • Moderate green power (olive green): at least 45% or at least 25% respectively.
  • Little green power (dark): less than that.
  • No data (dashed outline): if neither the renewable share nor the solar share is known. If only one of them is known (energy-charts often publishes tomorrow's renewable share later), the colour comes from that one, and the label says so.

The sunniest three hours are the three consecutive hours with the highest average solar power; we only name them if all the remaining hours of the day (for tomorrow, the whole day) are known and the forecasts have arrived, and the average is at least 100 MW. The cheapest three hours are the window of 12 consecutive quarter-hours with the lowest average price, to the nearest quarter-hour (“11:30–14:30”); for tomorrow only if every quarter-hour of the day has a price. The same calculation produces the events in /api/naptar.ics (a calendar whose events are in Hungarian). The negative-price periods come from the quarter-hourly price series.

The price is the exchange (day-ahead) price, the HUPX DAM price. Hungarian household electricity prices are regulated, and the exchange price does not change them: the signal shows when there is a surplus on the grid, and it matters to anyone on a dynamic tariff (businesses, EV drivers).

Negative prices

A price is negative if it is strictly below zero (zero is not). Hours are counted with the actual time step: a quarter-hourly value counts as 0.25, an hourly value from before October 2025 as 1 hour (a single step never counts for more than one hour, so a gap does not stretch the step before it). The “this year so far” and “same period last year” figures are cut off at the same last known day. In the negative-price calendar, each day's colour is set by its number of negative hours: 0, up to 1, 1–3, 3–6, more than 6 hours.

Measured values (energy-charts, bzn=HU): 2025 had 281 negative-price hours, 2026 had 223.5 hours up to 28 September; the lowest price was −500 €/MWh (26 April 2026, 13:15). We found no published figures on the extent of curtailment (neither from MAVIR nor from energy-charts), so we make no claims about it.

The roof model

A model, not a measurement. The roof's output comes from the hourly Open-Meteo irradiance (direct and diffuse) at the nearest grid point (of 160), with the sun's position at the middle of the hour, projected onto the plane of the panel with an isotropic sky model (Liu–Jordan): direct irradiance with the cosine of the angle of incidence, diffuse irradiance with the share of the sky the panel can see, and ground-reflected irradiance with an albedo of 0.2. From this, power = kWp × irradiance / 1000 W/m² × 0.86 (performance ratio: inverter, cabling, heat, soiling). It cannot see shade, snow or the age of the panels: an indicative estimate, not a sizing calculation. The selectable values: 1–20 kWp (in half-kW steps), 0–90° tilt (in 5° steps), and five orientations (east, south-east, south, south-west, west).

PVGIS and the simulation

The average year. The roof's annual output comes from PVGIS (version 5.3, European Commission, JRC; PVGIS-SARAH3), for 1 kWp with 14% system losses. The monthly values are averages over the available years; the hourly series is a single year, shaped like 2023, which we scale to the long-term annual average and to the installed kWp. PVGIS's hourly value is in fact the instantaneous value from the satellite image at HH:10; we treat it as an hourly average, so the curve lags consumption by about 20 minutes — this barely changes the annual total or self-consumption. The endpoint expects the location to one decimal place (0.1°), between 45.7 and 48.6° N and between 16.1 and 22.9° E.

Consumption is a simplified time-of-day sample profile, not measured data: we found no open Hungarian residential load profile (30 September 2026). A morning and an evening peak, base load at night; more in winter (a multiplier of 1.18 in January, 0.86 in June). We scale the profile to the annual consumption.

The simulation steps through a year hour by hour. The roof covers consumption first; the surplus goes into the battery (if there is room), the rest into the grid; a shortfall is met first by the battery, the rest by the grid. The battery's power defaults to half its capacity (kW), the round-trip efficiency is 0.9 (its square root applies to both charging and discharging), and the year starts with an empty battery. Self-consumption = the share of generation used on site; self-sufficiency = the share of consumption not drawn from the grid.

The bill. Base prices (HUF/kWh): 36.9 up to 2,523 kWh a year, 70.104 above that — according to the regulated tariff table of January 2023; we found no confirmed source for 2026, so check your bill. We take the prices as gross (that is how the source labels them), but the gross/net question is open: another source called the 36 net. The feed-in price under gross billing, by region: ELMŰ 5.11; MVM Émász 4.94; MVM Démász 5.25; E.ON and OPUS TITÁSZ 4.39 (MVM Optimum, undated; under Annex 2 of NFM Decree 4/2011). Under net metering you pay the difference between the year's purchases and feed-in at the tiered price; if feed-in is the larger, we value the surplus at the feed-in price (assumption: we found no source for this). Under gross billing we calculate month by month, with one twelfth of the reduced-price band per month (assumption: suppliers prorate it). Payback = your own cost / the annual saving, with no price changes. The grant from the Home Energy Storage Programme (Otthoni Energiatároló Program) is capped at 2,500,000 HUF together with new solar panels, and 1,800,000 HUF for storage added to an existing system (hvg, 28 September 2026).

The billing rule

Annual net metering applies to anyone who submitted their grid connection request by 13 September 2023 and commissioned the system by 1 January 2026 — for ten years from commissioning (or expansion). Systems that were already more than ten years old on 1 January 2024 moved to gross billing at that point. Everyone else is on monthly gross billing: what they feed in, the supplier buys at the feed-in price (about 4.4–5.3 HUF/kWh depending on the region), and what they draw from the grid, they pay for at the normal price.

Sources: MVM Next (“Szaldó HMKE elszámolás”, i.e. net-metering billing for household plants, undated: the 13 September 2023 and 1 January 2026 cut-offs, the ten years); on 17 April 2025 the Constitutional Court struck down the cut-off date of 7 September 2023 (economx, 17 April 2025), with effect from 31 May 2025; the new 13 September cut-off is also mentioned in hvg's analysis (30 April 2025); hvg (15 June 2025) reports on the move to gross billing after ten years. On 20 January 2026 the Constitutional Court rejected the constitutional complaints against the phase-out of net metering: the ten-year phase-out is not unconstitutional (the Constitutional Court's press release). What is uncertain: we could not find the text of the amending decree. This is not legal advice: your bill or your supplier's customer service will tell you for sure.

Is the roof doing well? The ratio of today's measured kWh (as shown on your inverter) to today's kWh according to the model: 0.85–1.2: good; 0.6–0.85: fair; below 0.6: poor; above 1.2: more than the model. Below a model value of 0.5 kWh there is nothing to compare.

When to switch it on? An appliance's best start time is the one at which the roof covers the largest part of the energy for the run (hour by hour, min(generation, demand)); in a tie, the earlier one. Typical values (average power × running time): dishwasher 0.7 kW × 2 hours; washing machine 0.5 kW × 2 hours; heat-pump dryer 0.8 kW × 2 hours; electric water heater 2 kW × 3 hours; EV (home charger, single-phase) 3.7 kW × 4 hours. These are defaults; your appliance may differ.

The county model

Model. We estimate the current output of utility-scale plants county by county: the plants' locations and sizes come from OpenStreetMap (where there is no MW figure, from the area, at 0.64 MW per hectare — the aggregate ratio of the 114 plants for which both MW and area are known: total MW divided by total hectares), irradiance from the Open-Meteo value at the nearest grid point. We scale the sum of each plant's MW × irradiance / 1000 to MAVIR's measured utility-scale output: the split between counties is a model, the total is measured. A plant belongs to the county its centre lies in; plants near the border that fall outside every county go into the “other” row (there were 3 of them on 29 September 2026). The plants in Budapest (19 of them, about 13 MW) count towards Pest county. Where a county has no irradiance data, it says “no data”, not zero. We do not know how rooftops and businesses break down by county, so the model only covers utility-scale plants. At night (when the measured output is not sunlight) we do not calculate it.

Glossary

Explanation · sources in the entries
Measured, estimated, model, calculated, forecast
The words in the source labels. Measured: data from an instrument (the output of utility-scale plants). Estimated: someone estimates it rather than measuring it (the output of rooftops and businesses, estimated by MAVIR). Model: a value from a weather or capacity model (irradiance, the county breakdown, the roof model). Calculated: we calculated it from measured data (records, CO₂ savings). Forecast: MAVIR's day-ahead plan.
Solar power
The combined output of utility-scale plants, rooftop systems and businesses' own panels, in MW. The three parts come from different sources: see Where does the data come from?
Utility-scale plants
MAVIR's “Ipari PV” series: plants above 50 kW that feed into the grid. MAVIR measures their output.
HMKE
Rooftop systems: household plants of up to 50 kW (háztartási méretű kiserőmű), as MAVIR labels them. Nobody measures their output; MAVIR estimates it.
SCTE
Businesses' panels generating for their own consumption, as MAVIR labels them. MAVIR estimates their output too.
Net system load
What the country has to draw from the grid: consumption minus the solar power generated on site (on rooftops and at businesses). The page also calls it “grid load”.
Consumption
Net system load plus the solar power generated on site on rooftops and at businesses (as on holadelej.hu).
MW, MWh, GWh, kWp
The megawatt (MW) measures power: the rate at which something generates or consumes at a given moment. The megawatt-hour (MWh) and the gigawatt-hour (GWh, 1,000 MWh) measure energy: how much was generated over a period. 1 MW for one hour is 1 MWh. A quarter-hourly MW value × 0.25 h gives the energy of that quarter-hour. kWp is a solar panel's rated power in kilowatts. At 2,082 kWh per household per year, 1 GWh is roughly a year's consumption for 480 households.
Installed capacity and capacity factor
Installed capacity is the combined rated power of all installed solar panels (8,871.2 MW on 31 August 2026, MAVIR). The capacity factor is current solar power as a share of it. The highest published solar power (7,116.7 MW, 13 August 2026) is about 80% of installed capacity at the end of August (our calculation).
Quarter-hour
The time unit of the data: a day consists of 96 quarter-hours (92 or 100 when the clocks change). The timestamp marks the start of the quarter-hour.
Daylight quarter-hour
A quarter-hour at whose midpoint the sun is above the horizon in Budapest. Only these count as solar power: details.
Day-ahead price and forecast
Electricity is traded on the exchange a day in advance, in Hungary on the HUPX day-ahead market (DAM); tomorrow's price is settled after about 13:00. We give it in euros per megawatt-hour (€/MWh); it has been quarter-hourly since 1 October 2025. It is not what households pay (their price is regulated): it shows when there is a surplus on the grid and when there is a shortage. MAVIR's day-ahead forecast is a separate thing: the generation and load expected for the next day.
Negative price
When the exchange price drops below zero: anyone buying electricity at that moment gets paid for it. It happens when there is more electricity than the grid can take — in Hungary typically in the sunny midday hours. 2025 had 281 negative-price hours, 2026 had 223.5 hours up to 28 September; the lowest price was −500 €/MWh (26 April 2026, 13:15). Calculated from energy-charts data.
Residual load and the duck
Subtract solar and wind generation from consumption, and what remains has to come from other power plants and imports. On a summer weekday it sags deeply at midday (the duck's belly) and climbs steeply in the evening (its neck); the name comes from the Californian grid operator. We calculate it from energy-charts' “Residual load” series.
Cloud drop
A rapid fall in utility-scale output, steeper than the fall in MAVIR's forecast: details.
Net metering and gross billing
The two ways household solar is billed. Annual net metering: you pay the difference between the year's purchases and feed-in, so you can take back the summer surplus in winter. Monthly gross billing: the supplier buys the electricity you feed in at the feed-in price, and you pay the normal price for what you draw. Which applies to you: the billing rule.
Last good data
If the source does not respond, the endpoint serves its stored, last successful response, flagged with the elavult_mp field. See the delays.

Frequently asked questions

Explanation · sources in the answers
Why isn't the output of utility-scale plants zero at night?

Because MAVIR's operational metering shows a value of around 100 MW even at night (96 MW on 29 September 2026). That is not sunlight. So after sunset the night-time state takes the place of the headline figure, and only daylight quarter-hours count towards totals, peaks and records.

Why is your figure different from energy-charts' “Solar” series?

Because energy-charts' Hungarian “Solar” series only sees utility-scale plants. It matches MAVIR's “Ipari PV” series (22,305 and 22,315 MWh on 27 September 2026), but leaves out the output of rooftops and businesses. We add all three, from MAVIR's 20002 export.

Why is consumption different from MAVIR's net system load?

Net system load is the power drawn from the grid; the electricity that rooftops and businesses generate on site is missing from it. Our consumption is the sum of the two — MAVIR's “Teljes terhelés” (total load) series gives the same, and holadelej.hu calculates it this way too. That is how we can say what percentage of consumption solar power covers.

Why isn't tomorrow's price there yet?

Because the day-ahead exchange price is settled after about 13:00. Until then the Tomorrow tab on “The price of midday power” chart cannot be selected, and the “When should I use electricity?” section says that tomorrow's price has not been set yet. The calendar (/api/naptar.ics, in Hungarian) only includes tomorrow if every quarter-hour of the day has a price.

Does solar power really replace gas?

We do not measure that. The CO₂ saving is a comparison: how much the same amount of electricity would have emitted if an average gas-fired power plant had generated it (490 g/kWh), minus the solar panels' own life-cycle emissions (48 g/kWh) — 442 g/kWh. See CO₂.

If the price is negative, is my electricity cheaper too?

No. Hungarian household electricity prices are regulated, and the exchange price does not change them. The exchange price shows when there is a surplus on the grid; it matters to anyone on a dynamic tariff (businesses, EV drivers). These are the hours when the grid carries the most solar power: if you can, run the washing machine or the dishwasher, or charge the car then.

How accurate is MAVIR's forecast?

The log shows it; we do not just assert it: for every completed day the log works out the difference between forecast and actual, and once there are at least five days the “Tomorrow” section shows the average deviation over the last 30 days. Until there are enough days, the page says so instead of giving a figure. The method: Forecast versus actual.

Can I download the data?

Under the charts there is a “Download: CSV” link. The file is built in your browser from the data already loaded (comma-separated, with decimal points, UTF-8 with a BOM so that Excel opens it correctly); its first lines give the source and the licence. For programs, the JSON endpoints are the better choice.

Does the site use cookies or track visitors?

No. The roof calculator remembers its settings (location, capacity, tilt, orientation) only in your browser's storage (localStorage) and never sends them anywhere; the “Reset” button clears them.

How to cite

Licence · MAVIR · energy-charts, Open-Meteo, Ember (CC BY 4.0) · OpenStreetMap (ODbL) · PVGIS

If you reuse a figure or a chart, you can use this credit line:

Source: holanap.hu, based on MAVIR data

If you also reuse the exchange price, add:

Source: holanap.hu, based on MAVIR data; price: HUPX DAM, energy-charts.info (Bundesnetzagentur | SMARD.de, CC BY 4.0)

The calculated and model values (the records, the CO₂ savings, the signals in “When should I use electricity?”, the roof model, the county breakdown) are not published by MAVIR; we calculated them: cite them as calculated or model values, not as measurements.

The sources' licences

  • MAVIR. The website's legal notice permits quotation for information purposes; it says nothing about reusing the data (derived data, an open licence, the data export). That is why the source label sits next to the data everywhere (e.g. “Measured and estimated · MAVIR · quarter-hourly”), the CSV headers say “Source: MAVIR”, and calculated values are labelled separately. For the terms of reuse, see the For developers section.
  • energy-charts.info (Fraunhofer ISE; the price comes from Bundesnetzagentur | SMARD.de): CC BY 4.0; the licence asks for attribution.
  • Open-Meteo: CC BY 4.0.
  • Ember (yearly electricity data): CC BY 4.0.
  • OpenStreetMap: © OpenStreetMap contributors, ODbL.
  • PVGIS: © European Union (European Commission, JRC).
  • ENTSO-E (the data behind the duck and the solar capture price, via energy-charts), Eurostat (population), KSH (households), NOAA (the sun-position algorithm): credited on the site; the repository does not record their licences.

For developers

Endpoints · JSON, no parameters · CDN times from the response headers

The site's data comes from public JSON endpoints; you can use the same ones. The field names are Hungarian identifiers, so we gloss them below. The timestamps (ido “time”, t in the records and the log, generalva “generated”, ig “up to”) are unix seconds; the ido field of the rows is the start of the quarter-hour or hour. Exceptions:

  • the ido_vege field (“end time”) of /api/idojaras is the end of the hour (unix seconds);
  • the ido field of /api/nap/mezo is Budapest local time as a string ("2026-09-30T00:00"), and marks the end of the hour (irradiance is the average over the preceding hour);
  • the t field of /api/nap/zold (co2.t, megujulo.t) and of /api/nap/szomszedok (orszagok.<country>.t) is in milliseconds: the time it was written to the store (their rows' ido field, however, is in seconds);
  • days are "YYYY-MM-DD" strings: rekordok.kezdet, the log's nap (“day”) field, and the first element of each pair in idei.napi_negativ.

Power is in MW, prices in €/MWh. A missing value is null, not zero.

Endpoints, what they return and how long the CDN caches them
PathWhat it returnsRefresh (CDN)
/api/nap/most The live quarter-hourly rows from 00:00 yesterday to 24:00 tomorrow (Budapest time): ido, ipari (utility-scale plants), hmke (rooftops), scte (businesses), halozat (net system load), most (“now”: the index of the last completed quarter-hour with all values present), generalva. Source: MAVIR 20002. 10 minutes
/api/nap/elore/ipari
/api/nap/elore/hmke
/api/nap/elore/scte
/api/nap/elore/terheles
MAVIR's day-ahead forecast on the same time axis: ido, elore (forecast), generalva; hmke and scte also return the beepitett field (installed capacity, AC, MW). Four separate endpoints, each backed by one MAVIR export. 2 hours (the four expiry times slightly staggered)
/api/nap/mezo Today, hour by hour, at 160 grid points (Open-Meteo, model): ido, and in each element of pontok (points) lat, lon, ghi, dni, dhi (W/m²), felho (cloud cover, %), sz850, ir850 (wind speed and direction at 850 hPa); generalva. 30 minutes
/api/ar Today's and — once it exists — tomorrow's exchange price (HUPX DAM) per quarter-hour (ido, ar “price”), and the idei (“this year”) statistics: negativ_ora (negative-price hours), negativ_napok (days with a negative price), legkisebb (lowest price), napi_negativ (negative hours per day), ig. Source: energy-charts. 15 minutes (60 s if the daily price is stale or this year's statistics are missing; the server keeps this year's statistics for 6 hours)
/api/nap/rekordok The stored records — rekordok: csucs_mw (peak), nap_gwh (best day), arany (share), netto_min (lowest grid load), tortenet (history), kezdet (start) — and the last 35 days of the log (napok, “days”). Makes no external requests. 10 minutes
/api/nap/naplo Every day in the log (at most 400): napok, with daily totals, the peak and the forecast accuracy. 1 hour
/api/nap/zold The Hungarian grid's CO₂ intensity (co2) and renewable share (megujulo), energy-charts; a missing item is null. The t field of both is the store write time in milliseconds, their ido array is in seconds. 10 minutes
/api/nap/szomszedok Today's solar power (nap) and consumption (fogyasztas) for seven countries (at, sk, ro, hr, si, cz, pl) under orszagok (“countries”), on the ido axis (seconds), energy-charts; a missing country is null. The countries' t field is the store write time in milliseconds. 10 minutes
/api/naptar.ics iCalendar: today's remaining and tomorrow's negative-price periods and the cheapest three hours; the event texts are in Hungarian. It gives the exchange price, not the household tariff. 1 hour (60 s if the price is stale)
/api/pvgis/<lat>/<lon>/<tilt>/<azimuth> A roof's average year for 1 kWp (PVGIS): hely (location), ev_kwh (annual output in kWh), havi_kwh (12 monthly values), ev and atlag_evek (the year of the hourly series, 2023, and the averaged years), kezdet (the first hour of the hourly series, unix seconds), ora_w (hourly power in watts, for the year 2023), forras (source). The location is in degrees rounded to one decimal place (e.g. 47.5/19.0), the tilt 0–90° in 5° steps, the azimuth 90, 135, 180, 225 or 270 (degrees from north); for a horizontal panel only 180. Any other path shape: 404. 30 days
/api/idojaras/<lat>/<lon> Today's and tomorrow's hourly irradiance at the point (Open-Meteo, model): hely, ido_vege (the end of the hour), ghi, dni, dhi, felho, forras. 30 minutes
/hirfolyam.xml Atom feed: new records and summaries of completed months (a social-media bot can be hooked up to it). The feed is in Hungarian. 1 hour

The rules

  • No endpoint accepts query parameters. Any ?… request gets a 400 ({"hiba":"ez a végpont nem fogad lekérdezési paramétert"}, i.e. “this endpoint does not accept query parameters”), and the CDN keeps that for a day. The reason: a query would be a new CDN key, and the request would run all the way to MAVIR, which rejects frequent requests with a 429. The PVGIS and weather endpoints take their parameters in the path; anything not in the form described here gets a 404.
  • Only GET (and HEAD); any other method gets a 405.
  • If the source does not respond and there is stored last good data, the response is a 200, with the elavult_mp field (how many seconds ago it was calculated); responses served from the store also include elavult_ok (why it is not fresh). The CDN keeps this for 60 seconds. If there is no stored data, a 502 ({"hiba":"…"}, with the error message in Hungarian), cached on the CDN for 30 seconds.
  • Every response carries an X-Robots-Tag: noindex header.
  • Do not poll more often than the table's “Refresh” column: until then the CDN returns the same response, so more frequent requests are pointless.

Example: a Home Assistant REST sensor

The response of /api/nap/most consists of parallel arrays: ipari, hmke, scte, halozat and ido share the same index, and most is the index of the quarter-hour in which all three solar series are present. So current solar power is the sum of the three series at the most index:

rest:
  - resource: https://holanap.hu/api/nap/most
    scan_interval: 600
    sensor:
      - name: "Hungarian solar power"
        unique_id: holanap_naparam
        unit_of_measurement: "MW"
        device_class: power
        state_class: measurement
        value_template: >-
          {% set i = value_json.most %}
          {{ (value_json.ipari[i] + value_json.hmke[i] + value_json.scte[i]) | round(1) }}

scan_interval: 600 (10 minutes) matches the CDN time. The sensor gives the value of the latest completed quarter-hour, not the instantaneous one. At night the utility-scale measurement is not zero (a value of around 100 MW), but that is not sunlight; after sunset the page does not display it. If you want to exclude it from your sensor too, wrap the template in a {% if is_state('sun.sun', 'above_horizon') %}…{% else %}0{% endif %} condition.

Terms of reuse

MAVIR makes no statement about reusing its data; we offer our endpoints for informational use, with attribution. A sample credit line is in the How to cite section. If you have commercial or large-scale use in mind, it is worth asking MAVIR for written permission.

Embedding

Measured and estimated · MAVIR · updates every five minutes

You can put a live “now” card on your website: current solar power (in MW or GW) and what percentage of consumption it covers. The card updates every five minutes from the /api/nap/most endpoint; at night, instead of the figure, it says that the panels are idle. Clicking the card opens holanap.hu in a new tab. The card is in Hungarian. Paste in this code:

<iframe src="https://holanap.hu/beagyaz/nap/" width="320" height="150" style="border:0" title="Where's the sun? — live solar power" loading="lazy"></iframe>

This is how it looks live (the same iframe, loaded from our own site):

  • You can change the size in the code; the card adapts to the size of the frame. The recommended size is 320 × 150 pixels.
  • The card calls the /api/nap/most endpoint from its own domain, so it shares the CDN cache with the site: embedding puts no extra load on MAVIR.
  • In a browser with a light colour scheme the card is light; in a dark one, dark.
  • The card carries its own credit line (“holanap.hu · MAVIR-adat”, i.e. MAVIR data); the terms are in the For developers section.
  • Why can only this page be embedded? The site's other pages cannot be put in a frame because of the security headers (X-Frame-Options: DENY, frame-ancestors 'none'). The embeddable card is a separate page, served by a function with its own headers (frame-ancestors *), because the static header rules do not apply to function responses.

What's changed

The site's history

— the first version

  • Now: current solar power in MW, split into its three parts (utility-scale plants, rooftops, businesses), its share of consumption, the 48-hour chart, the night-time state.
  • Where is it sunny now? A map of irradiance and cloud cover, the line between day and night, the outlines of 888 solar plants.
  • Tomorrow: MAVIR's day-ahead forecast, quarter-hour by quarter-hour.
  • The price of midday power: the exchange price per quarter-hour, this year's negative hours, the price captured by utility-scale plants.
  • The duck (residual load on summer weekdays since 2020) and My roof (a roof under the current weather).
  • The boom: installed capacity since 2015, with a timeline; share cards and icons.

  • Persistent store and “last good data”: if MAVIR does not respond, the page shows the last good data, labelled with its age.
  • Log and records: a log updated every hour, the accuracy of yesterday's forecast, the “New record” badge, the Records section and this year's peak.
  • How green the grid is: CO₂ intensity, the CO₂ saved by solar power (442 g/kWh), the renewable share and the neighbours' data, via rotating collection.
  • Now: a shareable image, cloud drops (“What happened today”), “updated” in the source labels, CSV downloads under the charts.
  • Electricity price calendar (/api/naptar.ics, in Hungarian): negative-price periods and the cheapest three hours.
  • Tomorrow: yesterday's forecast versus actual, the 30-day accuracy of MAVIR's forecast.
  • When should I use electricity? An hourly green-power signal for today and tomorrow, the sunniest and the cheapest three hours.
  • The price of midday power: the negative-price calendar, the comparison with last year.
  • The neighbours: solar power per person right now, and solar's share of electricity generation year by year (Ember).
  • Installable site (manifest, icons); the roof calculator remembers your settings in the browser.
  • Two point-specific endpoints: /api/pvgis/… (a roof's average year) and /api/idojaras/… (two days at a point).
  • Log endpoint (/api/nap/naplo), Atom feed (/hirfolyam.xml, in Hungarian) and the embeddable card (/beagyaz/nap/, in Hungarian).
  • This methodology.

  • A year with your roof: the roof's average year according to PVGIS, month by month; how much of it you use straight away, with or without a battery; the bill under annual net metering and under monthly gross billing; the payback with the Home Energy Storage Programme. Consumption is a sample profile, not measured.
  • Net metering or gross billing? Three questions on which billing scheme you are on, and until when.
  • Is my roof doing well today? Today's output as shown on your inverter, compared with what the model says it should have produced so far.
  • When to switch it on? From which hour the roof covers the most of a dishwasher's, washing machine's, dryer's, electric water heater's or EV's run, for the next two days.
  • Look back: this month and last month, a chosen day among the logged days next to the same day last year, every logged day as bars, with CSV.
  • By county (model): a new map layer showing the current output of utility-scale plants by county; the total is MAVIR's measured value, the split between counties is a model. The scale adapts to the county currently generating most, and the legend gives the steps in MW; Pest's row reads “Pest (incl. Budapest)”. All counties are also available as a table and as CSV.
  • English page: holanap.hu in English, with six sections.
  • Feed: new records and completed months in an Atom feed (/hirfolyam.xml, in Hungarian), linked in the site's header and footer.
  • Embeddable card: current solar power in an iframe, with ready-made code in the Embedding section.

  • Three languages: the whole site and this methodology are now also in English (holanap.hu/en) and German (holanap.hu/de), with every section, and a language switcher in the header. The figures in all three versions come from the same code; only the text and the number format differ. This replaces the earlier English page with six sections.

We will also note here if the calculation method or a source changes.