Cloudless Sentinel-2
This service recreates 10 spectral bands of Sentinel-2 without clouds, shadows, image artifacts, and to some degree, errors in atmospheric correction. This is done by combining data from multiple satellites (Sentinel-1, Sentinel-2, Sentinel-3, and Landsat 8/9) with state-of-the-art deep learning. It produces the most up-to-date Sentinel-2 data available online. Below you can find more information about the data generation process, facts about the data, and links to API code examples.


This deep learning technique can utilize partly clouded imagery, radar data, microwave data, different spatial resolutions, and different temporal frequencies. By combining these data sources we can deliver a cloudless Sentinel-2 product we update daily, to catch any ground cover changes as fast as possible. It’s simply about getting the most use out of every satellite that’s already orbiting the earth in a practical and cost-effective way.
This approach can utilize SAR radar data from Sentinel-1 to update our cloudless Sentinel-2 imagery with surprising detail because a deeper context about the ground cover has been provided by the optical satellites (eg. Landsat, Sentinel-2) and the AI’s temporal understanding. This approach will, furthermore, map any changes from Landsat 8/9 onto the cloudless Sentinel-2 data while keeping to the Sentinel-2 data format.



There is no difference between today’s new cloudless data and the historical data available as all data has been produced in the same way. This is to ensure consistency throughout our service. However, this also means historical data is produced without any future insights and it’s only backward-looking. It will not extrapolate into what we know it will become because it will not see future data even if we do have it available.
Our cloudless imagery is not limited by the size of Sentinel-2 tiles. We can create wall-to-wall cloudless imagery that fits your arbitrary size needs, as we update our imagery on days without Sentinel-2. We do that to include data from other satellites that have different orbits and data acquisition than Sentinel-2. That results in easy usability as you can increase your area of interest in all directions knowing there will be data to support your analysis.
This is developed for land-based monitoring and all open water bodies are removed after the images have been created. We do not store SAR data for open seas and it’s not recommended to use any unremoved water imagery that you might find on the platform. You can find lakes consistently in our imagery, however, all water data is considerably lower quality than our land-based imagery. You can read more about the data generation process and our cloudless imagery in our Cloudless ‘Synthetic’ Sentinel-2 Data and Multiple Satellites, One Optical Image articles.
Data Specifications
Band ID | Spectral Band | Wavelength (nm) | Resolution (m) | Band Name |
1 | Blue | 492 ± 33 | 10 | B2 |
2 | Green | 559 ± 18 | 10 | B3 |
3 | Red | 664 ± 15 | 10 | B4 |
4 | Red-Edge 1 | 704 ± 8 | 10 | B5 |
5 | Red-Edge 2 | 740 ± 7 | 10 | B6 |
6 | Red-Edge 3 | 782 ± 10 | 10 | B7 |
7 | Near Infrared (NIR) | 732 ± 53 | 10 | B8 |
8 | Narrow NIR | 864 ± 11 | 10 | B8a |
9 | SWIR 1 | 1613 ± 47 | 10 | B11 |
10 | SWIR 2 | 2200 ± 92 | 10 | B12 |
All ten spectral bands are in the same 10-meter resolution meaning 20-meter resolution spectral bands have been upsampled during the deep learning data generation process. All spectral bands are in the same order and have the same band names as the Sentinel-2 MSI Instrument (ie. true color is [B3,B2,B1]).
The cloudless data has been corrected with Sen2Cor for bottom-of-atmosphere disturbance beforehand. Furthermore, all of our Sentinel-2 data is harmonized to the pre-January 25. baseline. This is to allow for more efficient time-series analysis across multiple years.
If you don’t mind working with individual tiles, the easiest, fastest, and cheapest way to acquire ClearSky Vision data is by buying and using our own standard tile size. The imagery is projected in UTM and saved in GEOTIFF as INT16. You can read more about the data specifications below for our 10-band multi-spectral imagery:
Tile Size | 5120x5120 pixels ~2621 km2 ~500 MB |
Data Type (Tile) | uint16 |
Data Range (Tile) | 0 to 65,535 |
No Data Value (Tile) | 0 |
Data Type (Polygon) | int16 |
Data Range (Polygon) | -32,767 to 32,767 |
No Data Value (Polygon) | -32,768 |
Reflectance Scaling | 10,000 |
File Format | GeoTIFF (.tif) |
API Documentation
Code Examples
We have published some example code for our API on GitHub to download individual tiles and to download and merge multiple tiles together. As a customer you can also downscale resolution, reproject imagery, calculate indices, and easily download time-series data. You can request a trial API key from eo.clearsky.vision if you wish to try the API code yourself before buying.

The code above (which can be downloaded from GitHub) will search our database for cloud-free images in your defined bounding box within the range of dates chosen. This example will return 31 images of the same area from May 1st to May 31st, 2022. The native resolution is 10 meters/pixel but if your application doesn’t require the full resolution, it can also be downscaled with the resolution parameter to 20, 40, 50, 100, or 200 meters/pixel. The imagery can also be projected into different EPSG coordinates, here shown with epsg:32632 intersecting Denmark, Germany, Italy, and so on. The only file types available are tif and png. Lastly, you can download individual bands, all bands, and/or indices calculated on these spectral bands. The default is set to all spectral bands, which will return 10 bands. Also please remember to pick a suitable download location as multi-spectral time-series data in 10-meter resolution can easily be hundreds of GB for your area of interest.
These API features are only available to customers as all computation is done on ClearSky Vision servers. However, the tile API below can be accessed with a trial API key originating from eo.clearsky.vision. If you wish to try merging and projection during testing, please reach out to info@clearsky.vision.
Tile API
The API resides at the base URL https://api.clearsky.vision/. All communication is done using application/json for request/response bodies or application/octet-stream for responses containing a file.
Prerequisites
In order to communicate with the API, all requests must contain an API key header that identifies the requestor. The header must use the following format: X-API-KEY <Api Key>
API Responses
The various endpoints will wrap responses in a response object with the following structure:
}
“Succeeded”: true,
“Error”: {
“Message”: “string”,
“Code”: 0
},
“Data”: {
<Data object>
}
}
The value of Succeeded determines whether the request was completed successfully or with errors. If errors arose during the request, Succeeded will be false and the Error object will contain information regarding the error that caused the failure. If the request succeeded, Succeeded will be true and the Data object will contain the resulting response data from the endpoint.
Endpoints
There are currently 3 endpoints that are relevant for requests pertaining to satellite imagery.
POST https://api.clearsky.vision/api/satelliteimages/boundingbox
This endpoint accepts the following request body:
{
“BoundingBoxWkt”: “POLYGON((10.547961852650397
57.8312109047016,7.647571227650398 56.03329069935641,7.120227477650398
51.9827469847498,17.1837040401504 51.49290832508735,10.547961852650397
57.8312109047016))”,
“From”: “2021-12-31T00:00:00Z”,
“Until”: “2021-12-31T00:00:00Z”
}
The BoundingBoxWkt field must contain a geography in WKT format. In order for the endpoint to return valid results, the WKT geography must be created using the SRID EPSG:4326 (WGS84). The endpoint will not currently reject geographies using another SRID. The From field is a date-time field (in UTC format) representing the earliest point in time (inclusive) for which images in the specified region are relevant. Any meta-data from images with a date-time before the date-time specified in the field will not be included in the response. The Until field is a date-time field (in UTC format) representing the last point in time (inclusive) for which images in the specified region are relevant. Any meta-data from images with a date-time after the date-time specified in the field will not be included in the response.
The endpoint responds with the following Data object:
“Data”: [
{
“Geog”: “string”,
“XPosition”: 0,
“YPosition”: 0,
“SatelliteImageZones”: [
{
“SatelliteImageId”: 0,
“ImageDate”: “2022-03-27T23:54:32.356Z”
}
]
}
]
The result is an array of internally specified zones that intersect with the BoundingBoxWkt supplied geography. Geog is a WKT representation of the area covered by the zone. SRID EPSG:4326. All images are internally represented using a grid, using XPosition and YPosition. Two zones in the grid are neighbors if there is a 1 integer difference between the XPosition or YPosition of the two zones. SatelliteImageZones contains references to images present in the zone. Each of these images has a SatelliteImageId and an ImageDate (in UTC format).
GET https://api.clearsky.vision/api/satelliteimages?satelliteImageId=123456
This endpoint accepts the query parameter SatelliteImageId, a reference to a satellite image. The endpoint responds with application/octet-stream data (the requested satellite imagery).
GET https://api.clearsky.vision/api/credit/credits
This endpoint looks up the number of credits available to the API key used for the request. The endpoint responds with the following Data object:
“Data”: {
“Key”: “string”,
“CreditAmount”: 0
}
Key contains the API key used for the request. CreditAmount represents the credits available at the point in time of the request.