Hint

You can run this notebook in a live session with Binder.

Configuration#

This section shows how to configure eodag to suit your needs.
You will learn how to:
[1]:
from eodag import EODataAccessGateway

Add or update a provider#

An EODataAccessGateway object has the methods add_provider() to quickly add a new provider, and update_providers_config() that allows to either add a new provider or to update an existing one. The example below shows how to add a STAC provider using both methods.

[2]:
dag = EODataAccessGateway()
dag.providers
[2]:
ProvidersDict (16)
cop_dataspace:      Provider( 'priority': '0',  'title': 'Copernicus Data Space Ecosystem',  'url': 'https://dataspace.copernicus.eu/' )
name: 'cop_dataspace',
title: 'Copernicus Data Space Ecosystem',
url: 'https://dataspace.copernicus.eu/',
priority: 0,
cop_ghsl:           Provider( 'priority': '0',  'title': 'Copernicus Global Human Settlement Layer',  'url': 'https://human-settlement.emergency.copernicus.eu/index.php' )
name: 'cop_ghsl',
title: 'Copernicus Global Human Settlement Layer',
url: 'https://human-settlement.emergency.copernicus.eu/index.php',
priority: 0,
cop_marine:         Provider( 'priority': '0',  'title': 'Copernicus Marine Data Store',  'url': 'https://marine.copernicus.eu/' )
name: 'cop_marine',
title: 'Copernicus Marine Data Store',
url: 'https://marine.copernicus.eu/',
priority: 0,
creodias:           Provider( 'priority': '0',  'title': 'CloudFerro DIAS',  'url': 'https://creodias.eu/' )
name: 'creodias',
title: 'CloudFerro DIAS',
url: 'https://creodias.eu/',
priority: 0,
dlr_eoc_geoservice: Provider( 'priority': '0',  'title': 'DLR Earth Observation Center (EOC) Geoservice',  'url': 'https://geoservice.dlr.de' )
name: 'dlr_eoc_geoservice',
title: 'DLR Earth Observation Center (EOC) Geoservice',
url: 'https://geoservice.dlr.de',
priority: 0,
earth_search:       Provider( 'priority': '0',  'title': 'Earth Search',  'url': 'https://www.element84.com/earth-search/' )
name: 'earth_search',
title: 'Earth Search',
url: 'https://www.element84.com/earth-search/',
priority: 0,
earth_search_gcs:   Provider( 'priority': '0',  'title': 'Google Cloud Storage through Earth Search',  'url': 'https://www.element84.com/earth-search/' )
name: 'earth_search_gcs',
title: 'Google Cloud Storage through Earth Search',
url: 'https://www.element84.com/earth-search/',
priority: 0,
ecmwf:              Provider( 'priority': '0',  'title': 'ECMWF archive products',  'url': 'https://www.ecmwf.int' )
name: 'ecmwf',
title: 'ECMWF archive products',
url: 'https://www.ecmwf.int',
priority: 0,
eocat:              Provider( 'priority': '0',  'title': 'ESA Catalog provides interoperable access, following ISO/OGC[...]',  'url': 'https://eocat.esa.int/eo-catalogue' )
name: 'eocat',
title: 'ESA Catalog provides interoperable access, following ISO/OGC interface guidelines, to Earth Observation metadata',
url: 'https://eocat.esa.int/eo-catalogue',
priority: 0,
eumetsat_ds:        Provider( 'priority': '0',  'title': 'EUMETSAT Data Store',  'url': 'https://data.eumetsat.int' )
name: 'eumetsat_ds',
title: 'EUMETSAT Data Store',
url: 'https://data.eumetsat.int',
priority: 0,
fedeo_ceda:         Provider( 'priority': '0',  'title': 'CEDA datasets through FedEO Catalog',  'url': 'https://fedeo.ceos.org/' )
name: 'fedeo_ceda',
title: 'CEDA datasets through FedEO Catalog',
url: 'https://fedeo.ceos.org/',
priority: 0,
geodes:             Provider( 'priority': '0',  'title': 'French National Space Agency (CNES) Earth Observation portal',  'url': 'https://geodes.cnes.fr' )
name: 'geodes',
title: 'French National Space Agency (CNES) Earth Observation portal',
url: 'https://geodes.cnes.fr',
priority: 0,
planetary_computer: Provider( 'priority': '0',  'title': 'Microsoft Planetary Computer',  'url': 'https://planetarycomputer.microsoft.com' )
name: 'planetary_computer',
title: 'Microsoft Planetary Computer',
url: 'https://planetarycomputer.microsoft.com',
priority: 0,
sara:               Provider( 'priority': '0',  'title': 'Sentinel Australasia Regional Access',  'url': 'https://www.copernicus.gov.au/' )
name: 'sara',
title: 'Sentinel Australasia Regional Access',
url: 'https://www.copernicus.gov.au/',
priority: 0,
theia:              Provider( 'priority': '0',  'title': 'Data Terra Theia, environmental thematic hub for land data access.',  'url': 'https://api.datastore-mtd.theia.data-terra.org/' )
name: 'theia',
title: 'Data Terra Theia, environmental thematic hub for land data access.',
url: 'https://api.datastore-mtd.theia.data-terra.org/',
priority: 0,
usgs_satapi_aws:    Provider( 'priority': '0',  'title': 'USGS Landsatlook SAT API',  'url': 'https://landsatlook.usgs.gov/stac-server' )
name: 'usgs_satapi_aws',
title: 'USGS Landsatlook SAT API',
url: 'https://landsatlook.usgs.gov/stac-server',
priority: 0,
[3]:
dag.add_provider("uvt", "https://stac.sage.uvt.ro/search")

which is equivalent to:

[4]:
dag.update_providers_config("""
    uvt2:
        search:
            type: StacSearch
            api_endpoint: https://stac.sage.uvt.ro/search
        products:
            GENERIC_COLLECTION:
                _collection: '{collection}'
        download:
            type: HTTPDownload
""")
[5]:
"uvt" in dag.providers, "uvt2" in dag.providers
[5]:
(True, True)

For advanced provider configuration, see Developer guide / Add a provider

Set a provider’s priority#

The method set_preferred_provider() can be used to dynamically set the preferred provider/prioritary.

And the method get_preferred_provider() will return the current preferred/prioritary provider associated to its priority.

By default, if priority is not passed as argument, add_provider() sets the added provider as the preferred one:

[6]:
dag.get_preferred_provider()
[6]:
('uvt', 1)
[7]:
dag.set_preferred_provider("uvt2")
dag.get_preferred_provider()
[7]:
('uvt2', 2)

Logging#

Logging is activated with the setup_logging() method. It’s a useful way to see what eodag does under the hood (e.g. requesting the provider, adapting the response, etc.). It’s also useful to detect when things go wrong and create an issue on GitHub if relevant.

The method accepts the following values for its verbose parameter:

  • 0: no logging and no progress bar

  • 1: no logging but progress bars displayed

  • 2: log at the INFO level

  • 3: log at the DEBUG level (even more information)

[8]:
from eodag import setup_logging
setup_logging(verbose=2)
[9]:
EODataAccessGateway()
2026-06-12 05:17:52,433 eodag.provider                   [INFO    ] Loading user configuration from: /home/docs/.config/eodag/eodag.yml
2026-06-12 05:17:52,455 eodag.core                       [INFO    ] usgs: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,456 eodag.core                       [INFO    ] aws_eos: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,456 eodag.core                       [INFO    ] cop_ads: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,458 eodag.core                       [INFO    ] cop_cds: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,458 eodag.core                       [INFO    ] meteoblue: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,459 eodag.core                       [INFO    ] hydroweb_next: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,460 eodag.core                       [INFO    ] wekeo_main: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,460 eodag.core                       [INFO    ] wekeo_ecmwf: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,461 eodag.core                       [INFO    ] wekeo_cmems: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,461 eodag.core                       [INFO    ] creodias_s3: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,461 eodag.core                       [INFO    ] dedt_lumi: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,463 eodag.core                       [INFO    ] dedt_mn5: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,464 eodag.core                       [INFO    ] dedl: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,464 eodag.core                       [INFO    ] geodes_s3: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,465 eodag.core                       [INFO    ] cop_ewds: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,465 eodag.core                       [INFO    ] cop_dataspace_s3: provider needing auth for search has been pruned because no credentials could be found
2026-06-12 05:17:52,466 eodag.core                       [INFO    ] Locations configuration loaded from /home/docs/.config/eodag/locations.yml
[9]:
<eodag.api.core.EODataAccessGateway at 0x7533b20dcf50>
[ ]: