{"id":23651,"library":"ecmwf-api-client","title":"ECMWF API Client","description":"Python client for ECMWF (European Centre for Medium-Range Weather Forecasts) web services API. Allows downloading meteorological data. Current version 1.6.5, actively maintained, with irregular releases.","status":"active","version":"1.6.5","language":"python","source_language":"en","source_url":"https://github.com/ecmwf/ecmwf-api-client","tags":["ecmwf","weather","api","climate","data"],"install":[{"cmd":"pip install ecmwf-api-client","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"note":"Standard import path.","symbol":"ECMWFDataServer","correct":"from ecmwfapi import ECMWFDataServer"},{"note":"For service-based access.","symbol":"ECMWFService","correct":"from ecmwfapi import ECMWFService"}],"quickstart":{"code":"from ecmwfapi import ECMWFDataServer\n\nserver = ECMWFDataServer(url=\"https://api.ecmwf.int/v1\", key=os.environ.get('ECMWF_API_KEY', ''), email=os.environ.get('ECMWF_EMAIL', ''))\nserver.retrieve({\n    \"class\": \"od\",\n    \"dataset\": \"era5\",\n    \"date\": \"2018-01-01/to/2018-01-02\",\n    \"expver\": \"1\",\n    \"levelist\": \"1\",\n    \"levtype\": \"ml\",\n    \"param\": \"130\",\n    \"stream\": \"oper\",\n    \"target\": \"output.grib\",\n    \"time\": \"00:00:00/12:00:00\",\n    \"type\": \"an\",\n    \"grid\": \"1.0/1.0\",\n    \"area\": \"50/-10/30/10\",\n    \"format\": \"grib\"\n})","lang":"python","description":"Downloads ERA5 data from the ECMWF API. Requires API key and email set in environment variables."},"warnings":[{"fix":"Consider using the Climate Data Store (CDS) API client `cdsapi` for newer datasets.","message":"ECMWFDataServer with URL 'https://api.ecmwf.int/v1' is deprecated; use 'https://api.ecmwf.int/v1' (still works) or migrate to new CDS API.","severity":"deprecated","affected_versions":"all versions"},{"fix":"Always set ECMWF_API_KEY and ECMWF_EMAIL environment variables, or pass them explicitly.","message":"Anonymous access (v1.6.0+) may silently succeed but returns limited data. If you expect full access, ensure key/email are provided.","severity":"gotcha","affected_versions":">=1.6.0"},{"fix":"Ensure API keys are valid before making requests. If anonymous access is intended, do not set keys.","message":"In v1.6.3, invalid API keys now fail fast instead of falling back to anonymous access. Code that relied on silent fallback will break.","severity":"breaking","affected_versions":">=1.6.3"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use ECMWFDataServer for URL-based access, or omit 'url' for ECMWFService.","cause":"ECMWFService does not accept 'url' parameter, only 'email' and 'key'.","error":"ecmwfapi.ECMWFService.ECMWFService.__init__() got an unexpected keyword argument 'url'"},{"fix":"Reinstall: `pip install --upgrade ecmwf-api-client`. For older packages, import from `ecmwf` directly.","cause":"Possibly a corrupted installation or very old version; module name changed in v1.5.0?","error":"ImportError: cannot import name 'ECMWFDataServer' from 'ecmwfapi'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}