An incremental downloader for Copernicus CDS / ADS datasets
Project description
Copernicus Downloader
A flexible incremental downloader for Copernicus CDS / ADS datasets, designed for reproducible and automated pipelines.
Supports yearly, monthly, daily granularities with incremental catch-up, local or S3 storage, and .env + YAML configuration.
Repository: celine-eu/copernicus-downloader
License: Apache-2.0
Features
- Incremental yearly / monthly / daily downloads
- Automatic skipping of already-requested files
- min_date clamp to avoid overlap between monthly backfill and daily updates
- Local FS or S3 (Minio) storage abstraction
- Configurable with
.env+ YAML - Logging with
LOG_LEVEL - uv for fast Python environment management
Setup
1. Clone the repo
git clone https://github.com/celine-eu/copernicus-downloader.git
cd copernicus-downloader
2. Install dependencies (via uv)
uv sync
This will create and manage a virtual environment automatically.
Environment variables
Create a .env file in the repo root:
# Copernicus CDS API credentials (find them in your CDS profile)
CDS_API_KEY="abcdefg-your-key"
CDSAPI_URL="https://cds.climate.copernicus.eu/api"
# Optional: Atmosphere ADS API credentials
ADS_API_KEY="hijklmn-your-key"
ADSAPI_URL="https://ads.atmosphere.copernicus.eu/api"
# Optional: storage backend
AWS_ACCESS_KEY_ID="minio"
AWS_SECRET_ACCESS_KEY="minio123"
AWS_DEFAULT_REGION="us-east-1"
# AWS_ENDPOINT_URL=http://localhost:19000
# AWS_BUCKET=local-data
# Logging
LOG_LEVEL=INFO
# Optional: temporary dir for downloads
CDS_TMPDIR=/var/tmp/cds
# Optional: data storage path
DATA_DIR=./data
Configuration
By default, the downloader loads cds_config.yaml (or path from CDS_CONFIG).
Supports ${VAR} placeholders, expanded from .env.
Example config
cat > cds_config.yaml <<'YAML'
years: [2020, 2021, 2022, 2023, 2024]
storage:
type: fs
base_dir: ./data
# Example for Minio
# storage:
# type: s3
# bucket: my-bucket
# endpoint_url: http://localhost:9000
datasets:
era5:
name: reanalysis-era5-single-levels
url: ${CDSAPI_URL}
key: ${CDS_API_KEY}
granularity: daily
min_date: 2025-08-01 # daily starts after monthly backfill
request:
product_type: ["reanalysis"]
variable: ["2m_temperature", "total_precipitation"]
time: ["00:00","06:00","12:00","18:00"]
data_format: grib
download_format: unarchived
area: [45.96, 11.11, 45.84, 11.36]
Running
Download all datasets
uv run python -m copernicus_downloader.main
Download only one dataset (e.g., era5)
uv run python -m copernicus_downloader.main era5
Contributing
Issues and PRs are welcome! Please open an issue or submit a pull request.
License
This project is licensed under the Apache-2.0 License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file copernicus_downloader-1.2.2.tar.gz.
File metadata
- Download URL: copernicus_downloader-1.2.2.tar.gz
- Upload date:
- Size: 15.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96b92a0ec1e832d8eafac2d9fb1126f8bfdc102f9be516c93c27e7414def8a2c
|
|
| MD5 |
47fa5a98474bbb882c925be84be298a5
|
|
| BLAKE2b-256 |
36915e545b81b26993da12016a1244697f9b07d73e0b2430ef6f44009455fad2
|
Provenance
The following attestation bundles were made for copernicus_downloader-1.2.2.tar.gz:
Publisher:
build.yml on celine-eu/copernicus-downloader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copernicus_downloader-1.2.2.tar.gz -
Subject digest:
96b92a0ec1e832d8eafac2d9fb1126f8bfdc102f9be516c93c27e7414def8a2c - Sigstore transparency entry: 778801399
- Sigstore integration time:
-
Permalink:
celine-eu/copernicus-downloader@60b755669c0cbf70cd18da3a5bb7904d5a7f121f -
Branch / Tag:
refs/tags/v1.2.2 - Owner: https://github.com/celine-eu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@60b755669c0cbf70cd18da3a5bb7904d5a7f121f -
Trigger Event:
push
-
Statement type:
File details
Details for the file copernicus_downloader-1.2.2-py3-none-any.whl.
File metadata
- Download URL: copernicus_downloader-1.2.2-py3-none-any.whl
- Upload date:
- Size: 17.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a38d15b1b087604134972b707c0be7f8d35cdb2fbde903916b0a6c670edfac70
|
|
| MD5 |
b8205620b93fccb2b4d47cf81a77fcca
|
|
| BLAKE2b-256 |
6d0cf72694596486086e4706663c8c08d7c9697179702f0b3452831b3c02e5a9
|
Provenance
The following attestation bundles were made for copernicus_downloader-1.2.2-py3-none-any.whl:
Publisher:
build.yml on celine-eu/copernicus-downloader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copernicus_downloader-1.2.2-py3-none-any.whl -
Subject digest:
a38d15b1b087604134972b707c0be7f8d35cdb2fbde903916b0a6c670edfac70 - Sigstore transparency entry: 778801402
- Sigstore integration time:
-
Permalink:
celine-eu/copernicus-downloader@60b755669c0cbf70cd18da3a5bb7904d5a7f121f -
Branch / Tag:
refs/tags/v1.2.2 - Owner: https://github.com/celine-eu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@60b755669c0cbf70cd18da3a5bb7904d5a7f121f -
Trigger Event:
push
-
Statement type: