cdsapi
Climate Data Store API
What it is and what it does
cdsapi is a Python wrapper around the Copernicus Climate Data Store (CDS) API, maintained by ECMWF. It lets you programmatically query and download climate reanalysis datasets—such as ERA5 pressure-level data—directly into your Python workflows without manual portal interaction. The package handles API authentication via a stored personal access token and abstracts the HTTP request details behind a simple Client interface.
Typical use involves creating a Client instance, calling retrieve() with a dataset name and parameter dictionary, and specifying an output file. The package depends on requests for HTTP communication, tqdm for progress indication, and ecmwf-datastores-client for underlying data store integration. It supports Python 3.8 and later, including recent versions up to 3.13, and carries no known security vulnerabilities.
Use it for:
- Download ERA5 reanalysis temperature or pressure data for a specific date range and location in a single Python call.
- Automate batch retrieval of climate datasets as part of a research pipeline or data processing workflow.
- Integrate climate data ingestion into a weather modeling or environmental analysis application.
- Fetch historical weather observations for validation or training machine learning models on climate patterns.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
cdsapi is a Python client for the Copernicus Climate Data Store API, enabling programmatic retrieval of climate and weather datasets from ECMWF's CDS portal.
Yes. cdsapi is actively maintained, has low install friction, carries no known vulnerabilities, and uses a permissive Apache 2.0 license. Install it if you need programmatic access to Copernicus CDS datasets; the main prerequisite is obtaining a CDS account and configuring your authentication token.
Install
cdsapi on PyPI
pip
pip install cdsapiuv
uv add cdsapipoetry
poetry add cdsapiInstalling cdsapi
Before you install
Low install friction with a pure Python wheel. Active maintenance as of March 2026, with 321 repository stars and a recent release cycle. Depends on three lightweight runtime packages: ecmwf-datastores-client, requests, and tqdm.
License in practice
Licensed under Apache 2.0 (permissive), allowing commercial use, modification, and distribution with minimal restrictions—suitable for most projects.
Quickstart
pip install cdsapi
import cdsapi
cds = cdsapi.Client()
cds.retrieve('reanalysis-era5-pressure-levels', {
"variable": "temperature",
"pressure_level": "1000",
"product_type": "reanalysis",
"date": "2017-12-01/2017-12-31",
"time": "12:00",
"format": "grib"
}, 'download.grib')
Requires a Copernicus CDS account with a Personal Access Token configured in ~/.cdsapirc; you must also accept the Terms and Conditions for each dataset you download.
Verify before relying
- Whether ecmwf-datastores-client is a maintained package and what its own dependency tree adds to install complexity.
- Performance characteristics and rate limits when retrieving large datasets or making concurrent requests.
- Whether the package handles authentication refresh or token expiration gracefully.
Package facts
| License | Apache 2.0 (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — ecmwf-datastores-client, requests, tqdm |
| Maintenance | actively maintained — 318 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 602,587/month — #5,814 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: cdsapi-0.7.7-py2.py3-none-any.whl
Tags
More Information Analysis packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyarrowpyarrow provides Python bindings to Apache…
permissive · top 100 on PyPI
networkxNetworkX provides data structures and…
permissive · top 1,000 on PyPI
snowflake-connector-pythonConnects Python applications to Snowflake data…
permissive · top 1,000 on PyPI
contourpyContourPy calculates contours of 2D…
permissive · top 1,000 on PyPI
snowflake-snowpark-pythonSnowpark Python provides APIs to query and…
permissive · top 1,000 on PyPI
ecmwf-api-clientPython client for accessing ECMWF's IFS…
permissive · top 15,000 on PyPI
ecmwf-datastores-clientPython client for the ECMWF Data Stores Service…
permissive · top 15,000 on PyPI
copernicusmarineCopernicusmarine provides a CLI and Python API…
unclear · top 15,000 on PyPI
meteostatMeteostat provides access to historical weather…
unclear · top 15,000 on PyPI
earthkit-dataearthkit-data provides a unified Python…
permissive · top 15,000 on PyPI
cfgribcfgrib maps GRIB meteorological data files to…
permissive · top 5,000 on PyPI
ecmwf-opendataDownloads ECMWF open meteorological data using…
permissive · top 15,000 on PyPI
AI-WQ-packageSupports participation in the ECMWF AI Weather…
permissive · top 15,000 on PyPI
cmweathercmweather provides a collection of colormaps…
permissive · top 15,000 on PyPI
dwdwfsapiRetrieves weather warnings, bio-weather…
permissive · top 15,000 on PyPI