Solar API for German cities (PVGIS)
Solar potential per city through a free, keyless REST API. The source is PVGIS by the European Commission (JRC), aggregated to a comparable metric per city and delivered as consistent JSON with source, license and reference period on every response.
What data you get
For each city the endpoint returns a multi-year climatological average at the city centre, normalized to a 1 kWp system at the optimal tilt: annual PV yield in kWh per kWp, global irradiation in kWh per square meter, the optimal tilt and azimuth, and twelve monthly values. It is not a daily value but a long-term average; the reference period is given as a year range in the response.
- Annual PV yield (kWh/kWp)
- Global irradiation (kWh/m²)
- Optimal tilt (degrees)
- Optimal azimuth (degrees, 0 = south)
- 12 monthly values (yield + irradiation)
- Reference period (year range)
Source: PVGIS, European Commission (JRC). License:
EU reuse policy (effectively CC BY 4.0). Source, license URL and timestamp are included in every API
response in the meta and attribution block.
How to fetch it
A simple GET request, no key and no sign-up:
curl https://infranode.dev/api/v1/cities/berlin/solar For another city, just put the slug from the cities list into the path.
No key, no sign-up, free.
Covered cities
Solar data is available for all 84 covered cities: PVGIS computes any coordinate in Europe, the values refer to the city centre.
Available for all 84 covered cities. The exact per-city status is on the coverage and status page, the full list of cities on the cities overview.
Straight to the largest covered cities: Berlin , Hamburg , München , Köln , Frankfurt am Main , Stuttgart , Düsseldorf , Leipzig , Dortmund , Essen .
Endpoint reference
All parameters, fields and response examples are in the API reference for this endpoint. InfraNode is also available as an MCP server for AI assistants.
Frequently asked questions
- Is the solar API free and keyless?
- Yes. No key, no sign-up, free, a single GET request is enough. The rate limit is 300 requests per minute per IP.
- What does kWh per kWp mean?
- It is the expected annual yield of a photovoltaic system per installed kilowatt-peak at the optimal tilt. This lets you compare locations directly and scale to your planned system size.
- Are these live measurements?
- No. PVGIS provides a multi-year climatological average, a long-term mean rather than a daily value. That is why observed_at is null; the reference period is given as a year range (period_start/period_end) in the response.
More data types
- Fuel price API for German cities (MTS-K)
- Car park API for German cities with live occupancy
- Roadworks and closure API for German cities
- Water level API for German cities (PEGELONLINE)
- Weather warning API for German cities (DWD)
- EV charging station API for German cities (BNetzA)
- Weather API for German cities (DWD)
- Air quality API for German cities (UBA)
- Electricity price API for Germany (SMARD)
- Land values API for German cities (BORIS)
- Solar cadastre API for German cities (rooftop PV)
- Real-time public transport API for German cities
- Public procurement API for German cities
- Council information API for German cities
- Municipal tax rate API for German cities
- Population and density API for German cities
- Crime statistics API for German cities (PKS)
- Road accident API for German cities
- Labour market API for German cities
- Business and insolvency API for German cities
- Sustainability API for German cities (SDG indicators)