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], # N, W, S, E bounding box
"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 # Kelvin to Celsius
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
xarrayandnetCDF4for reading downloaded files in Python.