The Solar API is launching an experimental feature that expands coverage to
previously unsupported regions, based on machine learning models applied to
satellite imagery. To access experimental solar data, set the experiments
parameter to EXPANDED_COVERAGE
and the requiredQuality
parameter to BASE
.
Experimental data is available for
buildingInsights
and dataLayers
requests. The following sections describe example requests and responses.
Building insights
The buildingInsights endpoint provides insights about the location, dimensions, and solar potential of a building. To request building insights, send an HTTP GET request to:
https://solar.googleapis.com/v1/buildingInsights:findClosest?key=YOUR_API_KEY
Include your request URL parameters that specify the latitude and longitude coordinates of the location and the minimum required quality level allowed in the results.
The following example requests building insights information for the location at the coordinates of latitude = 4.655719 and longitude = -74.128971. To request experimental data, set the following parameters:
requiredQuality
=BASE
experiments
=EXPANDED_COVERAGE
curl -X GET "https://solar.googleapis.com/v1/buildingInsights:findClosest?location.latitude=4.655719& location.longitude=-74.128971& requiredQuality=BASE& experiments=EXPANDED_COVERAGE& key=YOUR_API_KEY"
That request produces a JSON response in the form:
{ "name": "buildings/ChIJW2GaKXecP44RaeGtGpQtk4Q", "center": { "latitude": 4.6557664, "longitude": -74.1289303 }, "imageryDate": { "year": 2024, "month": 2, "day": 19 }, "regionCode": "CO", "solarPotential": { "maxArrayPanelsCount": 351, "maxArrayAreaMeters2": 689.20776, "maxSunshineHoursPerYear": 1631.7008, "carbonOffsetFactorKgPerMwh": 122.99986, "wholeRoofStats": { "areaMeters2": 1078.406, "sunshineQuantiles": [ 562.9261, 930.9767, 1165.876, 1221.8761, 1333.0057, 1485.7363, 1563.2417, 1593.266, 1610.5652, 1621.5986, 1640.6102 ], "groundAreaMeters2": 1050.76 }, "roofSegmentStats": [ { "pitchDegrees": 38.58091, "azimuthDegrees": 41.91368, "stats": { "areaMeters2": 23.153826, "sunshineQuantiles": [ 582.9132, 612.5797, 673.3435, 762.14233, 899.41864, 1031.1329, 1103.8121, 1135.5204, 1150.2969, 1158.215, 1170.5475 ], "groundAreaMeters2": 18.1 }, "center": { "latitude": 4.6554996, "longitude": -74.128966699999992 }, "boundingBox": { "sw": { "latitude": 4.655472, "longitude": -74.1290005 }, "ne": { "latitude": 4.6555371999999995, "longitude": -74.1289328 } }, "planeHeightAtCenterMeters": 2552.031 }, /.../ ] "solarPanelConfigs": [ { "panelsCount": 4, "yearlyEnergyDcKwh": 2609.5698, "roofSegmentSummaries": [ { "pitchDegrees": 10.260736, "azimuthDegrees": 131.22626, "panelsCount": 1, "yearlyEnergyDcKwh": 652.84863, "segmentIndex": 6 }, { "pitchDegrees": 8.649131, "azimuthDegrees": 145.79407, "panelsCount": 1, "yearlyEnergyDcKwh": 652.3829, "segmentIndex": 11 }, { "pitchDegrees": 5.061984, "azimuthDegrees": 12.690001, "panelsCount": 2, "yearlyEnergyDcKwh": 1304.3383, "segmentIndex": 12 } ] }, /.../ ] "panelCapacityWatts": 400, "panelHeightMeters": 1.879, "panelWidthMeters": 1.045, "panelLifetimeYears": 20, "buildingStats": { "areaMeters2": 1143.155, "sunshineQuantiles": [ 557, 883.26263, 1146.4794, 1209.3063, 1278.1102, 1465.2921, 1557.7494, 1590.9565, 1609.4994, 1621.1909, 1640.6102 ], "groundAreaMeters2": 1089.35 }, "solarPanels": [ { "center": { "latitude": 4.6560077, "longitude": -74.12885 }, "orientation": "PORTRAIT", "yearlyEnergyDcKwh": 653.14404, "segmentIndex": 12 }, /.../ ] }, "boundingBox": { "sw": { "latitude": 4.6554716, "longitude": -74.129243899999992 }, "ne": { "latitude": 4.6560513, "longitude": -74.128623900000008 } }, "imageryQuality": "BASE", "imageryProcessedDate": { "year": 2024, "month": 7, "day": 21 } }
Data layers
The dataLayers endpoint provides detailed solar information for a region surrounding a specified location. The endpoint returns 17 downloadable TIFF files, including a digital surface model (DSM), RGB composite layer (aerial imagery), and a mask layer that identifies the boundaries of the analysis, among others.
The following example shows the URL of a REST request to the dataLayers
method:
https://solar.googleapis.com/v1/dataLayers:get?parameters
Include your request URL parameters that specify the following:
- Latitude and longitude coordinates of the location
- The radius (in meters) of the region surrounding the location
- The minimum quality allowed in the results
To request experimental data, set the following parameters:
requiredQuality
=BASE
experiments
=EXPANDED_COVERAGE
curl -X GET "https://solar.googleapis.com/v1/dataLayers:get?location.latitude=4.655719& location.longitude=-74.128971& radiusMeters=100& requiredQuality=BASE &experiments=EXPANDED_COVERAGE &key=YOUR_API_KEY"
That request produces a JSON response in the form:
{ "imageryDate": { "year": 2024, "month": 2, "day": 19 }, "imageryProcessedDate": { "year": 2024, "month": 7, "day": 21 }, "dsmUrl": "https://solar.googleapis.com/v1/geoTiff:get?id=YTYwZDUzYTMxNjVmMjFlYWNjZmMyYzcxYTNhNWQ2OWItZTM0ZWRjZTQwNTZjZWUyYTNiNWE2ZjU5OTVkYWJjNTM6RFNNOkJBU0U", "rgbUrl": "https://solar.googleapis.com/v1/geoTiff:get?id=MWU2NmYxNmU3M2JlYmY5NDJkZmVmMjQ0NDViMjFjYTgtZWVhYjRiN2U0YWJlNzM2Nzk1MzUxZTQ4YTgxNjZiM2M6UkdCOkJBU0U", "maskUrl": "https://solar.googleapis.com/v1/geoTiff:get?id=ZGU4NzhmNDg0YjE2OGYwYTdjN2EyYmVlMDQxYTM5NDMtNDk2NGQwNzBhMzAwYzBkYTEwZDNmYjgzNTk4ODkyY2I6TUFTSzpCQVNF", "annualFluxUrl": "https://solar.googleapis.com/v1/geoTiff:get?id=NmRiZDQ0NDFkNWE5NDU2Nzc2ZTU1Mzg0MDY0YzFhMWMtMDg2ZDMyZjVkYTMzMDhiZmI5NzM1MzY0YmRjZmFiM2I6QU5OVUFMX0ZMVVg6QkFTRQ", "monthlyFluxUrl": "https://solar.googleapis.com/v1/geoTiff:get?id=NTAyMDJkMTVmMjJiZGYyOTNiMDFhMWEzNDJkZjAwNTctZDRjMjY3ZjU1YjQ2ZjE4ZTNkNjE1YmU5NTlmOThlZjM6TU9OVEhMWV9GTFVYOkJBU0U", "hourlyShadeUrls": [ "https://solar.googleapis.com/v1/geoTiff:get?id=NWNkZmM0NTcwYTE5ODQzMmI0MmQ1NDM4NzY4MTc5MzEtOWE0MTBjNDkwM2IxZjA0MmI1ZTNmNTg1NTY0MTNkZjI6SE9VUkxZX1NIQURFOkJBU0U", "https://solar.googleapis.com/v1/geoTiff:get?id=Y2YwNDY4MzQ1YzhkMjBlZjU5M2NiNDRmMmM0ODRiNTUtNjMwOWM2NDBjZmI5OTdkMDA3ZGQzOWY2YmI1ZTk2NWM6SE9VUkxZX1NIQURFOkJBU0U", /.../ ], "imageryQuality": "BASE" }
To make a request to the URL in the response, append your API key to the URL:
curl -X GET "https://solar.googleapis.com/v1/geoTiff:get?id=YTYwZDUzYTMxNjVmMjFlYWNjZmMyYzcxYTNhNWQ2OWItZTM0ZWRjZTQwNTZjZWUyYTNiNWE2ZjU5OTVkYWJjNTM6RFNNOkJBU0U&key=YOUR_API_KEY"
With the exception of the RGB layer, all TIFF files will display as blank images in image viewer applications. To view downloaded TIFF files, import them into a mapping application software, such as QGIS.
The full specification of this request and response is in the reference documentation.