New dataset published in CDS: Monthly drought indices from 1940 to present derived from ERA5 reanalysis

We are pleased to announce that the Monthly drought indices from 1940 to present derived from ERA5 reanalysis dataset referred to as ERA5-Drought has been published on 30 October 2025, in the Climate Data Store (CDS):

This dataset provides a set of monthly meteorological drought indicators, such as the Standardized Precipitation Index (SPI) and the Standardized Precipitation Evapotranspiration Index (SPEI). For both indicators, accumulation windows of 1, 3, 6, 12, 24, 36, and 48 months are provided.

The data are derived from ERA5 and available for the full back-extension from 1940 until present. The dataset is updated monthly using both ERA5 and ERA5T data, and for the deterministic and the ensemble ERA5-Drought dataset, the data are provided on a regular 0.25 degrees grid.

A User Guide is available here: ERA5–Drought - User Guide - Copernicus Knowledge Base - ECMWF Confluence Wiki

The dataset has previously been hosted on the Cross Data Store (XDS). XDS users will need to migrate to the CDS and update the credentials of their .cdsapirc file. The relevant credentials information are available from the following page (please log in first): CDSAPI setup<!-- --> - <!-- -->Climate Data Store

For any enquiries please use the ECMWF Support portal.

ECMWF Support

2 Likes

Thank you, this is a really exciting dataset release, both thematically and because it includes the ensemble members in a derived dataset. It’s also well-documented which will make EQC (in C3S2_521) very smooth :slight_smile:

I ran into some issues when trying to run the examples in the documentation. Maybe they need to be updated now that it’s on the CDS? For example (first one):

import cdsapi
dataset = "derived-drought-historical-monthly"
request = {
    'variable': ['standardised_precipitation_index'],
    'accumulation_period': ['12'],
    'product_type': ['reanalysis'],
    'version': '1_0',
    'year': ['2023'],
    'month': ['1','2','3','4','5','6','7','8','9','10','11','12']
}
client = cdsapi.Client()
client.retrieve(dataset, request).download()

(note I had to change the dataset variable to match the CDS)

This gives the following error:

HTTPError: 400 Client Error: Bad Request for url: https://cds.climate.copernicus.eu/api/retrieve/v1/processes/derived-drought-historical-monthly/execution
invalid request
Request has not produced a valid combination of values, please check your selection.
{'variable': ['standardised_precipitation_index'], 'accumulation_period': ['12'], 'product_type': ['reanalysis'], 'version': '1_0', 'year': ['2023'], 'month': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']}

The other listed examples give the same error (with the corresponding request at the bottom).

Setting up a request through the CDS catalogue entry works correctly (in cdsapi and earthkit-data):

import cdsapi

dataset = "derived-drought-historical-monthly"
request = {
    "variable": [
        "standardised_precipitation_index",
        "standardised_precipitation_evapotranspiration_index"
    ],
    "accumulation_period": ["12"],
    "version": "1_0",
    "product_type": ["reanalysis"],
    "dataset_type": "consolidated_dataset",
    "year": ["2023"],
    "month": [
        "01", "02", "03",
        "04", "05", "06",
        "07", "08", "09",
        "10", "11", "12"
    ]
}

client = cdsapi.Client()
client.retrieve(dataset, request).download()

I think the inclusion of the dataset_type key here is the big difference, as well as the aforementioned changed dataset ID. The month format (leading 0s) is also different, not sure if that would make a difference.

(We previously had a separate issue where a request for both indices and the quality criteria would only return the quality criteria, but cannot reproduce this – mentioning it here only as a note to ourselves)

1 Like

Hi @Olivier_Burggraaff ,

Thank you for your comment, I have updated the documentation to reflect what you mentioned.

Many thanks and thanks for using the ERA5-Drought.
Chris

3 Likes