
PVGIS, solar power per location
The Joint Research Centre's Photovoltaic Geographical Information System calculates for any coordinate how much sunlight falls and what a solar PV system yields: per year, per month, per hour, for a fixed or tracking system, and a typical meteorological year. It uses radiation data from satellite images (PVGIS-SARAH3 for Europe). There is a web tool and an API without registration. Note: robots.txt disallows all automated visitors, so the Open Data Index does not call PVGIS itself.

Solar radiation on a flat surface in De Bilt (KNMI measurements): an average of 1,038 kWh per m² a year in 1996–2025, 8% more than in 1958–1987
Solar radiation on a flat surface in De Bilt (KNMI measurements), 1958 – 2025, in kWh per m² a year. That is the highest point in the series.
What can you do with it?4 ideas
Do solar panels pay off in your street?
Enter your address, roof pitch and orientation in the web tool. PVcalc gives the annual yield (E_y, kWh) and the irradiation on the panel (H(i)_y, kWh/m²).
Summer versus winter
The monthly output shows how unevenly solar power is spread over the year. Useful for stories about net metering and grid congestion.
East-west or south?
Calculate the same spot with aspect -90, 0 and 90 (east, south, west). East-west yields less per year but spreads output over the day.
North versus south in the Netherlands
Compare a few places with the same settings. Put them next to the measured solar radiation at KNMI stations.
How to process it4 steps
Start in the web tool
The web tool does the same calculations as the API, with a map to pick a point and downloads as CSV or JSON.
https://re.jrc.ec.europa.eu/pvg_tools/en/tools.html
One calculation with the API
GET only. Required are lat, lon, peakpower (kW) and loss (system loss in percent).
https://re.jrc.ec.europa.eu/api/v5_3/PVcalc?lat=52.09&lon=5.12&peakpower=1&loss=14&outputformat=json
Choose the tool
PVcalc (grid-connected), SHScalc (off-grid with battery), MRcalc (monthly radiation), DRcalc (daily profile), seriescalc (hourly series), tmy (typical meteorological year) and printhorizon (horizon).
Respect the limits
At most 30 calls per second per IP, above that 429. Calls from the browser (AJAX) are refused. Prefer outputformat=json.
Interesting combinations


Do the panels deliver what they could?
Divide actual production from CBS 85005NED by installed capacity and compare it with the PVGIS yield per kWp for that place. Mind panels installed mid-year.


Solar potential per address
Take a building's coordinate from the BAG and calculate the yield. For roof pitch and shade you need an elevation model.
Similar sources
KNMI daily weather dataKNMI measures solar radiation at its weather stations, day by day (De Bilt since July 1957). No yield calculation, but real measurements.
ERA5 climate reanalysisReanalysis with hourly radiation on a grid of about 30 km, worldwide and since 1940. Needs an account.
CBS StatLineCBS counts how much solar power was actually generated and how many panels are installed (for example table 85005NED), per municipality.
What to watch out for
- robots.txt disallows bots
re.jrc.ec.europa.eu has 'Disallow: /' for all user agents. The API is meant for programs (non-interactive service). We do not call it ourselves and show no PVGIS figures of our own here.
- A calculation, not a measurement
PVGIS calculates with satellite radiation, a model panel and the system loss you enter. Real yield also depends on shade, soiling and the inverter.
- Licence not explicit
The PVGIS pages state no licence of their own. The Commission's general legal notice gives CC BY 4.0 for EU content unless stated otherwise. Credit PVGIS and the JRC as the source.
- Versions change
The address without a version number has served PVGIS 5.2 since 25 September 2024, for a limited period; 5.1 is gone. Always put the version in the URL (v5_3).
APIREST (GET; JSON, CSV, EPW) · read 16 Oct 2026
No key or account per the documentation. GET only; calls from the browser (AJAX/CORS) are refused. from the description
jsoncsvbasicepw
Base URL
https://re.jrc.ec.europa.eu/api/v5_3
Endpoints 7
- GET
/PVcalcOutput of a grid-connected system (fixed or tracking): per month and per year (E_y in kWh), with losses; optionally optimal angle and electricity price. - GET
/SHScalcOff-grid system with battery: how often the battery is empty or full (peakpower in W here, not kW). - GET
/MRcalcMonthly radiation over the years (horirrad, optrad, mr_dni, avtemp …; at least one required). - GET
/DRcalcAverage daily profile per month (month required, 0 = all months). - GET
/seriescalcHourly series of radiation (and with pvcalculation=1 the PV output) over a range of years, in UTC. - GET
/tmyTypical meteorological year (period ≥ 10 years); also as EnergyPlus EPW. - GET
/printhorizonHorizon profile (horizon height per direction) at a point.
Filtering from the description
No query language: one point and the system properties as query parameters; each call is a calculation.
Parameters 11
lat / lon | Decimal degrees (south and west negative). Required. | from the description |
peakpower | Peak power in kW (PVcalc, seriescalc) or W (SHScalc). | from the description |
loss | System loss in percent (14 is common). Required for PVcalc. | from the description |
angle / aspect | Tilt from horizontal and orientation: 0 = south, 90 = west, -90 = east. Default 0 and 0. | from the description |
optimalinclination / optimalangles | Let PVGIS choose the best tilt (and orientation); overrides angle/aspect. | from the description |
mountingplace / pvtechchoice | free or building; crystSi (default), crystSi2025, CIS, CdTe, Unknown. | from the description |
raddatabase | Radiation database: PVGIS-SARAH3 (Europe, Africa, Asia), PVGIS-ERA5, PVGIS-SARAH …; without, PVGIS picks by location. | from the description |
startyear / endyear | Period for seriescalc, MRcalc and tmy; default the whole database. | from the description |
usehorizon / userhorizon | Include horizon shading (default 1) or supply your own heights. | from the description |
outputformat | csv (default, with explanations), json (recommended), basic (numbers only), epw (tmy only). | from the description |
pvprice / systemcost / interest / lifetime | Compute the price per kWh from installation cost, interest and lifetime (default 25 years). | from the description |
Fields in the JSON response (as far as the documentation names them) 4
| Name | Type | Meaning |
|---|---|---|
inputs | object | De gebruikte invoer, ook de gekozen database en hoeken |
outputs | object | De uitkomsten: per maand, totalen per jaar of per uur, afhankelijk van de tool |
outputs.totals.fixed.E_y | getal · kWh | Opbrengst per jaar van een vast systeem (PVcalc) |
meta | object | Uitleg en eenheid per veld; ontbreekt bij outputformat=basic |
Limits and pitfalls
- 30 calls per second per IP; above that 429. When busy the server waits up to 4–5 seconds, then returns 529 (Site is overloaded). from the description
- GET only (otherwise 405). HEAD on a tool returns 204 to check it exists. from the description
- robots.txt of re.jrc.ec.europa.eu is 'Disallow: /'. Open Data Index therefore does not call the API automatically; everything here comes from the JRC documentation. tested
- The old path /api/ without version serves PVGIS 5.2 'for a limited period' (since 25 Sep 2024); 5.1 is gone. Always put v5_3 (or v5_2) in the URL. from the description
- Mind the unit of peakpower: kW for PVcalc and seriescalc, W for SHScalc. from the description
- Out-of-range values return a JSON error message with the allowed range. from the description
Try it
robots.txt of re.jrc.ec.europa.eu is 'Disallow: /': we make no call here. Try for example https://re.jrc.ec.europa.eu/api/v5_3/PVcalc?lat=52.09&lon=5.12&peakpower=1&loss=14&outputformat=json
Read from JRC: the PVGIS non-interactive service, all tools with parameters, limits and error codes. Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building open data index.
More in this topic
See how this page is built
bron: pvgis
blokken: []
secties:
- ideeen
- verwerken
- koppelingen
- vergelijkbaar
- beperkingen
cache:
tag: bron:pvgis
ververs: na statuscheck, als de bron nieuwer is
statuscheck:
methode: geen automatische check; robots.txt van re.jrc.ec.europa.eu verbiedt
alle bots (16 okt 2026)
verwacht: elke paar jaar
Source: content/bronnen/pvgis.yaml · Markdown


