Skip to content

About

Search and download Sentinel-1/2/3/5P satellite data from the Copernicus Data Space Ecosystem

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

cdse-client

PyPI version Python Downloads CI License: MIT

Search and download Copernicus Sentinel data (Sentinel-1, 2, 3, 5P) from the Copernicus Data Space Ecosystem in a few lines of Python.

pip install cdse-client
from cdse import CDSEClient

client = CDSEClient()  # reads CDSE_CLIENT_ID / CDSE_CLIENT_SECRET

products = client.search(
    bbox=[9.10, 45.40, 9.28, 45.52],  # Milan
    start_date="2025-06-01",
    end_date="2025-06-30",
    collection="sentinel-2-l2a",
    cloud_cover_max=20,
    limit=5,
)

print(client.download(products[0]))

Same thing from the terminal:

cdse search --bbox 9.10,45.40,9.28,45.52 -s 2025-06-01 -e 2025-06-30 -c 20 -l 5 --download

Credentials

Register at dataspace.copernicus.eu, create OAuth2 credentials in your account settings, then:

export CDSE_CLIENT_ID="your-client-id"          # PowerShell: $env:CDSE_CLIENT_ID = "..."
export CDSE_CLIENT_SECRET="your-client-secret"  # PowerShell: $env:CDSE_CLIENT_SECRET = "..."

You can also pass them explicitly: CDSEClient(client_id=..., client_secret=...).

What it does

Search STAC — bounding box, point + radius, city name, date range, cloud cover, one tile or every tile (coverage)
Download OData/Zipper — progress bars, parallel, MD5 checksums, quicklooks
Export to_dataframe(), to_geojson(), to_geodataframe()
Async CDSEClientAsync with concurrency control
Process crop, band stacking, SCL cloud mask, NDVI/NDWI/NDMI/NBR, RGB previews (Sentinel-2)

Collections: sentinel-1-grd, sentinel-2-l1c, sentinel-2-l2a, sentinel-3-olci, sentinel-3-slstr, sentinel-5p-l2.

Built for long, unattended jobs: OAuth2 tokens refresh themselves mid-download, transient 429/5xx responses are retried with exponential backoff, every request has an explicit timeout, and the package ships type hints (PEP 561).

search() returns STAC results, whose ids are product names, not OData UUIDs. If you need a UUID, use search_by_name(name, exact=True).

Optional extras

pip install cdse-client[geo]         # search by city name, GeoDataFrame export
pip install cdse-client[dataframe]   # DataFrame export
pip install cdse-client[async]       # concurrent downloads
pip install cdse-client[processing]  # NDVI, band stacking, previews
pip install cdse-client[all]         # all of the above

Documentation

Full documentation →

Getting started · Search · Download · CLI · API reference · FAQ

Runnable scripts: examples/. Worked examples by persona (crop NDVI, burn severity, Sentinel-1 pairs, city before/after, NO2): Use cases.

Migrating from sentinelsat

sentinelsat targeted DHuS/SciHub, which is closed; the project is archived and cannot download from CDSE. The export surface here is deliberately familiar:

sentinelsat cdse-client
SentinelAPI(user, password) CDSEClient() (OAuth2 client credentials)
api.query(...) client.search(...)
api.download(...) client.download(product)
api.to_dataframe(...) client.to_dataframe(products)

Full migration guide →

Contributing

Contributions welcome — see CONTRIBUTING.md and the issue tracker.

Disclaimer

Unofficial client library, not affiliated with or endorsed by ESA, the European Commission, or the Copernicus Programme.

Sentinel data is provided under a free, full and open data policy for any use, including commercial. Users must register at dataspace.copernicus.eu and comply with the CDSE Terms and Conditions and quotas.

License

MIT — see LICENSE.

About

Search and download Sentinel-1/2/3/5P satellite data from the Copernicus Data Space Ecosystem

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages