| name | copernicus-climate |
| description | Access Copernicus Climate Data Store (CDS) for ERA5 reanalysis, climate projections, and satellite observations. Use when: (1) retrieving historical weather/climate data, (2) downloading ERA5 reanalysis fields, (3) querying climate projections (CMIP), (4) getting satellite-derived climate variables. NOT for: real-time weather forecasts (use weather APIs), ocean biology (use Copernicus Marine), air quality (use CAMS). |
| metadata | {"openclaw":{"emoji":"🌍","requires":{"bins":["python3"]}}} |
Copernicus Climate Data Store (CDS)
Access ERA5 reanalysis, climate projections, and satellite climate records through
the Copernicus CDS API. Covers global gridded climate data from 1940 to present.
Prerequisites
Install the CDS API client and configure credentials:
pip install cdsapi
Create ~/.cdsapirc with your CDS credentials:
url: https://cds.climate.copernicus.eu/api
key: <your-uid>:<your-api-key>
Register at https://cds.climate.copernicus.eu to obtain credentials.
API Base URL
https://cds.climate.copernicus.eu/api
Basic Python Retrieval Pattern
import cdsapi
c = cdsapi.Client()
c.retrieve(
"reanalysis-era5-single-levels",
{
"product_type": "reanalysis",
"variable": "2m_temperature",
"year": "2023",
"month": "07",
"day": "15",
"time": "12:00",
"area": [60, -10, 35, 30],
"format": "netcdf",
},
"era5_temperature.nc",
)
ERA5 Pressure-Level Variables
Retrieve upper-air data on pressure levels:
c.retrieve(
"reanalysis-era5-pressure-levels",
{
"product_type": "reanalysis",
"variable": ["temperature", "geopotential", "relative_humidity"],
"pressure_level": ["500", "700", "850", "925"],
"year": "2023",
"month": "01",
"day": "15",
"time": "12:00",
"format": "netcdf",
},
"era5_pressure_levels.nc",
)
Key Dataset Identifiers
| Dataset ID | Description |
|---|
reanalysis-era5-single-levels | Surface and single-level hourly fields |
reanalysis-era5-pressure-levels | Upper-air on 37 pressure levels |
reanalysis-era5-single-levels-monthly | Monthly-averaged surface fields |
reanalysis-era5-land | ERA5-Land (enhanced land, 9 km) |
satellite-sea-level-global | Satellite altimetry sea level |
Common Variables
Single level: 2m_temperature, total_precipitation, 10m_u_component_of_wind,
10m_v_component_of_wind, mean_sea_level_pressure, surface_solar_radiation_downwards.
Pressure level: temperature, geopotential, relative_humidity, specific_humidity.
Processing Downloaded NetCDF
import xarray as xr
ds = xr.open_dataset("era5_temperature.nc")
temp_celsius = ds["t2m"] - 273.15
print(f"Mean temperature: {float(temp_celsius.mean()):.1f} C")
Area Selection (N, W, S, E bounding box)
Global: [90, -180, -90, 180], Europe: [72, -25, 33, 45],
Continental US: [50, -125, 25, -65], East Asia: [55, 70, 5, 145].
Best Practices
- Specify the smallest area and fewest variables needed to reduce download time.
- Use monthly-averaged datasets when daily resolution is not required.
- Request data in NetCDF format for analysis; GRIB for operational workflows.
- CDS queues requests; large jobs may take hours. Check status via the web dashboard.
- ERA5 data is available from 1940 to present with ~5-day latency.
- For multi-year bulk downloads, split requests by year to avoid timeouts.
- Install
xarray and netCDF4 for reading downloaded files in Python.