Skip to main content

Meteosat Third Generation — first full-disk FCI image

Meteosat-12 (MTG-I1) first full-disk image, Flexible Combined Imager — © EUMETSAT, via Wikimedia Commons

EUMETSearch

PyPI version License: Apache 2.0 Python

Query and download data from the EUMETSAT DataStore and DataTailor — MTG FCI and MSG SEVIRI products — and export it to regular-grid or MajorTOM sparse Zarr stores.

Features

  • Search EUMETSAT collections by time window and bounding box, with no download.
  • One-off, single-window downloads (download_single) for event-based use cases.
  • Batched, multi-day interval downloads (download_interval) with threaded I/O for larger jobs.
  • Export downloaded data straight to a regular lat/lon Zarr store or a MajorTOM sparse Zarr store.
  • Look up product metadata either by the package's short product key (e.g. "MTG-FCI-L2-AFM") or directly by EUMETSAT product code (e.g. "EO:EUM:DAT:0682").
  • A tiled CLI pipeline (pipeline_data.py) for large-area, multi-tile batch downloads.

Installation

pip install eumetsearch

From source, for development:

git clone https://github.com/Riccardo7-DS/eumetsearch.git
cd eumetsearch
pip install -e .

Optional extras

Extra Installs Used for
transform numpy, zarr, xarray, dask, pyproj, scipy, pandas, geopandas, rioxarray Lightweight analysis/alignment only, no download deps
gee earthengine-api Land-fraction tile filtering in pipeline_data.py --min_land_fraction
pip install "eumetsearch[transform]"

Authentication

Downloading requires an EUMETSAT Data Store API key/secret — register at the EUMETSAT API key portal to get one. Copy .env.example to .env and fill in:

EUMETSAT_CONSUMER_KEY="..."
EUMETSAT_CONSUMER_SECRET="..."

EUMDownloader loads this automatically (python-dotenv), as long as the .env file is somewhere above your working directory.

Quickstart

1. Look up a product

Products are keyed by a short name in products_list (see Supported products), each mapping to metadata including the real EUMETSAT product code:

from eumetsearch import products_list, EUMDownloader

product_id = products_list["MTG-FCI-L2-AFM"]["product_id"]   # "EO:EUM:DAT:0682"

# Or go the other way — resolve metadata directly from a product code,
# without needing to know (or look up) the dictionary key:
meta = EUMDownloader.get_product_metadata("EO:EUM:DAT:0682")
print(meta["product_name"], meta["bands"])

2. Search without downloading

downloader = EUMDownloader(
    product_id=product_id,
    output_dir="./data/datastore_data",
)

results = downloader.search(
    start_time="2024-07-23T12:00:00",
    end_time="2024-07-23T12:10:00",
    bounding_box=[41.20, 41.02, -8.70, -8.48],  # [N, S, W, E]
)
print(results["count"], results["products"])

3. Download a single time window

For one-off, event-based downloads — no daily-interval splitting or thread-chunking, just one window in one shot:

file_list = downloader.download_single(
    start_time="2024-07-23T12:00:00",
    end_time="2024-07-23T12:10:00",
    bounding_box=[41.20, 41.02, -8.70, -8.48],  # [N, S, W, E]
    method="datatailor",  # or "datastore"
)

Files land in output_dir. See notebook/quickstart.ipynb for a full worked example, from search through to plotting the downloaded data.

4. Batch downloads over multiple days

downloader.download_interval(
    start_time="2025-06-01T08:00:00",
    end_time="2025-06-05T08:00:00",
    bounding_box=[41.20, 41.02, -8.70, -8.48],
    observations_per_day=6,
    jump_minutes=60,
)

download_interval sets up the daily-interval splitting; combine it with ZarrExport (regular lat/lon grid) or MajorTomZarrExport (sparse MajorTOM grid) to trigger the actual download and write results to Zarr. For large, multi-tile areas, the CLI pipeline wraps this end-to-end:

python -m eumetsearch.data_collection.pipeline_data \
    --product MTG-FCI-L1C-FDHSI \
    --channels vis_06 vis_08 \
    --region europe \
    --n_lat 4 --n_lon 4 \
    --start_date 2025-06-26T08:00:00 \
    --end_date   2025-06-26T13:00:00 \
    --observations_per_day 6 \
    --jump_minutes 60 \
    --majortom

Supported products

Key Product EUMETSAT code
MTG-FCI-L1C-FDHSI MTG FCI L1C — Full Disk High Spectral Res. EO:EUM:DAT:0662
MTG-FCI-L1C-HRFI MTG FCI L1C — High Resolution Full Disk EO:EUM:DAT:0665
MTG-FCI-L2-CLM MTG FCI L2 — Cloud Mask EO:EUM:DAT:0666
MTG-FCI-L2-AFM MTG FCI L2 — Active Fire Monitoring EO:EUM:DAT:0682
MTG-FCI-L2-OCA MTG FCI L2 — Optimal Cloud Analysis EO:EUM:DAT:0668
MTG-FCI-L2-GII MTG FCI L2 — Global Instability Indices EO:EUM:DAT:0683
MTG-FCI-L2-AMV MTG FCI L2 — Atmospheric Motion Vectors EO:EUM:DAT:0676
MSG-SEVIRI-L1-HRY MSG SEVIRI L1.5 — Prime (0°E) EO:EUM:DAT:MSG:HRSEVIRI
MSG-SEVIRI-L1-IODC MSG SEVIRI L1.5 — Indian Ocean (41.5°E) EO:EUM:DAT:MSG:HRSEVIRI-IODC
MSG-SEVIRI-RSS MSG SEVIRI — Rapid Scan Service (3.5°E) EO:EUM:DAT:MSG:MSG15-RSS

License

Apache License 2.0 — see LICENSE.txt.

Metadata

Release files for eumetsearch 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eumetsearch 0.1.4
File Size Uploaded
eumetsearch-0.1.4.tar.gz 613.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eumetsearch 0.1.4
File Interpreter ABI Platform
eumetsearch-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 689.9 kB

Release files / eumetsearch-0.1.4.tar.gz

Download URL eumetsearch-0.1.4.tar.gz
Size 613.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a25a40c34be2fc20d8e11a1ee4789ca2707f31e437777c221cda44d0b804c100
BLAKE2b-256 checksum
How to use checksums
50d27b040026bb359ed4208855e09d678af39fcbe535865d098a3782e6c9717c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / eumetsearch-0.1.4-py3-none-any.whl

Download URL eumetsearch-0.1.4-py3-none-any.whl
Size 76.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
94257b6d5f530203964bf8ad4cc1f9839b5e2f6bca4dcd26c45fe65fc5757622
BLAKE2b-256 checksum
How to use checksums
ecf3aff62790fa0e97cc8ac649677f09f5a43a1cc240ad5c0e79cce2e4397ffb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page