Hint

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

Download#

Downloading products is after searching one of the most important features of eodag. This page describes the different methods available to download products and the parameters that these methods accept.

You will learn how to:

You should be registered to cop_dataspace to run this notebook that downloads data.

Warning

The notebook downloads a few EO products. These products are usually in the order of 700-900 Mo, make sure you have a decent internet connection if you plan to run the notebooks.

Downloading products from a provider whose storage is based on AWS may incur some cost.

Setup#

Results obtained from cop_dataspace after a search of Sentinel 2 Level-1C products over France in March 2021 will be loaded in a SearchResult. But first, the credentials need to be set in order to be able to download anything.

[1]:
import os
# os.environ["EODAG__COP_DATASPACE__AUTH__CREDENTIALS__USERNAME"] = "PLEASE_CHANGE_ME"
# os.environ["EODAG__COP_DATASPACE__AUTH__CREDENTIALS__PASSWORD"] = "PLEASE_CHANGE_ME"

A workspace directory is created to store the downloaded products.

[2]:
workspace = 'eodag_workspace_download'
if not os.path.isdir(workspace):
    os.mkdir(workspace)

By default eodag saves products in the directory set by output_dir which is by default the system temporary folder (/tmp on Linux) and quicklooks in a quicklooks subfolder of output_dir (tmp/quicklooks on Linux). To make them easier to use, eodag even stores them in a standardized output tree, regardless of whether the products are stored in a file, folder or archive to be extracted (see below). The path of this tree is defined as {output_dir}/{title}, with title the title of the products. Here eodag is configured to download products in this workspace directory.

[3]:
os.environ["EODAG__COP_DATASPACE__DOWNLOAD__OUTPUT_DIR"] = os.path.abspath(workspace)

The extract setting could be also defined here. It indicates whether products need to be automatically extracted from their archive or not. They are extracted by default, this setting is not going to be altered here.

We now search and combine results from cop_dataspace and wekeo_main to mix online and offline products.

[4]:
from eodag import EODataAccessGateway
dag = EODataAccessGateway()

[5]:
search_results = dag.search(
    provider="cop_dataspace",
    collection="S2_MSI_L1C",
    start="2024-07-03",
    end="2024-07-31",
    geom={"lonmin": 3, "latmin": 43.5, "lonmax": 3.5, "latmax": 44},
    grid_code="MGRS-31TEJ",
    limit=5
) + dag.search(
    provider="wekeo_main",
    collection="S2_MSI_L1C",
    start="2023-07-15",
    end="2023-07-31",
    geom={"lonmin": 3, "latmin": 43.5, "lonmax": 3.5, "latmax": 44},
    grid_code="MGRS-31TEJ",
    limit=5
)
search_results
[5]:
SearchResult (10)
0  EOProduct(id=S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318, provider=cop_dataspace)
EOProduct
provider: 'cop_dataspace',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318',
properties["start_datetime"]: '2024-07-03T10:46:29.024000Z',
properties["end_datetime"]: '2024-07-03T10:46:29.024000Z',
properties: (30){
constellation: 'SENTINEL-2',
datetime: '2024-07-03T10:46:29.024000Z',
end_datetime: '2024-07-03T10:46:29.024000Z',
id: 'S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318',
instruments: ['MSI' ],
platform: 'S2B',
providers: [{ 'name': 'ESA' , 'roles': ['producer' ] } ],
published: '2024-07-03T12:42:14.249198Z',
start_datetime: '2024-07-03T10:46:29.024000Z',
title: 'S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318',
uid: 'c010825a-c3a6-46a0-948e-005521edf124',
updated: '2024-11-09T03:15:32.907273Z',
cop_dataspace:sourceProduct: 'S2B_OPER_MSI_L1C_TL_2BPS_20240703T114318_A038258_T31TEJ_N05.10,S2B_OPER_MSI_L1C_DS_2BPS_20240703T114318_S20240703T104623_N05.10,S2B_OPER_MSI_L1C_TC_2BPS_20240703T114318_A038258_T31TEJ_N05.10.jp2',
cop_dataspace:sourceProductOriginDate: '2024-07-03T12:35:09Z,2024-07-03T12:23:12Z,2024-07-03T12:35:09Z',
eo:cloud_cover: 14.423965639102,
eodag:download_link: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products(c010825a-c3a6-46a0-948e-005521edf124)/$value',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(396a9522-3f07-4645-9196-a65c349ad8e9)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(396a9522-3f07-4645-9196-a65c349ad8e9)/$value',
grid:code: 'MGRS-31TEJ',
order:status: 'succeeded',
processing:datetime: '2024-07-03T11:43:18.000000Z',
processing:level: 'S2MSI1C',
processing:version: '05.10',
product:type: 'S2MSI1C',
s2:datastrip_id: 'S2B_OPER_MSI_L1C_DS_2BPS_20240703T114318_S20240703T104623_N05.10',
s2:datatake_id: 'GS2B_20240703T104629_038258_N05.10',
s2:datatake_type: 'INS-NOBS',
s2:tile_id: 'S2B_OPER_MSI_L1C_TL_2BPS_20240703T114318_A038258_T31TEJ_N05.10',
sat:absolute_orbit: 38258,
sat:relative_orbit: 51,
}
assets: (0)
geometry
thumbnail
1  EOProduct(id=S2A_MSIL1C_20240705T104021_N0510_R008_T31TEJ_20240705T142137, provider=cop_dataspace)
EOProduct
provider: 'cop_dataspace',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2A_MSIL1C_20240705T104021_N0510_R008_T31TEJ_20240705T142137',
properties["start_datetime"]: '2024-07-05T10:40:21.025000Z',
properties["end_datetime"]: '2024-07-05T10:40:21.025000Z',
properties: (30){
constellation: 'SENTINEL-2',
datetime: '2024-07-05T10:40:21.025000Z',
end_datetime: '2024-07-05T10:40:21.025000Z',
id: 'S2A_MSIL1C_20240705T104021_N0510_R008_T31TEJ_20240705T142137',
instruments: ['MSI' ],
platform: 'S2A',
providers: [{ 'name': 'ESA' , 'roles': ['producer' ] } ],
published: '2024-07-05T16:44:47.318744Z',
start_datetime: '2024-07-05T10:40:21.025000Z',
title: 'S2A_MSIL1C_20240705T104021_N0510_R008_T31TEJ_20240705T142137',
uid: '5193fc1e-6e68-40ab-8e0f-fc1c55cb01da',
updated: '2024-11-08T21:39:34.502029Z',
cop_dataspace:sourceProduct: 'S2A_OPER_MSI_L1C_TL_2APS_20240705T142137_A047195_T31TEJ_N05.10,S2A_OPER_MSI_L1C_DS_2APS_20240705T142137_S20240705T104024_N05.10,S2A_OPER_MSI_L1C_TC_2APS_20240705T142137_A047195_T31TEJ_N05.10.jp2',
cop_dataspace:sourceProductOriginDate: '2024-07-05T16:33:16Z,2024-07-05T16:32:39Z,2024-07-05T16:33:18Z',
eo:cloud_cover: 59.366657708501,
eodag:download_link: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products(5193fc1e-6e68-40ab-8e0f-fc1c55cb01da)/$value',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(afbc766b-b6cd-448c-a01a-872cff8fce36)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(afbc766b-b6cd-448c-a01a-872cff8fce36)/$value',
grid:code: 'MGRS-31TEJ',
order:status: 'succeeded',
processing:datetime: '2024-07-05T14:21:37.000000Z',
processing:level: 'S2MSI1C',
processing:version: '05.10',
product:type: 'S2MSI1C',
s2:datastrip_id: 'S2A_OPER_MSI_L1C_DS_2APS_20240705T142137_S20240705T104024_N05.10',
s2:datatake_id: 'GS2A_20240705T104021_047195_N05.10',
s2:datatake_type: 'INS-NOBS',
s2:tile_id: 'S2A_OPER_MSI_L1C_TL_2APS_20240705T142137_A047195_T31TEJ_N05.10',
sat:absolute_orbit: 47195,
sat:relative_orbit: 8,
}
assets: (0)
geometry
thumbnail
2  EOProduct(id=S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024, provider=cop_dataspace)
EOProduct
provider: 'cop_dataspace',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024',
properties["start_datetime"]: '2024-07-08T10:50:31.024000Z',
properties["end_datetime"]: '2024-07-08T10:50:31.024000Z',
properties: (30){
constellation: 'SENTINEL-2',
datetime: '2024-07-08T10:50:31.024000Z',
end_datetime: '2024-07-08T10:50:31.024000Z',
id: 'S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024',
instruments: ['MSI' ],
platform: 'S2A',
providers: [{ 'name': 'ESA' , 'roles': ['producer' ] } ],
published: '2024-07-08T15:06:53.189989Z',
start_datetime: '2024-07-08T10:50:31.024000Z',
title: 'S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024',
uid: 'cb65260d-58b9-471a-8aa9-3263e97d6bd4',
updated: '2024-11-08T13:10:28.998813Z',
cop_dataspace:sourceProduct: 'S2A_OPER_MSI_L1C_TL_2APS_20240708T125024_A047238_T31TEJ_N05.10,S2A_OPER_MSI_L1C_DS_2APS_20240708T125024_S20240708T105028_N05.10,S2A_OPER_MSI_L1C_TC_2APS_20240708T125024_A047238_T31TEJ_N05.10.jp2',
cop_dataspace:sourceProductOriginDate: '2024-07-08T14:59:09Z,2024-07-08T14:59:04Z,2024-07-08T14:59:10Z',
eo:cloud_cover: 0.0,
eodag:download_link: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products(cb65260d-58b9-471a-8aa9-3263e97d6bd4)/$value',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(2456fc96-b92b-4310-a088-8932f1db0095)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(2456fc96-b92b-4310-a088-8932f1db0095)/$value',
grid:code: 'MGRS-31TEJ',
order:status: 'succeeded',
processing:datetime: '2024-07-08T12:50:24.000000Z',
processing:level: 'S2MSI1C',
processing:version: '05.10',
product:type: 'S2MSI1C',
s2:datastrip_id: 'S2A_OPER_MSI_L1C_DS_2APS_20240708T125024_S20240708T105028_N05.10',
s2:datatake_id: 'GS2A_20240708T105031_047238_N05.10',
s2:datatake_type: 'INS-NOBS',
s2:tile_id: 'S2A_OPER_MSI_L1C_TL_2APS_20240708T125024_A047238_T31TEJ_N05.10',
sat:absolute_orbit: 47238,
sat:relative_orbit: 51,
}
assets: (0)
geometry
thumbnail
3  EOProduct(id=S2B_MSIL1C_20240710T103629_N0510_R008_T31TEJ_20240710T131044, provider=cop_dataspace)
EOProduct
provider: 'cop_dataspace',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2B_MSIL1C_20240710T103629_N0510_R008_T31TEJ_20240710T131044',
properties["start_datetime"]: '2024-07-10T10:36:29.024000Z',
properties["end_datetime"]: '2024-07-10T10:36:29.024000Z',
properties: (30){
constellation: 'SENTINEL-2',
datetime: '2024-07-10T10:36:29.024000Z',
end_datetime: '2024-07-10T10:36:29.024000Z',
id: 'S2B_MSIL1C_20240710T103629_N0510_R008_T31TEJ_20240710T131044',
instruments: ['MSI' ],
platform: 'S2B',
providers: [{ 'name': 'ESA' , 'roles': ['producer' ] } ],
published: '2024-07-10T14:34:08.835998Z',
start_datetime: '2024-07-10T10:36:29.024000Z',
title: 'S2B_MSIL1C_20240710T103629_N0510_R008_T31TEJ_20240710T131044',
uid: 'ed2523a6-143b-48e0-a663-a572a0bf8a6e',
updated: '2024-11-07T15:13:13.209267Z',
cop_dataspace:sourceProduct: 'S2B_OPER_MSI_L1C_TL_2BPS_20240710T131044_A038358_T31TEJ_N05.10,S2B_OPER_MSI_L1C_DS_2BPS_20240710T131044_S20240710T103819_N05.10,S2B_OPER_MSI_L1C_TC_2BPS_20240710T131044_A038358_T31TEJ_N05.10.jp2',
cop_dataspace:sourceProductOriginDate: '2024-07-10T14:21:50Z,2024-07-10T13:50:48Z,2024-07-10T14:21:40Z',
eo:cloud_cover: 0.058048911583,
eodag:download_link: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products(ed2523a6-143b-48e0-a663-a572a0bf8a6e)/$value',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(0e6919dd-86b8-4a71-83c7-af156ae7838b)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(0e6919dd-86b8-4a71-83c7-af156ae7838b)/$value',
grid:code: 'MGRS-31TEJ',
order:status: 'succeeded',
processing:datetime: '2024-07-10T13:10:44.000000Z',
processing:level: 'S2MSI1C',
processing:version: '05.10',
product:type: 'S2MSI1C',
s2:datastrip_id: 'S2B_OPER_MSI_L1C_DS_2BPS_20240710T131044_S20240710T103819_N05.10',
s2:datatake_id: 'GS2B_20240710T103629_038358_N05.10',
s2:datatake_type: 'INS-NOBS',
s2:tile_id: 'S2B_OPER_MSI_L1C_TL_2BPS_20240710T131044_A038358_T31TEJ_N05.10',
sat:absolute_orbit: 38358,
sat:relative_orbit: 8,
}
assets: (0)
geometry
thumbnail
4  EOProduct(id=S2B_MSIL1C_20240713T104619_N0510_R051_T31TEJ_20240713T114336, provider=cop_dataspace)
EOProduct
provider: 'cop_dataspace',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2B_MSIL1C_20240713T104619_N0510_R051_T31TEJ_20240713T114336',
properties["start_datetime"]: '2024-07-13T10:46:19.024000Z',
properties["end_datetime"]: '2024-07-13T10:46:19.024000Z',
properties: (30){
constellation: 'SENTINEL-2',
datetime: '2024-07-13T10:46:19.024000Z',
end_datetime: '2024-07-13T10:46:19.024000Z',
id: 'S2B_MSIL1C_20240713T104619_N0510_R051_T31TEJ_20240713T114336',
instruments: ['MSI' ],
platform: 'S2B',
providers: [{ 'name': 'ESA' , 'roles': ['producer' ] } ],
published: '2024-07-13T12:48:50.273063Z',
start_datetime: '2024-07-13T10:46:19.024000Z',
title: 'S2B_MSIL1C_20240713T104619_N0510_R051_T31TEJ_20240713T114336',
uid: 'f7c73e81-f630-458e-9af7-69b442bcfc78',
updated: '2024-07-13T12:50:40.152576Z',
cop_dataspace:sourceProduct: 'S2B_OPER_MSI_L1C_TL_2BPS_20240713T114336_A038401_T31TEJ_N05.10,S2B_OPER_MSI_L1C_DS_2BPS_20240713T114336_S20240713T104621_N05.10,S2B_OPER_MSI_L1C_TC_2BPS_20240713T114336_A038401_T31TEJ_N05.10.jp2',
cop_dataspace:sourceProductOriginDate: '2024-07-13T12:41:35Z,2024-07-13T12:21:38Z,2024-07-13T12:41:36Z',
eo:cloud_cover: 80.517216330089,
eodag:download_link: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products(f7c73e81-f630-458e-9af7-69b442bcfc78)/$value',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(4e7407b5-4c0c-4bf4-abeb-1603618a44ad)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(4e7407b5-4c0c-4bf4-abeb-1603618a44ad)/$value',
grid:code: 'MGRS-31TEJ',
order:status: 'succeeded',
processing:datetime: '2024-07-13T11:43:36.000000Z',
processing:level: 'S2MSI1C',
processing:version: '05.10',
product:type: 'S2MSI1C',
s2:datastrip_id: 'S2B_OPER_MSI_L1C_DS_2BPS_20240713T114336_S20240713T104621_N05.10',
s2:datatake_id: 'GS2B_20240713T104619_038401_N05.10',
s2:datatake_type: 'INS-NOBS',
s2:tile_id: 'S2B_OPER_MSI_L1C_TL_2BPS_20240713T114336_A038401_T31TEJ_N05.10',
sat:absolute_orbit: 38401,
sat:relative_orbit: 51,
}
assets: (0)
geometry
thumbnail
5  EOProduct(id=S2B_MSIL1C_20230716T103629_N0510_R008_T31TDJ_20240913T140818, provider=wekeo_main)
EOProduct
provider: 'wekeo_main',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2B_MSIL1C_20230716T103629_N0510_R008_T31TDJ_20240913T140818',
properties["start_datetime"]: '2023-07-16T10:36:29.024000Z',
properties["end_datetime"]: '2023-07-16T10:36:29.024000Z',
properties: (12){
datetime: '2023-07-16T10:36:29.024000Z',
end_datetime: '2023-07-16T10:36:29.024000Z',
id: 'S2B_MSIL1C_20230716T103629_N0510_R008_T31TDJ_20240913T140818',
start_datetime: '2023-07-16T10:36:29.024000Z',
title: 'S2B_MSIL1C_20230716T103629_N0510_R008_T31TDJ_20240913T140818.SAFE',
eodag:default_geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))',
eodag:download_link: 'https://download.dataspace.copernicus.eu/odata/v1/Products(0e5b1a49-1c12-4379-b481-d9f5485acd8b)/$value',
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{"location": "https://download.dataspace.copernicus.eu/odata/v1/Products(0e5b1a49-1c12-4379-b481-d9f5485acd8b)/$value","product_id":"S2B_MSIL1C_20230716T103629_N0510_R008_T31TDJ_20240913T140818.SAFE", "dataset_id": "EO:ESA:DAT:SENTINEL-2"}',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(3cfdc965-23c9-4f02-9419-3b7e27901e17)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(3cfdc965-23c9-4f02-9419-3b7e27901e17)/$value',
order:status: 'orderable',
processing:level: 'S2MSIL1C',
}
assets: (0)
geometry
thumbnail
6  EOProduct(id=S2B_MSIL1C_20230719T104629_N0510_R051_T31TDJ_20241021T082345, provider=wekeo_main)
EOProduct
provider: 'wekeo_main',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2B_MSIL1C_20230719T104629_N0510_R051_T31TDJ_20241021T082345',
properties["start_datetime"]: '2023-07-19T10:46:29.024000Z',
properties["end_datetime"]: '2023-07-19T10:46:29.024000Z',
properties: (12){
datetime: '2023-07-19T10:46:29.024000Z',
end_datetime: '2023-07-19T10:46:29.024000Z',
id: 'S2B_MSIL1C_20230719T104629_N0510_R051_T31TDJ_20241021T082345',
start_datetime: '2023-07-19T10:46:29.024000Z',
title: 'S2B_MSIL1C_20230719T104629_N0510_R051_T31TDJ_20241021T082345.SAFE',
eodag:default_geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))',
eodag:download_link: 'https://download.dataspace.copernicus.eu/odata/v1/Products(421293d6-9d52-40ee-a53b-4b6a55b2d666)/$value',
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{"location": "https://download.dataspace.copernicus.eu/odata/v1/Products(421293d6-9d52-40ee-a53b-4b6a55b2d666)/$value","product_id":"S2B_MSIL1C_20230719T104629_N0510_R051_T31TDJ_20241021T082345.SAFE", "dataset_id": "EO:ESA:DAT:SENTINEL-2"}',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(905aaef3-96c3-4f9b-bb23-3a6aa5ae46cd)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(905aaef3-96c3-4f9b-bb23-3a6aa5ae46cd)/$value',
order:status: 'orderable',
processing:level: 'S2MSIL1C',
}
assets: (0)
geometry
thumbnail
7  EOProduct(id=S2B_MSIL1C_20230726T103629_N0510_R008_T31TEJ_20241018T114624, provider=wekeo_main)
EOProduct
provider: 'wekeo_main',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2B_MSIL1C_20230726T103629_N0510_R008_T31TEJ_20241018T114624',
properties["start_datetime"]: '2023-07-26T10:36:29.024000Z',
properties["end_datetime"]: '2023-07-26T10:36:29.024000Z',
properties: (12){
datetime: '2023-07-26T10:36:29.024000Z',
end_datetime: '2023-07-26T10:36:29.024000Z',
id: 'S2B_MSIL1C_20230726T103629_N0510_R008_T31TEJ_20241018T114624',
start_datetime: '2023-07-26T10:36:29.024000Z',
title: 'S2B_MSIL1C_20230726T103629_N0510_R008_T31TEJ_20241018T114624.SAFE',
eodag:default_geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))',
eodag:download_link: 'https://download.dataspace.copernicus.eu/odata/v1/Products(e9343a1c-5414-4e82-8e83-2a83eb0e53d5)/$value',
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{"location": "https://download.dataspace.copernicus.eu/odata/v1/Products(e9343a1c-5414-4e82-8e83-2a83eb0e53d5)/$value","product_id":"S2B_MSIL1C_20230726T103629_N0510_R008_T31TEJ_20241018T114624.SAFE", "dataset_id": "EO:ESA:DAT:SENTINEL-2"}',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(8e8d7705-2b37-4c8e-a206-7aa15179e6ff)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(8e8d7705-2b37-4c8e-a206-7aa15179e6ff)/$value',
order:status: 'orderable',
processing:level: 'S2MSIL1C',
}
assets: (0)
geometry
thumbnail
8  EOProduct(id=S2B_MSIL1C_20230729T104629_N0510_R051_T31TEJ_20241021T213158, provider=wekeo_main)
EOProduct
provider: 'wekeo_main',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2B_MSIL1C_20230729T104629_N0510_R051_T31TEJ_20241021T213158',
properties["start_datetime"]: '2023-07-29T10:46:29.024000Z',
properties["end_datetime"]: '2023-07-29T10:46:29.024000Z',
properties: (12){
datetime: '2023-07-29T10:46:29.024000Z',
end_datetime: '2023-07-29T10:46:29.024000Z',
id: 'S2B_MSIL1C_20230729T104629_N0510_R051_T31TEJ_20241021T213158',
start_datetime: '2023-07-29T10:46:29.024000Z',
title: 'S2B_MSIL1C_20230729T104629_N0510_R051_T31TEJ_20241021T213158.SAFE',
eodag:default_geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))',
eodag:download_link: 'https://download.dataspace.copernicus.eu/odata/v1/Products(4e8ef3f1-7914-4144-b0dd-dab4796ec59d)/$value',
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{"location": "https://download.dataspace.copernicus.eu/odata/v1/Products(4e8ef3f1-7914-4144-b0dd-dab4796ec59d)/$value","product_id":"S2B_MSIL1C_20230729T104629_N0510_R051_T31TEJ_20241021T213158.SAFE", "dataset_id": "EO:ESA:DAT:SENTINEL-2"}',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(e061e8d7-54a4-4cd4-98f9-d3ee438e610c)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(e061e8d7-54a4-4cd4-98f9-d3ee438e610c)/$value',
order:status: 'orderable',
processing:level: 'S2MSIL1C',
}
assets: (0)
geometry
thumbnail
9  EOProduct(id=S2A_MSIL1C_20230724T104621_N0510_R051_T31TEJ_20240928T041455, provider=wekeo_main)
EOProduct
provider: 'wekeo_main',
collection: 'S2_MSI_L1C',
properties["id"]: 'S2A_MSIL1C_20230724T104621_N0510_R051_T31TEJ_20240928T041455',
properties["start_datetime"]: '2023-07-24T10:46:21.024000Z',
properties["end_datetime"]: '2023-07-24T10:46:21.024000Z',
properties: (12){
datetime: '2023-07-24T10:46:21.024000Z',
end_datetime: '2023-07-24T10:46:21.024000Z',
id: 'S2A_MSIL1C_20230724T104621_N0510_R051_T31TEJ_20240928T041455',
start_datetime: '2023-07-24T10:46:21.024000Z',
title: 'S2A_MSIL1C_20230724T104621_N0510_R051_T31TEJ_20240928T041455.SAFE',
eodag:default_geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))',
eodag:download_link: 'https://download.dataspace.copernicus.eu/odata/v1/Products(8157a42c-620c-45c2-a5d8-f8ec9029f75c)/$value',
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{"location": "https://download.dataspace.copernicus.eu/odata/v1/Products(8157a42c-620c-45c2-a5d8-f8ec9029f75c)/$value","product_id":"S2A_MSIL1C_20230724T104621_N0510_R051_T31TEJ_20240928T041455.SAFE", "dataset_id": "EO:ESA:DAT:SENTINEL-2"}',
eodag:quicklook: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(ed10e1a3-5f3d-4622-97d2-f3f8042188d3)/$value',
eodag:thumbnail: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Assets(ed10e1a3-5f3d-4622-97d2-f3f8042188d3)/$value',
order:status: 'orderable',
processing:level: 'S2MSIL1C',
}
assets: (0)
geometry
thumbnail

delete_archive is another setting that allows to remove the archive containing products after its extraction, or not. The deletion is activated by default.

Logging is set to see more about what eodag does when it downloads products.

[6]:
from eodag import setup_logging
setup_logging(2)

Progress bar#

eodag displays a progress bar every time it downloads products or quicklooks. It uses tqdm.auto to create a progress bar adapted to the context (Notebook, terminal).

Cutomize progress bar#

Progress bars can be customized, using the progress_callback parameter of the download methods. Create your own instance of ProgressCallback class, customize it to pass it later to download methods:

[7]:
from eodag.utils import ProgressCallback

with ProgressCallback(total=3, unit="carrots", unit_scale=False, desc="Eating carrots") as progress_callback:
    progress_callback(1)
    progress_callback(2)

Keep another progress bar opened, and customize it changing ProgressCallback attributes inherited from tqdm:

[8]:
another_bar = ProgressCallback(dynamic_ncols=False, ncols=300)
another_bar.colour = "purple"
[9]:
another_bar(1)

Mute progress bar#

Progress bars can be muted using setup_logging and 0 as verbosity level, or no_progress_bar parameter.

[10]:
with ProgressCallback(total=2) as progress_callback:
    progress_callback.desc = "This will be displayed"
    progress_callback.position = 0
    progress_callback(1)

setup_logging(verbose=0)

with ProgressCallback() as progress_callback:
    progress_callback.desc = "This will be hidden"
    progress_callback.position = 1
    progress_callback(1)

setup_logging(verbose=2, no_progress_bar=True)

with ProgressCallback() as progress_callback:
    progress_callback.desc = "This will be hidden"
    progress_callback.position = 2
    progress_callback(1)

setup_logging(verbose=2)

with ProgressCallback() as progress_callback:
    progress_callback.desc = "This will be also displayed"
    progress_callback.position = 3
    progress_callback(1)

with ProgressCallback(disable=True) as progress_callback:
    progress_callback.desc = "This will be hidden"
    progress_callback.position = 4
    progress_callback(1)

Already downloaded product#

An EOProduct has a location attribute that stores either its remote location (before being downloaded) or its local location (after being downloaded). The download methods of eodag checks first wheter the product/quicklook to download has been already downloaded. If so, it just returns its path and does not try to download it again.

Download quicklooks#

EO products usually offer a quicklook image, a low resolution by-product of the original data. An EOProduct has a get_quicklook() method that takes care of downloading the quicklook image and returns its path. It accepts a output_dir (optional) parameter to specify an output directory and a filename (optional) parameter to specify an output filename. By default, eodag saves a quicklook with its ID as filename.

get_quicklook() returns the local absolute path to the image downloaded. This is useful to precess it afterwards. Here matplotlib is used here to display 4 quicklooks.

[11]:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

fig = plt.figure(figsize=(10, 8))
for i, product in enumerate(search_results, start=1):
    # This line takes care of downloading the quicklook
    quicklook_path = product.get_quicklook()

    # Plot the quicklook
    img = mpimg.imread(quicklook_path)
    ax = fig.add_subplot(3, 4, i)
    ax.set_title(i - 1)
    plt.imshow(img)
plt.tight_layout()
2026-03-27 16:35:24,681 eodag.product                    [INFO    ] Download recorded in /home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318
2026-03-27 16:35:25,446 eodag.product                    [INFO    ] Download recorded in /home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20240705T104021_N0510_R008_T31TEJ_20240705T142137
2026-03-27 16:35:26,279 eodag.product                    [INFO    ] Download recorded in /home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024
2026-03-27 16:35:26,920 eodag.product                    [INFO    ] Download recorded in /home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20240710T103629_N0510_R008_T31TEJ_20240710T131044
2026-03-27 16:35:27,670 eodag.product                    [INFO    ] Download recorded in /home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20240713T104619_N0510_R051_T31TEJ_20240713T114336
2026-03-27 16:35:28,417 eodag.product                    [INFO    ] Download recorded in /tmp/quicklooks/S2B_MSIL1C_20230716T103629_N0510_R008_T31TDJ_20240913T140818
2026-03-27 16:35:29,692 eodag.product                    [INFO    ] Download recorded in /tmp/quicklooks/S2B_MSIL1C_20230726T103629_N0510_R008_T31TEJ_20241018T114624
2026-03-27 16:35:31,673 eodag.product                    [INFO    ] Download recorded in /tmp/quicklooks/S2B_MSIL1C_20230729T104629_N0510_R051_T31TEJ_20241021T213158
2026-03-27 16:35:32,615 eodag.product                    [INFO    ] Download recorded in /tmp/quicklooks/S2A_MSIL1C_20230724T104621_N0510_R051_T31TEJ_20240928T041455
../../_images/notebooks_api_user_guide_7_download_29_18.png

Download EO products#

Dynamically configure some download options#

The 3 download methods introduced below accept the following optional kwargs that temporarily override the global configuration:

  • output_dir (str): absolute path to a folder where the products should be saved

  • extract (bool): whether to automatically extract or not the downloaded product archive

  • dl_url_params (dict): additional parameters to pass over to the download url as an url parameter

  • delete_archive (bool): whether to delete the downloaded archives

Order orderable products#

As introduced in the getting started guide an EO product may not be available for download immediately. If the product status is orderable, the download methods will request an order of the product and, by default, retry to download it every 2 minutes during 20 minutes. These two durations can be set with the wait (in minutes) and timeout (in minutes) optional parameters of all the download methods.

The storage status of a product can be obtained from its order:status field. The status of an orderable product is updated by eodag to ordered when ordered and to succeeded when found available.

[12]:
[p.properties["order:status"] for p in search_results]
[12]:
['succeeded',
 'succeeded',
 'succeeded',
 'succeeded',
 'succeeded',
 'orderable',
 'orderable',
 'orderable',
 'orderable',
 'orderable']

A FilterProperty can be used to filter out orderable products to avoid triggering any product order (SearchResult.filter_online() method could also have been used).

[13]:
online_search_results = search_results.filter_property(
    **{"order:status": "succeeded"}
)
[p.properties["order:status"] for p in online_search_results]
2026-03-27 16:35:33,155 eodag.crunch.property            [INFO    ] Finished filtering products. 5 resulting products
[13]:
['succeeded', 'succeeded', 'succeeded', 'succeeded', 'succeeded']

Download multiple products at once#

EODataAccessGateway offers a download_all() method that takes a SearchResult argument and will try to download each EOProduct it contains. They are downloaded in parallel by an executor which is an instance of ThreadPoolExecutor class. executor parameter of download_all() method can be used to customize the executor (e.g. to define its maximum number of workers, each of them corresponding to a product download parallelization), otherwise a default ThreadPoolExecutor instance will be set. It returns a list of absolute paths to the downloaded products. For the purpose of this user guide only 2 products will be downloaded and with a customized executor using 2 workers at most.

[14]:
from eodag import SearchResult

# sort products by size, low to high
products_by_size = SearchResult(
    sorted(online_search_results, key=lambda p: p.geometry.area)
)
[15]:
from concurrent.futures import ThreadPoolExecutor

products_to_download = products_by_size[0:2]
paths = dag.download_all(products_to_download, executor=ThreadPoolExecutor(max_workers=2))
2026-03-27 16:35:33,165 eodag.core                       [INFO    ] Downloading 2 products
2026-03-27 16:35:33,181 eodag.download.base              [INFO    ] Download url: https://catalogue.dataspace.copernicus.eu/odata/v1/Products(c010825a-c3a6-46a0-948e-005521edf124)/$value
2026-03-27 16:35:33,182 eodag.download.base              [INFO    ] Download url: https://catalogue.dataspace.copernicus.eu/odata/v1/Products(cb65260d-58b9-471a-8aa9-3263e97d6bd4)/$value
2026-03-27 16:35:51,786 eodag.download.base              [INFO    ] Extraction activated
2026-03-27 16:35:51,816 eodag.download.base              [INFO    ] Deleting archive S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024.zip
2026-03-27 16:35:51,819 eodag.product                    [INFO    ] Remote location of the product is still available through its 'remote_location' property: https://catalogue.dataspace.copernicus.eu/odata/v1/Products(cb65260d-58b9-471a-8aa9-3263e97d6bd4)/$value
2026-03-27 16:35:57,006 eodag.download.base              [INFO    ] Extraction activated
2026-03-27 16:35:57,032 eodag.download.base              [INFO    ] Deleting archive S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318.zip
2026-03-27 16:35:57,034 eodag.product                    [INFO    ] Remote location of the product is still available through its 'remote_location' property: https://catalogue.dataspace.copernicus.eu/odata/v1/Products(c010825a-c3a6-46a0-948e-005521edf124)/$value
[16]:
paths
[16]:
['/home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024',
 '/home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318']

The products have been downloaded as archived files (Sentinel products are distributed in the SAFE format). The logs above and the command below show that eodag then took care of extracting them to their own directory and deleting them afterward.

[17]:
!ls {workspace}
quicklooks
S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024
S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318
[18]:
!tree -sh {paths[0]}
[4.0K]  /home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024
├── [4.0K]  DATASTRIP
│   └── [4.0K]  DS_2APS_20240708T125024_S20240708T105028
│       ├── [ 18M]  MTD_DS.xml
│       └── [4.0K]  QI_DATA
│           ├── [ 23K]  FORMAT_CORRECTNESS.xml
│           ├── [7.6K]  GENERAL_QUALITY.xml
│           ├── [8.7K]  GEOMETRIC_QUALITY.xml
│           ├── [7.0K]  RADIOMETRIC_QUALITY.xml
│           └── [4.6K]  SENSOR_QUALITY.xml
├── [4.0K]  GRANULE
│   └── [4.0K]  L1C_T31TEJ_A047238_20240708T105028
│       ├── [4.0K]  AUX_DATA
│       │   ├── [2.9K]  AUX_CAMSFO
│       │   └── [1.6K]  AUX_ECMWFT
│       ├── [4.0K]  IMG_DATA
│       │   ├── [ 63K]  T31TEJ_20240708T105031_B01.jp2
│       │   ├── [1.2M]  T31TEJ_20240708T105031_B02.jp2
│       │   ├── [1.3M]  T31TEJ_20240708T105031_B03.jp2
│       │   ├── [1.4M]  T31TEJ_20240708T105031_B04.jp2
│       │   ├── [442K]  T31TEJ_20240708T105031_B05.jp2
│       │   ├── [487K]  T31TEJ_20240708T105031_B06.jp2
│       │   ├── [509K]  T31TEJ_20240708T105031_B07.jp2
│       │   ├── [1.7M]  T31TEJ_20240708T105031_B08.jp2
│       │   ├── [ 67K]  T31TEJ_20240708T105031_B09.jp2
│       │   ├── [ 39K]  T31TEJ_20240708T105031_B10.jp2
│       │   ├── [467K]  T31TEJ_20240708T105031_B11.jp2
│       │   ├── [455K]  T31TEJ_20240708T105031_B12.jp2
│       │   ├── [512K]  T31TEJ_20240708T105031_B8A.jp2
│       │   └── [2.0M]  T31TEJ_20240708T105031_TCI.jp2
│       ├── [ 97K]  MTD_TL.xml
│       └── [4.0K]  QI_DATA
│           ├── [ 27K]  FORMAT_CORRECTNESS.xml
│           ├── [4.1K]  GENERAL_QUALITY.xml
│           ├── [4.9K]  GEOMETRIC_QUALITY.xml
│           ├── [7.0K]  MSK_CLASSI_B00.jp2
│           ├── [7.6K]  MSK_DETFOO_B01.jp2
│           ├── [ 23K]  MSK_DETFOO_B02.jp2
│           ├── [ 24K]  MSK_DETFOO_B03.jp2
│           ├── [ 24K]  MSK_DETFOO_B04.jp2
│           ├── [9.9K]  MSK_DETFOO_B05.jp2
│           ├── [9.8K]  MSK_DETFOO_B06.jp2
│           ├── [9.8K]  MSK_DETFOO_B07.jp2
│           ├── [ 24K]  MSK_DETFOO_B08.jp2
│           ├── [7.6K]  MSK_DETFOO_B09.jp2
│           ├── [7.6K]  MSK_DETFOO_B10.jp2
│           ├── [9.9K]  MSK_DETFOO_B11.jp2
│           ├── [9.9K]  MSK_DETFOO_B12.jp2
│           ├── [9.9K]  MSK_DETFOO_B8A.jp2
│           ├── [ 14K]  MSK_QUALIT_B01.jp2
│           ├── [ 55K]  MSK_QUALIT_B02.jp2
│           ├── [ 55K]  MSK_QUALIT_B03.jp2
│           ├── [ 55K]  MSK_QUALIT_B04.jp2
│           ├── [ 14K]  MSK_QUALIT_B05.jp2
│           ├── [ 14K]  MSK_QUALIT_B06.jp2
│           ├── [ 14K]  MSK_QUALIT_B07.jp2
│           ├── [ 55K]  MSK_QUALIT_B08.jp2
│           ├── [ 14K]  MSK_QUALIT_B09.jp2
│           ├── [ 14K]  MSK_QUALIT_B10.jp2
│           ├── [ 14K]  MSK_QUALIT_B11.jp2
│           ├── [ 14K]  MSK_QUALIT_B12.jp2
│           ├── [ 14K]  MSK_QUALIT_B8A.jp2
│           ├── [5.0K]  SENSOR_QUALITY.xml
│           └── [ 95K]  T31TEJ_20240708T105031_PVI.jp2
├── [4.0K]  HTML
│   ├── [ 41K]  banner_1.png
│   ├── [ 57K]  banner_2.png
│   ├── [ 44K]  banner_3.png
│   ├── [1.8K]  star_bg.jpg
│   ├── [5.7K]  UserProduct_index.html
│   └── [9.8K]  UserProduct_index.xsl
├── [ 18K]  INSPIRE.xml
├── [ 48K]  manifest.safe
├── [ 45K]  MTD_MSIL1C.xml
├── [4.0K]  rep_info
│   └── [1.1K]  S2_User_Product_Level-1C_Metadata.xsd
└── [2.8K]  S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024-ql.jpg

11 directories, 66 files

eodag saves a file in the output_dir folder that contains a hash list of the products downloaded. Before downloading products, this file is read and it is checked whether the products to download were already downloaded or not. If they were, their download is skipped.

[19]:
dag.download_all(products_to_download)
2026-03-27 16:35:57,307 eodag.core                       [INFO    ] Downloading 2 products
2026-03-27 16:35:57,383 eodag.download.base              [INFO    ] Product already present on this platform. Identifier: /home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318
2026-03-27 16:35:57,383 eodag.product                    [INFO    ] Remote location of the product is still available through its 'remote_location' property: https://catalogue.dataspace.copernicus.eu/odata/v1/Products(c010825a-c3a6-46a0-948e-005521edf124)/$value
2026-03-27 16:35:57,383 eodag.download.base              [INFO    ] Product already present on this platform. Identifier: /home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024
2026-03-27 16:35:57,384 eodag.product                    [INFO    ] Remote location of the product is still available through its 'remote_location' property: https://catalogue.dataspace.copernicus.eu/odata/v1/Products(cb65260d-58b9-471a-8aa9-3263e97d6bd4)/$value
[19]:
['/home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2B_MSIL1C_20240703T104629_N0510_R051_T31TEJ_20240703T114318',
 '/home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20240708T105031_N0510_R051_T31TEJ_20240708T125024']

Download a single product#

EODataAccessGateway also offers a download() method that takes an EOProduct argument and will try to download it. It is a wrapper around the download() method that each EOProduct has. Its advantage over the latter is that, similarly to what does deserialize_and_register(), it adds the information required for a product to download itself if it was missing. It does so by extracting the product’s provider and getting the right authentication and download plugins. Both methods return the absolute path to the downloaded product.

Download an orderable product#

This examples shows what logs eodag emits when it tries to download a product that is originally orderable. It is set to retry downloading the product every 1 minute after ordering it, and to stop trying (skip it if download_all() is used) after 5 minutes.

[20]:
offline_products = search_results.filter_property(
    **{"order:status": "orderable"}
)
# sort products by size, low to high
offline_products_by_size = SearchResult(
    sorted(offline_products, key=lambda p: p.geometry.area)
)
# keep first
offline_product = offline_products_by_size[0]
offline_product.properties["order:status"]
2026-03-27 16:35:57,389 eodag.crunch.property            [INFO    ] Finished filtering products. 5 resulting products
[20]:
'orderable'
[21]:
setup_logging(verbose=2)
path = dag.download(
    offline_product,
    wait=1,
    timeout=10,
)
2026-03-27 16:35:57,398 eodag.download.base              [INFO    ] Download url: https://download.dataspace.copernicus.eu/odata/v1/Products(4e8ef3f1-7914-4144-b0dd-dab4796ec59d)/$value
2026-03-27 16:36:24,801 eodag.download.base              [INFO    ] Extraction activated
2026-03-27 16:36:24,830 eodag.download.base              [INFO    ] Deleting archive S2B_MSIL1C_20230729T104629_N0510_R051_T31TEJ_20241021T213158.zip
2026-03-27 16:36:24,833 eodag.product                    [INFO    ] Remote location of the product is still available through its 'remote_location' property: https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download/69c6a3de4350d6fb4f721e85
[22]:
path
[22]:
'/tmp/S2B_MSIL1C_20230729T104629_N0510_R051_T31TEJ_20241021T213158'

Now the location attribute rightfully points to its local path.

[23]:
offline_product.location
[23]:
'file:///tmp/S2B_MSIL1C_20230729T104629_N0510_R051_T31TEJ_20241021T213158'

Download assets#

Searching on some providers (mainly STAC providers) returns products having an assets attribute listing single files that can be individually downloaded.

[24]:
search_results = dag.search(
    collection="S2_MSI_L2A",
    provider="planetary_computer",
    id="S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850"
)
2026-03-27 16:36:24,878 eodag.core                       [INFO    ] Searching product with id 'S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850' on provider: planetary_computer
2026-03-27 16:36:24,878 eodag.core                       [INFO    ] Searching on provider planetary_computer
2026-03-27 16:36:24,885 eodag.search.qssearch            [INFO    ] Sending search request: https://planetarycomputer.microsoft.com/api/stac/v1/search
[25]:
# sort products by size, low to high
search_results = SearchResult(
    sorted(search_results, key=lambda p: p.geometry.area)
)
[26]:
# view assets
search_results[0].assets
[26]:
AssetsDict (23)
'AOT_10m':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'AOT_10m',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R10m/T31DDC_20251203T090959_AOT_10m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [10980 , 10980 ],
proj:transform: [10.0 , 0.0 , 399960.0 , 0.0 , -10.0 , 2300020.0 ],
gsd: 10.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'AOT_10m',
}
'B01':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B01',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R60m/T31DDC_20251203T090959_B01_60m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [1830 , 1830 ],
proj:transform: [60.0 , 0.0 , 399960.0 , 0.0 , -60.0 , 2300020.0 ],
gsd: 60.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B01',
eo:bands: [{ 'name': 'B01' , 'common_name': 'coastal' , 'description': 'Band 1 - Coastal aerosol' , 'center_wavelength': 0.443 , 'full_width_half_max': 0.027 } ],
}
'B02':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B02',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R10m/T31DDC_20251203T090959_B02_10m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [10980 , 10980 ],
proj:transform: [10.0 , 0.0 , 399960.0 , 0.0 , -10.0 , 2300020.0 ],
gsd: 10.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B02',
eo:bands: [{ 'name': 'B02' , 'common_name': 'blue' , 'description': 'Band 2 - Blue' , 'center_wavelength': 0.49 , 'full_width_half_max': 0.098 } ],
}
'B03':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B03',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R10m/T31DDC_20251203T090959_B03_10m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [10980 , 10980 ],
proj:transform: [10.0 , 0.0 , 399960.0 , 0.0 , -10.0 , 2300020.0 ],
gsd: 10.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B03',
eo:bands: [{ 'name': 'B03' , 'common_name': 'green' , 'description': 'Band 3 - Green' , 'center_wavelength': 0.56 , 'full_width_half_max': 0.045 } ],
}
'B04':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B04',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R10m/T31DDC_20251203T090959_B04_10m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [10980 , 10980 ],
proj:transform: [10.0 , 0.0 , 399960.0 , 0.0 , -10.0 , 2300020.0 ],
gsd: 10.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B04',
eo:bands: [{ 'name': 'B04' , 'common_name': 'red' , 'description': 'Band 4 - Red' , 'center_wavelength': 0.665 , 'full_width_half_max': 0.038 } ],
}
'B05':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B05',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R20m/T31DDC_20251203T090959_B05_20m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [5490 , 5490 ],
proj:transform: [20.0 , 0.0 , 399960.0 , 0.0 , -20.0 , 2300020.0 ],
gsd: 20.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B05',
eo:bands: [{ 'name': 'B05' , 'common_name': 'rededge' , 'description': 'Band 5 - Vegetation red edge 1' , 'center_wavelength': 0.704 , 'full_width_half_max': 0.019 } ],
}
'B06':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B06',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R20m/T31DDC_20251203T090959_B06_20m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [5490 , 5490 ],
proj:transform: [20.0 , 0.0 , 399960.0 , 0.0 , -20.0 , 2300020.0 ],
gsd: 20.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B06',
eo:bands: [{ 'name': 'B06' , 'common_name': 'rededge' , 'description': 'Band 6 - Vegetation red edge 2' , 'center_wavelength': 0.74 , 'full_width_half_max': 0.018 } ],
}
'B07':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B07',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R20m/T31DDC_20251203T090959_B07_20m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [5490 , 5490 ],
proj:transform: [20.0 , 0.0 , 399960.0 , 0.0 , -20.0 , 2300020.0 ],
gsd: 20.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B07',
eo:bands: [{ 'name': 'B07' , 'common_name': 'rededge' , 'description': 'Band 7 - Vegetation red edge 3' , 'center_wavelength': 0.783 , 'full_width_half_max': 0.028 } ],
}
'B08':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B08',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R10m/T31DDC_20251203T090959_B08_10m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [10980 , 10980 ],
proj:transform: [10.0 , 0.0 , 399960.0 , 0.0 , -10.0 , 2300020.0 ],
gsd: 10.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B08',
eo:bands: [{ 'name': 'B08' , 'common_name': 'nir' , 'description': 'Band 8 - NIR' , 'center_wavelength': 0.842 , 'full_width_half_max': 0.145 } ],
}
'B09':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B09',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R60m/T31DDC_20251203T090959_B09_60m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [1830 , 1830 ],
proj:transform: [60.0 , 0.0 , 399960.0 , 0.0 , -60.0 , 2300020.0 ],
gsd: 60.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B09',
eo:bands: [{ 'name': 'B09' , 'description': 'Band 9 - Water vapor' , 'center_wavelength': 0.945 , 'full_width_half_max': 0.026 } ],
}
'B11':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B11',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R20m/T31DDC_20251203T090959_B11_20m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [5490 , 5490 ],
proj:transform: [20.0 , 0.0 , 399960.0 , 0.0 , -20.0 , 2300020.0 ],
gsd: 20.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B11',
eo:bands: [{ 'name': 'B11' , 'common_name': 'swir16' , 'description': 'Band 11 - SWIR (1.6)' , 'center_wavelength': 1.61 , 'full_width_half_max': 0.143 } ],
}
'B12':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B12',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R20m/T31DDC_20251203T090959_B12_20m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [5490 , 5490 ],
proj:transform: [20.0 , 0.0 , 399960.0 , 0.0 , -20.0 , 2300020.0 ],
gsd: 20.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B12',
eo:bands: [{ 'name': 'B12' , 'common_name': 'swir22' , 'description': 'Band 12 - SWIR (2.2)' , 'center_wavelength': 2.19 , 'full_width_half_max': 0.242 } ],
}
'B8A':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'B8A',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R20m/T31DDC_20251203T090959_B8A_20m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [5490 , 5490 ],
proj:transform: [20.0 , 0.0 , 399960.0 , 0.0 , -20.0 , 2300020.0 ],
gsd: 20.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B8A',
eo:bands: [{ 'name': 'B8A' , 'common_name': 'rededge' , 'description': 'Band 8A - Vegetation red edge 4' , 'center_wavelength': 0.865 , 'full_width_half_max': 0.033 } ],
}
'INSPIRE.xml':  { 'roles': '['metadata']',  'type': 'application/xml',  'title': 'INSPIRE.xml',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/INSPIRE.xml',
type: 'application/xml',
roles: ['metadata' ],
title: 'INSPIRE.xml',
}
'MTD_DS.xml':  { 'roles': '['metadata']',  'type': 'application/xml',  'title': 'MTD_DS.xml',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/DATASTRIP/DS_2BPS_20251203T104850_S20251203T090957/MTD_DS.xml',
type: 'application/xml',
roles: ['metadata' ],
title: 'MTD_DS.xml',
}
'MTD_MSIL2A.xml':  { 'roles': '['metadata']',  'type': 'application/xml',  'title': 'MTD_MSIL2A.xml',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/MTD_MSIL2A.xml',
type: 'application/xml',
roles: ['metadata' ],
title: 'MTD_MSIL2A.xml',
}
'MTD_TL.xml':  { 'roles': '['metadata']',  'type': 'application/xml',  'title': 'MTD_TL.xml',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/MTD_TL.xml',
type: 'application/xml',
roles: ['metadata' ],
title: 'MTD_TL.xml',
}
'SCL_20m':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'SCL_20m',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R20m/T31DDC_20251203T090959_SCL_20m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [5490 , 5490 ],
proj:transform: [20.0 , 0.0 , 399960.0 , 0.0 , -20.0 , 2300020.0 ],
gsd: 20.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'SCL_20m',
}
'TCI':  { 'roles': '['visual']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'TCI',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R10m/T31DDC_20251203T090959_TCI_10m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [10980 , 10980 ],
proj:transform: [10.0 , 0.0 , 399960.0 , 0.0 , -10.0 , 2300020.0 ],
gsd: 10.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['visual' ],
title: 'TCI',
eo:bands: [{ 'name': 'B04' , 'common_name': 'red' , 'description': 'Band 4 - Red' , 'center_wavelength': 0.665 , 'full_width_half_max': 0.038 } ,
{ 'name': 'B03' , 'common_name': 'green' , 'description': 'Band 3 - Green' , 'center_wavelength': 0.56 , 'full_width_half_max': 0.045 } ,
{ 'name': 'B02' , 'common_name': 'blue' , 'description': 'Band 2 - Blue' , 'center_wavelength': 0.49 , 'full_width_half_max': 0.098 } ],
}
'WVP_10m':  { 'roles': '['data']',  'type': 'image/tiff; application=geotiff; profile=cloud-optimized',  'title': 'WVP_10m',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R10m/T31DDC_20251203T090959_WVP_10m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [10980 , 10980 ],
proj:transform: [10.0 , 0.0 , 399960.0 , 0.0 , -10.0 , 2300020.0 ],
gsd: 10.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'WVP_10m',
}
'manifest.safe':  { 'roles': '['metadata']',  'type': 'application/xml',  'title': 'manifest.safe',  ... } {
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/manifest.safe',
type: 'application/xml',
roles: ['metadata' ],
title: 'manifest.safe',
}
'preview.png':  { 'roles': '['auxiliary']',  'type': 'image/png',  'title': 'preview.png',  ... } {
title: 'preview.png',
rel: 'preview',
href: 'https://planetarycomputer.microsoft.com/api/data/v1/item/preview.png?collection=sentinel-2-l2a&item=S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850&assets=visual&asset_bidx=visual%7C1%2C2%2C3&nodata=0&format=png',
roles: ['auxiliary' ],
type: 'image/png',
}
'tilejson.json':  { 'roles': '['metadata']',  'type': 'application/json',  'title': 'tilejson.json',  ... } {
title: 'tilejson.json',
href: 'https://planetarycomputer.microsoft.com/api/data/v1/item/tilejson.json?collection=sentinel-2-l2a&item=S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850&assets=visual&asset_bidx=visual%7C1%2C2%2C3&nodata=0&format=png',
type: 'application/json',
roles: ['metadata' ],
}
[27]:
# view single asset content
search_results[0].assets["B05"]
[27]:
Asset - B05
{
href: 'https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/31/D/DC/2025/12/03/S2B_MSIL2A_20251203T090959_N0511_R021_T31DDC_20251203T104850.SAFE/GRANULE/L2A_T31DDC_A045664_20251203T090957/IMG_DATA/R20m/T31DDC_20251203T090959_B05_20m.tif',
proj:bbox: [399960.0 , 2190220.0 , 509760.0 , 2300020.0 ],
proj:shape: [5490 , 5490 ],
proj:transform: [20.0 , 0.0 , 399960.0 , 0.0 , -20.0 , 2300020.0 ],
gsd: 20.0,
type: 'image/tiff; application=geotiff; profile=cloud-optimized',
roles: ['data' ],
title: 'B05',
eo:bands: [{
name: 'B05',
common_name: 'rededge',
description: 'Band 5 - Vegetation red edge 1',
center_wavelength: 0.704,
full_width_half_max: 0.019,
}
],
}

Configure provider for download, if not already done

[28]:
# dag.update_providers_config(f"""
#     planetary_computer:
#         auth:
#             credentials:
#                 apikey: PLEASE_CHANGE_ME
# """)
dag.update_providers_config(f"""
    planetary_computer:
        download:
            output_dir: {os.path.abspath(workspace)}
""")

Download several assets using core download() method, allowing regex in asset parameter to identify assets to download

[29]:
path = dag.download(search_results[0], asset=r"B0[23]")
path
2026-03-27 16:36:25,272 eodag.download.base              [INFO    ] Download url: https://planetarycomputer.microsoft.com/api/stac/v1/collections/sentinel-2-l2a/items/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850
2026-03-27 16:36:27,532 eodag.product                    [INFO    ] Remote location of the product is still available through its 'remote_location' property: https://planetarycomputer.microsoft.com/api/stac/v1/collections/sentinel-2-l2a/items/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850
[29]:
'/home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850'
[30]:
! tree -sh {path}
[4.0K]  /home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850
├── [1.1M]  T31DDC_20251203T090959_B02_10m.tif
└── [1.1M]  T31DDC_20251203T090959_B03_10m.tif

1 directory, 2 files

Download a single asset using asset.download() method

[31]:
path = search_results[0].assets["B05"].download()
path
2026-03-27 16:36:27,673 eodag.download.base              [INFO    ] Download url: https://planetarycomputer.microsoft.com/api/stac/v1/collections/sentinel-2-l2a/items/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850
2026-03-27 16:36:28,808 eodag.product                    [INFO    ] Remote location of the product is still available through its 'remote_location' property: https://planetarycomputer.microsoft.com/api/stac/v1/collections/sentinel-2-l2a/items/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850
[31]:
'/home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850'

If asset parameter is not defined or matches more than one asset, assets are downloaded in parallel. The executor which allows this is set the same way as explained in the download multiple products at once section. Let’s download the remaining assets of the first product in parallel and with a customized executor using 8 workers at most.

[32]:
path = dag.download(search_results[0], executor=ThreadPoolExecutor(max_workers=8))
path
2026-03-27 16:36:28,817 eodag.download.base              [INFO    ] Download url: https://planetarycomputer.microsoft.com/api/stac/v1/collections/sentinel-2-l2a/items/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850
2026-03-27 16:36:49,890 eodag.product                    [INFO    ] Remote location of the product is still available through its 'remote_location' property: https://planetarycomputer.microsoft.com/api/stac/v1/collections/sentinel-2-l2a/items/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850
[32]:
'/home/sbrunato/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2B_MSIL2A_20251203T090959_R021_T31DDC_20251203T104850'

The executor used to download several products in parallel with the download_all() method may be reused to download assets of these products if they have any.

[ ]: