Skip to main content
EU Science Hub

All the PVGIS tools can be accessed non-interactively using our web APIs. The entrypoints are:

PVGIS 5.1: https://re.jrc.ec.europa.eu/api/v5_1/tool_name?param1=value1&param2=value2&...

PVGIS 5.2: https://re.jrc.ec.europa.eu/api/v5_2/tool_name?param1=value1&param2=value2&...

NB The old entrypoint https://re.jrc.ec.europa.eu/api/tool_name?param1=value1&param2=value2&...   will continue serve PVGIS 5.1 for a limited period.

The variables are:

  • tool_name: PVcalc, SHScalc, MRcalc, DRcalc, seriescalc, tmy, printhorizon.
  • param1=value1, param2=value2, ...: input parameters of the tool with their corresponding values concatenated in a query string format.

PVGIS APIs can be called directly using different languages like Python, NodeJS, Perl, Java and many others. Such languages have libraries to ease API calls management. Please, for more information check the documentation of the specific language used.

Warning: access to PVGIS APIs via AJAX is not allowed. Please, do not ask for changes in our CORS policy since these requests will be rejected by the system administrators.

When you report an error, please always specify the exact URL, the parameters used, the exact error text and the exact version of software/libraries you are using and any other information that may help us find and fix the problem.

HTTP methods allowed

API functions accept GET method only. Other methods will return an HTTP status "405 - Method not allowed". HEAD method has been kept only to confirm the existence of the desired API function, but will return a "204 - No Content" HTTP status to avoid wasting CPU computation time.

API calls rate limit

API calls have a rate limit of 30 calls/second per IP address. If you exceed this threshold, the service will refuse your call and return a "429 - Too Many Requests" HTTP status.

Simultaneous computations tasks limit

To avoid server slowdowns due to too many simultaneous computations tasks, we introduced a new mechanism to handle excessive requests that affect the service availability.

All the exceeding computation requests that are outside the optimal computation frame, will be suspended for 150/200 miliseconds before a new try, waiting for just released resource. The number of tries are limited to a cap of 4/5 seconds, and after that limit the service will return a "529 - Site is overloaded" HTTP status code.

This status code is used to tell you that you should repeat the request after a while.

Inputs

  • If any of the inputs is out of the expected range, a json error message will be returned specifying the range of expected values for that input.
  • The query string must include at least all the mandatory inputs of the app (see minimal usage examples). The default values will be used for undefined optional parameters.
  • Inputs not required by the tool will be deprecated.

Outputs

The outputs obtained with the non-interactive service are exactly the same as those obtained with the PVGIS interface. The output type is controlled with the following two parameters:

  • outputformat:
    • outputformat=csv CSV output.
    • outputformat=json JSON output.
    • outputformat=basic Raw CSV output without metadata.
    • outputformat=epw Energy Plus EPW file (only for the TMY tool).
  • browser:
    • browser=0 Output as a stream.
    • browser=1 Output as a file.

We encourage users to use the JSON output for integrating PVGIS results in other web services and scripts. This will reduce potential impacts of future PVGIS upgrades in their services.

Grid-connected & Tracking PV systems

 

Inputs

NameType*ObligatoryDefaultComments
latFYes-Latitude, in decimal degrees, south is negative.
lonFYes-Longitude, in decimal degrees, west is negative.
usehorizonINo1Calculate taking into account shadows from high horizon. Value of 1 for "yes".
userhorizonLNo-Height of the horizon at equidistant directions around the point of interest, in degrees. Starting at north and moving clockwise. The series '0,10,20,30,40,15,25,5' would mean the horizon height is 0° due north, 10° for north-east, 20° for east, 30° for south-east, etc.
raddatabaseTNo

default DB

Name of the radiation database. "PVGIS-SARAH" for Europe, Africa and Asia or "PVGIS-NSRDB" for the Americas between 60°N and 20°S, "PVGIS-ERA5" and "PVGIS-COSMO" for Europe (including high-latitudes), and "PVGIS-CMSAF" for Europe and Africa (will be deprecated)

peakpowerFYes-Nominal power of the PV system, in kW.
pvtechchoiceTNo"crystSi"PV technology. Choices are: "crystSi", "CIS", "CdTe" and "Unknown".
mountingplaceTNo"free"Type of mounting of the PV modules. Choices are: "free" for free-standing and "building" for building-integrated.
lossFYes-Sum of system losses, in percent.
fixedINo1Calculate a fixed mounted system. Value of 0 for "no". All other values (or no value) mean "Yes". Note that this means the default is "yes".
angleFNo0Inclination angle from horizontal plane of the (fixed) PV system.
aspectFNo0Orientation (azimuth) angle of the (fixed) PV system, 0=south, 90=west, -90=east.
optimalinclinationINo0Calculate the optimum inclination angle. Value of 1 for "yes". All other values (or no value) mean "no".
optimalanglesINo0Calculate the optimum inclination AND orientation angles. Value of 1 for "yes". All other values (or no value) mean "no".
inclined_axisINo0Calculate a single inclined axis system. Value of 1 for "yes". All other values (or no value) mean "no".
inclined_optimumINo0Calculate optimum angle for a single inclined axis system. Value of 1 for "yes". All other values (or no value) mean "no".
inclinedaxisangleFNo0Inclination angle for a single inclined axis system. Ignored if the optimum angle should be calculated (parameter "inclined_optimum").
vertical_axisINo0Calculate a single vertical axis system. Value of 1 for "yes". All other values (or no value) mean "no".
vertical_optimumINo0Calculate optimum angle for a single vertical axis system. Value of 1 for "yes". All other values (or no value) mean "no".
verticalaxisangleFNo0Inclination angle for a single vertical axis system. Ignored if the optimum angle should be calculated (parameter "vertical_optimum" set to 1).
twoaxisINo0Calculate a two axis tracking system. Value of 1 for "yes". All other values (or no value) mean "no".
pvpriceINo0Calculate the PV electricity price [kwh/year] in the currency introduced by the user for the system cost.
systemcostFif pvprice-Total cost of installing the PV system [your currency].
interestFif pvprice-Interest in %/year
lifetimeINo25Expected lifetime of the PV system in years.
outputformatTNo"csv"Type of output. Choices are: "csv" for the normal csv output with text explanations, "basic" to get only the data output with no text, and "json".
browserINo0Use this with a value of "1" if you access the web service from a web browser and want to save the data to a file.

* F = Floating point number; I = integer number; L = list of numbers; T= text string.

 

Example of the minimum usage:

https://re.jrc.ec.europa.eu/api/PVcalc?lat=45&lon=8&peakpower=1&loss=14
  • For the fixed PV system, if the parameter "optimalinclination" is selected (set to 1), the value defined for the "angle" parameter is ignored. Similarly, if "optimalangles" is set to 1, values defined for "angle" and "aspect" are ignored and therefore are not necessary. In this case, parameter "optimalinclination" would not be necessary either.
  • For the inclined axis PV system analysis, the parameter "inclined_axis" must be selected, along with either "inclinedaxisangle" or "inclined_optimum". If parameter "inclined_optimum" is selected, the inclination angle defined in "inclinedaxisangle" is ignored, so this parameter would not be necessary.
  • Parameters regarding the vertical axis ("vertical_axis", "vertical_optimum" and "verticalaxisangle") are related in the same way as the parameters used for the inclined axis PV system.

Off-grid PV systems

 

inputs

NameType*ObligatoryDefaultComments 
latFYes-Latitude, in decimal degrees, south is negative. 
lonFYes-Longitude, in decimal degrees, west is negative. 
usehorizonINo1Calculate taking into account shadows from high horizon. Value of 1 for "yes". 
userhorizonLNo-Height of the horizon at equidistant directions around the point of interest, in degrees. Starting at north and moving clockwise. The series '0,10,20,30,40,15,25,5' would mean the horizon height is 0° due north, 10° for north-east, 20° for east, 30° for south-east, etc. 
raddatabaseTNo

default DB

Name of the radiation database. "PVGIS-SARAH" for Europe, Africa and Asia or "PVGIS-NSRDB" for the Americas between 60°N and 20°S, "PVGIS-ERA5" and "PVGIS-COSMO" for Europe (including high-latitudes), and "PVGIS-CMSAF" for Europe and Africa (will be deprecated)

 
peakpowerFYes-Nominal power of the PV system, in W. 
angleFNo0Inclination angle from horizontal plane of the (fixed) PV system. 
aspectFNo0Orientation (azimuth) angle of the (fixed) PV system, 0=south, 90=west, -90=east. 
batterysizeFYes-This is the size, or energy capacity, of the battery used in the off-grid system, measured in watt-hours (Wh). 
cutoffFYes-Batteries cutoff in %. The cutoff is imposed so that the battery charge cannot go below a certain percentage of full charge. 
consumptiondayFYes-Energy consumption of all the electrical equipment connected to the system during a 24 hour period (Wh) 
hourconsumptionLNo-

List of 24 comma separated values with the hourly consumption. The values in the file should be the fraction of the daily consumption that takes place in each hour, with the sum of the numbers equal to 1. The daily consumption profile should be defined for the standard local time, without consideration of daylight saving offsets if relevant to the location. The format is the same as the default consumption file.

 
outputformatTNo"csv"Type of output. Choices are: "csv" for the normal csv output with text explanations, "basic" to get only the data output with no text, and "json". 
browserINo0Use this with a value of "1" if you access the web service from a web browser and want to save the data to a file. 

* F = Floating point number; I = integer number; L = list of numbers; T= text string.

 

Example of the minimum usage:

https://re.jrc.ec.europa.eu/api/SHScalc?lat=45&lon=8&peakpower=10&batterysize=50&consumptionday=200&cutoff=40

Monthly radiation

 

Inputs

NameType*ObligatoryDefaultComments
latFYes-Latitude, in decimal degrees, south is negative.
lonFYes-Longitude, in decimal degrees, west is negative.
usehorizonINo1Calculate taking into account shadows from high horizon. Value of 1 for "yes".
userhorizonLNo-Height of the horizon at equidistant directions around the point of interest, in degrees. Starting at north and moving clockwise. The series '0,10,20,30,40,15,25,5' would mean the horizon height is 0° due north, 10° for north-east, 20° for east, 30° for south-east, etc.
raddatabaseTNo

default DB

Name of the radiation database (DB): "PVGIS-SARAH" for Europe, Africa and Asia or "PVGIS-NSRDB" for the Americas between 60°N and 20°S, "PVGIS-ERA5" and "PVGIS-COSMO" for Europe (including high-latitudes), and "PVGIS-CMSAF" for Europe and Africa (will be deprecated). The default DBs are PVGIS-SARAH, PVGIS-NSRDB and PVGIS-ERA5 based on the chosen location (see Figure xx).

startyearINoyear_min(DB)First year of the output of monthly averages. Availability varies with the temporal coverage of the radiation DB chosen. The default value is the first year of the DB.
endyearINoyear_max(DB)Final year of the output of monthly averages. Availability varies with the temporal coverage of the radiation DB chosen. The default value is the last year of the DB.
horirradINo0Output horizontal plane irradiation. Value of 1 for "yes". All other values (or no value) mean "no".
optradINo0Output annual optimal angle plane irradiation. Value of 1 for "yes". All other values (or no value) mean "no".
selectradINo0Output irradiation on plane of selected inclination. Value of 1 for "yes". All other values (or no value) mean "no".
angleFNo0Inclinatio

Example of the minimum usage:

n angle for the selected inclination irradiation option.

mr_dniINo0Output direct normal irradiation. Value of 1 for "yes". All other values (or no value) mean "no".
d2gINo0Output monthly values of the ratio of diffuse to global radiation (horizontal plane). Value of 1 for "yes". All other values (or no value) mean "no".
avtempINo0Output monthly average values of daily (24h) temperature. Value of 1 for "yes". All other values (or no value) mean "no".
outputformatTNo"csv"Type of output. Choices are: "csv" for the normal csv output with text explanations, "basic" to get only the data output with no text, and "json".
browserINo0Use this with a value of "1" if you access the web service from a web browser and want to save the data to a file.

* F = Floating point number; I = integer number; L = list of numbers; T= text string.

[/collapsed title]

Example of the minimum usage:

https://re.jrc.ec.europa.eu/api/MRcalc?lat=45&lon=8&horirrad=1
  • At least one output option should be chosen (horirrad, optrad, selectrad, etc). Otherwise the output table will not have any values.

Daily radiation

[collapsed title=inputs]

NameType*ObligatoryDefaultComments
latFYes-Latitude, in decimal degrees, south is negative.
lonFYes-Longitude, in decimal degrees, west is negative.
usehorizonINo1Calculate taking into account shadows from high horizon. Value of 1 for "yes".
userhorizonLNo-Height of the horizon at equidistant directions around the point of interest, in degrees. Starting at north and moving clockwise. The series '0,10,20,30,40,15,25,5' would mean the horizon height is 0° due north, 10° for north-east, 20° for east, 30° for south-east, etc.
raddatabaseTNodefault DBName of the radiation database (DB): "PVGIS-SARAH" for Europe, Africa and Asia or "PVGIS-NSRDB" for the Americas between 60°N and 20°S, "PVGIS-ERA5" and "PVGIS-COSMO" for Europe (including high-latitudes), and "PVGIS-CMSAF" for Europe and Africa (will be deprecated). The default DBs are PVGIS-SARAH, PVGIS-NSRDB and PVGIS-ERA5 based on the chosen location (see Figure xx).
monthTYes-The value of this parameter should be the number of the month, starting at 1 for January. If you give the value 0 (zero) you will instead get data for all the months.
angleFNo0Inclination angle from horizontal plane of the (fixed) PV system.
aspectFNo0Orientation (azimuth) angle of the (fixed) PV system, 0=south, 90=west, -90=east.
globalINo0Output the global, direct and diffuse in-plane irradiances. Value of 1 for "yes". All other values (or no value) mean "no".
glob_2axisINo0Output the global, direct and diffuse two-axis tracking irradiances. Value of 1 for "yes". All other values (or no value) mean "no".
clearskyINo0Output the global clear-sky irradiance. Value of 1 for "yes". All other values (or no value) mean "no".
clearsky_2axisINo0Output the global clear-sky two-axis tracking irradiance. Value of 1 for "yes". All other values (or no value) mean "no".
showtemperaturesINo0Output the daily temperature profile. Value of 1 for "yes". All other values (or no value) mean "no".
localtimeINo0Output the time in the local time zone (not daylight saving time), instead of UTC. Value of 1 for "yes". All other values (or no value) mean "no".
outputformatTNo"csv"Type of output. Choices are: "csv" for the normal csv output with text explanations, "basic" to get only the data output with no text, and "json".
browserINo0Use this with a value of "1" if you access the web service from a web browser and want to save the data to a file.

* F = Floating point number; I = integer number; L = list of numbers; T= text string.

 

Example of the minimum usage:

https://re.jrc.ec.europa.eu/api/DRcalc?lat=45&lon=8&month=3&global=1
  • Unlike the PVGIS web interface, it is also possible here to get values for all 12 months with a single call. See below for more details.

Hourly radiation

 

Inputs

NameType* ObligatoryDefaultComments
latFYes-Latitude, in decimal degrees, south is negative.
lonFYes-Longitude, in decimal degrees, west is negative.
usehorizonINo1Calculate taking into account shadows from high horizon. Value of 1 for "yes".
userhorizonLNo-Height of the horizon at equidistant directions around the point of interest, in degrees. Starting at north and moving clockwise. The series '0,10,20,30,40,15,25,5' would mean the horizon height is 0° due north, 10° for north-east, 20° for east, 30° for south-east, etc.
raddatabaseTNodefault DB

Name of the radiation database (DB): "PVGIS-SARAH" for Europe, Africa and Asia or "PVGIS-NSRDB" for the Americas between 60°N and 20°S, "PVGIS-ERA5" and "PVGIS-COSMO" for Europe (including high-latitudes), and "PVGIS-CMSAF" for Europe and Africa (will be deprecated). The default DBs are PVGIS-SARAH, PVGIS-NSRDB and PVGIS-ERA5 based on the chosen location.

startyearINoyear_min(DB)First year of the output of hourly averages. Availability varies with the temporal coverage of the radiation DB chosen. The default value is the first year of the DB.
endyearINoyear_max(DB)Final year of the output of hourly averages. Availability varies with the temporal coverage of the radiation DB chosen. The default value is the last year of the DB.
pvcalculationINo0If "0" outputs only solar radiation calculations, if "1" outputs the estimation of hourly PV production as well.
peakpowerF

if pvcalculation

-Nominal power of the PV system, in kW.
pvtechchoiceTNo"crystSi"PV technology. Choices are: "crystSi", "CIS", "CdTe" and "Unknown".
mountingplaceTNo"free"Type of mounting of the PV modules. Choices are: "free" for free-standing and "building" for building-integrated.
lossF

if pvcalculation

-Sum of system losses, in percent.
trackingtypeINo0Type of suntracking used, 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.
angleFNo0Inclination angle from horizontal plane. Not relevant for 2-axis tracking.
aspectFNo0Orientation (azimuth) angle of the (fixed) plane, 0=south, 90=west, -90=east. Not relevant for tracking planes.
optimalinclinationINo0Calculate the optimum inclination angle. Value of 1 for "yes". All other values (or no value) mean "no". Not relevant for 2-axis tracking.
optimalanglesINo0Calculate the optimum inclination AND orientation angles. Value of 1 for "yes". All other values (or no value) mean "no". Not relevant for tracking planes.
componentsINo0If "1" outputs beam, diffuse and reflected radiation components. Otherwise, it outputs only global values.
outputformatINo"csv"

Type of output. Choices are: "csv" for the normal csv output with text explanations, "basic" to get only the data output with no text, and "json".

browserINo0

Use this with a value of "1" if you access the web service from a web browser and want to save the data to a file.

*F = Floating point number; I = integer number; L = list of numbers; T= text string.

 

Example of the minimum usage:

https://re.jrc.ec.europa.eu/api/seriescalc?lat=45&lon=8

TMY

 

Inputs

NameType*ObligatoryDefaultComments
latFYes-Latitude, in decimal degrees, south is negative.
lonFYes-Longitude, in decimal degrees, west is negative.
usehorizonINo1Calculate taking into account shadows from high horizon. Value of 1 for "yes".
userhorizonLNo-Height of the horizon at equidistant directions around the point of interest, in degrees. Starting at north and moving clockwise. The series '0,10,20,30,40,15,25,5' would mean the horizon height is 0° due north, 10° for north-east, 20° for east, 30° for south-east, etc.
startyearINoyear_min(DB)First year of the TMY. Availability depends on the temporal coverage of the radiation DB chosen. The default value is the first year of the DB chosen.
endyearINoyear_max(DB)Final year of the TMY. Availability depends on the temporal coverage of the radiation DB chosen. The default value is the last year of the DB chosen. The period defined by startyear, endyear should be >= 10 years.
outputformatTNo"csv"Type of output. Choices are: "csv" for the normal csv output with text explanations, "basic" to get only the data output with no text, "epw" to get a format suitable for the EnergyPlus software, and "json".
browserINo0Use this with a value of "1" if you access the web service from a web browser and want to save the data to a file.

* F = Floating point number; I = integer number; L = list of numbers; T= text string.

 

Example of the minium usage:

 https://re.jrc.ec.europa.eu/api/tmy?lat=45&lon=8

Horizon profile

 

Inputs

NameType*ObligatoryDefaultComments
latFYes-Latitude, in decimal degrees, south is negative.
lonFYes-Longitude, in decimal degrees, west is negative.
userhorizonLNo-Height of the horizon at equidistant directions around the point of interest, in degrees. Starting at north and moving clockwise. The series '0,10,20,30,40,15,25,5' would mean the horizon height is 0° due north, 10° for north-east, 20° for east, 30° for south-east, etc.
outputformatTNo"csv"Type of output. Choices are: "csv" for the normal csv output with text explanations, "basic" to get only the data output with no text, and "json".
browserINo0Use this with a value of "1" if you access the web service from a web browser and want to save the data to a file.

* F = Floating point number; I = integer number; L = list of numbers; T= text string.

 

Example of minimum usage:

https://re.jrc.ec.europa.eu/api/printhorizon?lat=45&lon=8
  • There is also the option to supply user-defined horizon information. This would not normally be useful since the web service will just send the horizon information back to you. However, it can be a way to check that PVGIS interprets the user-supplied horizon information correctly.