cdse-client
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 |
| 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, NDVI, 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, usesearch_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
Getting started · Search · Download · CLI · API reference · FAQ
Runnable scripts: examples/
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) |
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.
Metadata
Release files for cdse-client 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cdse_client-1.0.0.tar.gz | 53.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cdse_client-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 99.6 kB
Release files / cdse_client-1.0.0.tar.gz
| Download URL | cdse_client-1.0.0.tar.gz |
|---|---|
| Size | 53.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3ac00fdf31a905fe9d710df275f75ceb25b88d1e5ebe80be442d677da0741c5e
|
|
BLAKE2b-256 checksum How to use checksums |
53c96aea71da58b782e079e42587682601e9cfcddc31f99566105684c2d3fa42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 23, 2026.
Transparency logRelease files / cdse_client-1.0.0-py3-none-any.whl
| Download URL | cdse_client-1.0.0-py3-none-any.whl |
|---|---|
| Size | 45.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c04cc2914bcb0e2b25ca311ea37f6aef10797a5bb5d8523d9bc3821e88e06760
|
|
BLAKE2b-256 checksum How to use checksums |
b94e598362a237088ba12a9e8816d67676e8dc68adedac5f4fe1824eed1968c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 23, 2026.
Transparency log