{"openapi":"3.1.0","info":{"title":"Solar PV (PVGIS) API","version":"1.0.0","description":"Solar photovoltaic potential for any location on Earth, powered by the EU JRC PVGIS (Photovoltaic Geographical Information System). Estimate how much energy a solar PV system would produce at a given coordinate — yearly and month-by-month output in kWh, the in-plane solar irradiation and a breakdown of system losses (angle-of-incidence, spectral, temperature) — for any panel size, fixed tilt and azimuth; find the optimal panel tilt and orientation that maximises annual output; and read the long-term monthly global horizontal solar irradiation. Covers most of the world (excluding polar and open-ocean areas) from years of satellite-based solar data. Ideal for solar installers and calculators, renewable-energy planning, home-energy and roof-potential tools, and climate / sustainability apps. Open data from EU JRC PVGIS.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/pvgis-api","description":"oanor gateway"}],"tags":[{"name":"Solar"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/optimal":{"get":{"operationId":"get_v1_optimal","tags":["Solar"],"summary":"Optimal panel tilt & azimuth","description":"","parameters":[{"name":"lat","in":"query","required":true,"description":"Latitude (-90..90)","schema":{"type":"string"},"example":"48.2"},{"name":"lon","in":"query","required":true,"description":"Longitude (-180..180)","schema":{"type":"string"},"example":"16.4"},{"name":"peakpower","in":"query","required":false,"description":"System size in kWp (default 1)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"optimal":{"source":"EU JRC PVGIS","location":{"lat":48.2,"lon":16.4,"elevation_m":170},"azimuth_note":"0 = facing the equator (south in the N hemisphere); -90 = east, 90 = west","peakpower_kwp":1,"yearly_pv_kwh":1178.25,"optimal_tilt_deg":39,"optimal_azimuth_deg":-1,"yearly_irradiation_kwh_m2":1477.29}},"meta":{"timestamp":"2026-05-31T15:13:35.017Z","request_id":"23b5a6bb-71a2-45e5-9c10-78ad9daeece5"},"status":"ok","message":"Optimal angles retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/pv":{"get":{"operationId":"get_v1_pv","tags":["Solar"],"summary":"PV system output estimate","description":"","parameters":[{"name":"lat","in":"query","required":true,"description":"Latitude (-90..90)","schema":{"type":"string"},"example":"48.2"},{"name":"lon","in":"query","required":true,"description":"Longitude (-180..180)","schema":{"type":"string"},"example":"16.4"},{"name":"peakpower","in":"query","required":false,"description":"System size in kWp (0.05-1000, default 1)","schema":{"type":"string"}},{"name":"loss","in":"query","required":false,"description":"System loss % (0-30, default 14)","schema":{"type":"string"}},{"name":"angle","in":"query","required":false,"description":"Panel tilt 0-90; omit for optimal angles","schema":{"type":"string"}},{"name":"aspect","in":"query","required":false,"description":"Panel azimuth -180..180 (0=equator-facing)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"pv":{"source":"EU JRC PVGIS","monthly":[{"month":1,"pv_kwh":50.75,"irradiation_kwh_m2":57.96},{"month":2,"pv_kwh":70.12,"irradiation_kwh_m2":81.08},{"month":3,"pv_kwh":106.12,"irradiation_kwh_m2":127.51},{"month":4,"pv_kwh":132.77,"irradiation_kwh_m2":166.28},{"month":5,"pv_kwh":130,"irradiation_kwh_m2":165.56},{"month":6,"pv_kwh":130.21,"irradiation_kwh_m2":169.97},{"month":7,"pv_kwh":136.95,"irradiation_kwh_m2":181.13},{"month":8,"pv_kwh":130.92,"irradiation_kwh_m2":171.78},{"month":9,"pv_kwh":112.42,"irradiation_kwh_m2":142.33},{"month":10,"pv_kwh":82.97,"irradiation_kwh_m2":101.87},{"month":11,"pv_kwh":49.64,"irradiation_kwh_m2":59.01},{"month":12,"pv_kwh":45.38,"irradiation_kwh_m2":52.81}],"location":{"lat":48.2,"lon":16.4,"elevation_m":170},"angle_deg":39,"aspect_deg":-1,"losses_pct":{"total":-20.24,"temperature":-5.97,"angle_of_incidence":-2.82},"peakpower_kwp":1,"yearly_pv_kwh":1178.25,"optimal_angles":true,"system_loss_pct":14,"yearly_irradiation_kwh_m2":1477.29}},"meta":{"timestamp":"2026-05-31T15:13:35.533Z","request_id":"70a661d8-e4f8-4a93-88e8-975261df6dad"},"status":"ok","message":"PV estimate retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/radiation":{"get":{"operationId":"get_v1_radiation","tags":["Solar"],"summary":"Long-term monthly solar radiation","description":"","parameters":[{"name":"lat","in":"query","required":true,"description":"Latitude (-90..90)","schema":{"type":"string"},"example":"48.2"},{"name":"lon","in":"query","required":true,"description":"Longitude (-180..180)","schema":{"type":"string"},"example":"16.4"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"radiation":{"unit":"kWh/m² (monthly average global horizontal irradiation)","source":"EU JRC PVGIS","monthly":[{"month":1,"horizontal_irradiation_kwh_m2":32.33},{"month":2,"horizontal_irradiation_kwh_m2":52.2},{"month":3,"horizontal_irradiation_kwh_m2":96.96},{"month":4,"horizontal_irradiation_kwh_m2":145.39},{"month":5,"horizontal_irradiation_kwh_m2":164.01},{"month":6,"horizontal_irradiation_kwh_m2":176.96},{"month":7,"horizontal_irradiation_kwh_m2":183.84},{"month":8,"horizontal_irradiation_kwh_m2":158.09},{"month":9,"horizontal_irradiation_kwh_m2":113.47},{"month":10,"horizontal_irradiation_kwh_m2":69.39},{"month":11,"horizontal_irradiation_kwh_m2":35.57},{"month":12,"horizontal_irradiation_kwh_m2":27.75}],"location":{"lat":48.2,"lon":16.4},"averaged_over_years":16,"yearly_irradiation_kwh_m2":1255.96}},"meta":{"timestamp":"2026-05-31T15:13:35.767Z","request_id":"d61dd7e4-8b31-402b-b4a5-7e835e3231cb"},"status":"ok","message":"Radiation retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Source & options","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Solar PV potential for any coordinate. /v1/pv = estimated PV system output (yearly + monthly kWh, irradiation and losses) for a given peakpower & loss; pass angle (+aspect) for a fixed mount, or omit angle to use the optimal angles. /v1/optimal = the optimal panel tilt & azimuth and the resulting yearly output. /v1/radiation = long-term monthly global horizontal irradiation. Pass lat & lon. Data covers most of the world except polar / open-ocean areas.","source":"PVGIS — EU JRC Photovoltaic Geographical Information System (re.jrc.ec.europa.eu)","endpoints":["/v1/pv","/v1/optimal","/v1/radiation","/v1/meta"]},"meta":{"timestamp":"2026-05-31T15:13:35.817Z","request_id":"044ccb33-8ff5-4e66-a0da-44121d3727b0"},"status":"ok","message":"Meta retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":3710,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":465,"monthly_call_quota":50400,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1395,"monthly_call_quota":247000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":3645,"monthly_call_quota":1216000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/pvgis-api"}