Data discovery with NASA’s CMR

Summary

In this notebook, we will walk through how to search for Earthdata data collections and granules. Along the way we will explore the available search parameters, information return, and specific contrains when using the CMR API. Our object is to identify assets to access that we would downloaded, or perform S3 direct access, within an analysis workflow

We will be querying CMR for ECOSTRESS version 2 collections/granules to identify assets we would downloaded, or perform S3 direct access, within an analysis workflow.

Learning Objectives

  • Understand what CMR/CMR API is and what CMR/CMR API can be used for
  • How to use the requests package to search data collections and granules
  • How to parse the results of these searches.

What is CMR

CMR is the Common Metadata Repository. It catalogs all data for NASA’s Earth Observing System Data and Information System (EOSDIS). It is the backend of Earthdata Search, the GUI search interface. More information about CMR can be found here.

Unfortunately, the GUI for Earthdata Search is not accessible from a cloud instance - at least not without some work. Earthdata Search is also not immediately reproducible. What I mean by that is if you create a search using the GUI you would have to note the search criteria (date range, search area, collection name, etc), take a screenshot, copy the search url, or save the list of data granules returned by the search, in order to recreate the search. This information would have to be re-entered each time you or someone else wanted to do the search. You could make typos or other mistakes. A cleaner, reproducible solution is to search CMR programmatically using the CMR API.

What is the CMR API

API stands for Application Programming Interface. It allows applications (software, services, etc) to send information to each other. A helpful analogy is a waiter in a restaurant. The waiter takes your drink or food order that you select from the menu, often translated into short-hand, to the bar or kitchen, and then returns (hopefully) with what you ordered when it is ready.

The CMR API accepts search terms such as collection name, keywords, datetime range, and location, queries the CMR database and returns the results.


Getting Started: How to search CMR from Python

The first step is to import python packages. We will use:
- requests This package does most of the work for us accessing the CMR API using HTTP methods. - pprint to pretty print the results of the search.

A more in-depth tutorial on requests is here

import requests
import json
from pprint import pprint

To conduct a search using the CMR API, requests needs the url for the root CMR search endpoint. We’ll assign this url to a python variable as a string.

CMR_OPS = 'https://cmr.earthdata.nasa.gov/search'

CMR allows search by collections, which are datasets, and granules, which are files that contain data. Many of the same search parameters can be used for collections and granules but the type of results returned differ. Search parameters can be found in the API Documentation.

Whether we search collections or granules is distinguished by adding "collections" or "granules" to the end of the CMR endpoint URL.

We are going to search collections first, so we add "collections" to the URL. We are using a python format string in the examples below.

url = f'{CMR_OPS}/{"collections"}'
url
'https://cmr.earthdata.nasa.gov/search/collections'

In this first example, we want to retrieve a list of ECOSTRESS collections in the Earthdata Cloud. This includes ECOSTRESS collections for built 7.1 data which recently became publicly available. This means you will not need to generate a token to access data. Before the public release you should have been part of the access list to access the data. Because of that, an extra token parameter, generated using your Earthdata Login credentials needed to be passed in each CMR request that indicated you are a valid user.

we want to retrieve the collections that are hosted in the cloud ('cloud_hosted': 'True') that has granules availble ('has_granules': 'True'). We also want to get the content in json (pronounced “jason”) format, so I pass a dictionary to the header keyword argument to say that I want results returned as json ('Accept': 'application/json').

The .get() method is used to send this information to the CMR API. get() calls the HTTP method GET.

response = requests.get(url,
                        params={
                            'cloud_hosted': 'True',
                            'has_granules': 'True',
                        },
                        headers={
                            'Accept': 'application/json',
                        }
                       )

The request returns a Response object.

To check that our request was successful we can print the response variable we saved the request to.

response
<Response [200]>

A 200 response is what we want. This means that the requests was successful. For more information on HTTP status codes see https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

A more explict way to check the status code is to use the status_code attribute. Both methods return a HTTP status code.

response.status_code
200

The response from requests.get returns the results of the search and metadata about those results in the headers.

More information about the response object can be found by typing help(response).

headers contains useful information in a case-insensitive dictionary. We requested (above) that the information be return in json which means the object return is a dictionary in our Python environment. We’ll iterate through the returned dictionary, looping throught each field (k) and its associated value (v). For more on interating through dictionary object click here.

for k, v in response.headers.items():
    print(f'{k}: {v}')
Content-Type: application/json;charset=utf-8
Content-Length: 4204
Connection: keep-alive
Date: Tue, 15 Nov 2022 18:08:14 GMT
X-Frame-Options: SAMEORIGIN
Access-Control-Allow-Origin: *
X-XSS-Protection: 1; mode=block
CMR-Request-Id: cf80d8ad-a428-4ca4-a85e-998ec5b0c02f
Strict-Transport-Security: max-age=31536000
CMR-Search-After: [0.0,23600.0,"SENTINEL-1A_DP_META_GRD_HIGH","1",1214470576,826]
CMR-Hits: 1674
Access-Control-Expose-Headers: CMR-Hits, CMR-Request-Id, X-Request-Id, CMR-Scroll-Id, CMR-Search-After, CMR-Timed-Out, CMR-Shapefile-Original-Point-Count, CMR-Shapefile-Simplified-Point-Count
X-Content-Type-Options: nosniff
CMR-Took: 237
X-Request-Id: RjtJpW50AJUR058fFO1oB1ULN3tF72Vo-ffvb9N7FDYx7GjZPHVE1w==
Vary: Accept-Encoding, User-Agent
Content-Encoding: gzip
Server: ServerTokens ProductOnly
X-Cache: Miss from cloudfront
Via: 1.1 aa0280f933863b8ffd5ff636330f4170.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: HIO50-C2
X-Amz-Cf-Id: RjtJpW50AJUR058fFO1oB1ULN3tF72Vo-ffvb9N7FDYx7GjZPHVE1w==

Each item in the dictionary can be accessed in the normal way you access a python dictionary but the keys uniquely case-insensitive. Let’s take a look at the commonly used CMR-Hits key.

response.headers['CMR-Hits']
'1674'

Note that “cmr-hits” works as well!

response.headers['cmr-hits']
'1674'

In some situations the response to your query can return a very large number of result, some of which may not be relevant. We can add additional query parameters to restrict the information returned. We’re going to restrict the search by the provider parameter.

You can modify the code below to explore all Earthdata data products hosted by the various providers. When searching by provider, use Cloud Provider to search for cloud-hosted datasets and On-Premises Provider to search for datasets archived at the DAACs. A partial list of providers is given below.

DAAC Short Name Cloud Provider On-Premises Provider
NSIDC National Snow and Ice Data Center NSIDC_CPRD NSIDC_ECS
GHRC DAAC Global Hydrometeorology Resource Center GHRC_DAAC GHRC_DAAC
PO DAAC Physical Oceanography Distributed Active Archive Center POCLOUD PODAAC
ASF Alaska Satellite Facility ASF ASF
ORNL DAAC Oak Ridge National Laboratory ORNL_CLOUD ORNL_DAAC
LP DAAC Land Processes Distributed Active Archive Center LPCLOUD LPDAAC_ECS
GES DISC NASA Goddard Earth Sciences (GES) Data and Information Services Center (DISC) GES_DISC GES_DISC
OB DAAC NASA’s Ocean Biology Distributed Active Archive Center OB_DAAC
SEDAC NASA’s Socioeconomic Data and Applications Center SEDAC

We’ll assign the provider to a variable as a string and insert the variable into the parameter argument in the request. We’ll also assign the term ‘ECOSTRESS’ to a varible so we don’t need to repeatedly add it to the requests parameters.

provider = 'LPCLOUD'
project = 'ECOSTRESS'
headers = {
    #'Authorization': f'Bearer {token}',
    'Accept': 'application/json',
}
response = requests.get(url,
                        params={
                            'cloud_hosted': 'True',
                            'has_granules': 'True',
                            'provider': provider,
                            'project': project,
                        },
                        headers=headers
                       )
response
<Response [200]>
response.headers['cmr-hits']
'5'

Search results are contained in the content part of the Response object. However, response.content returns information in bytes.

response.content
b'{"feed":{"updated":"2022-11-15T18:08:14.505Z","id":"https://cmr.earthdata.nasa.gov:443/search/collections.json?cloud_hosted=True&has_granules=True&provider=LPCLOUD&project=ECOSTRESS","title":"ECHO dataset metadata","entry":[{"processing_level_id":"2","cloud_hosted":true,"boxes":["-90 -180 90 180"],"time_start":"2018-07-09T00:00:00.000Z","version_id":"002","updated":"2021-06-23T16:50:51.108Z","dataset_id":"ECOSTRESS Tiled Land Surface Temperature and Emissivity Instantaneous L2 Global 70 m V002","has_spatial_subsetting":false,"has_transforms":false,"has_variables":false,"data_center":"LPCLOUD","short_name":"ECO_L2T_LSTE","organizations":["LP DAAC","NASA/JPL/ECOSTRESS"],"title":"ECOSTRESS Tiled Land Surface Temperature and Emissivity Instantaneous L2 Global 70 m V002","coordinate_system":"CARTESIAN","summary":"The ECOsystem Spaceborne Thermal Radiometer Experiment on Space Station (ECOSTRESS) mission measures the temperature of plants to better understand how much water plants need and how they respond to stress. ECOSTRESS is attached to the International Space Station (ISS) and collects data over the conterminous United States (CONUS) as well as key biomes and agricultural zones around the world and selected FLUXNET validation sites. A map of the acquisition coverage can be found on the ECOSTRESS website.\\r\\nThe ECOSTRESS Tiled Land Surface Temperature and Emissivity Instantaneous Level 2 Global 70 m (ECO_L2T_LSTE) Version 2 data product provides atmospherically corrected land surface temperature and emissivity (LST&E) values derived from five thermal infrared (TIR) bands. The ECO_L2T_LSTE data product was derived using a physics-based Temperature/Emissivity Separation (TES) algorithm. This tiled data product is subset from the ECO_L2G_LSTE data product using a modified version of the Military Grid Reference System (MGRS) which divides Universal Transverse Mercator (UTM) zones into square tiles that are 109.8 km by 109.8 km with a 70 meter (m) spatial resolution.\\r\\nThe ECO_L2T_LSTE Version 2 data product is provided in Cloud Optimized GeoTIFF (COG) format, and each band is distributed as a separate COG. This product contains seven layers including LST, LST error, wideband emissivity, quality flags, height, and cloud and water masks. For acquisitions after May 15, 2019, data products contain data values for TIR bands 2, 4, and 5 only. TIR bands 1 and 3 contain fill values to accommodate direct streaming of data from the ISS, as mentioned in the Known Issues section. LST data generated after May 15, 2019 will only use the 3 available bands, accuracy may be affected when compared to the LST data that utilized all 5 bands.","service_features":{"opendap":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"esi":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"harmony":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false}},"orbit_parameters":{},"id":"C2076090826-LPCLOUD","has_formats":false,"score":1.32,"consortiums":["GEOSS","EOSDIS"],"original_format":"UMM_JSON","collection_data_type":"SCIENCE_QUALITY","archive_center":"LP DAAC","has_temporal_subsetting":false,"browse_flag":true,"platforms":["ISS"],"online_access_flag":true,"links":[{"rel":"http://esipfed.org/ns/fedsearch/1.1/data#","hreflang":"en-US","href":"https://search.earthdata.nasa.gov/search?q=C2076090826-LPCLOUD"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://doi.org/10.5067/ECOSTRESS/ECO_L2T_LSTE.002"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1324/ECO2_LSTE_ATBD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/browse#","hreflang":"en-US","href":"https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-public/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_21247_032_19MCN_20220405T135253_0700_01/ECOv002_L2T_LSTE_21247_032_19MCN_20220405T135253_0700_01.png"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/380/ECO2_PSD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/299/ECO2_ASD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1566/ECOL2-4_Grid_Tile_User_Guide_V2.pdf"}]},{"processing_level_id":"1B","cloud_hosted":true,"boxes":["-90 -180 90 180"],"time_start":"2018-07-09T00:00:00.000Z","version_id":"002","dataset_id":"ECOSTRESS Swath Geolocation Instantaneous L1B Global 70 m V002","has_spatial_subsetting":false,"has_transforms":false,"has_variables":false,"data_center":"LPCLOUD","short_name":"ECO_L1B_GEO","organizations":["LP DAAC","NASA/JPL/ECOSTRESS"],"title":"ECOSTRESS Swath Geolocation Instantaneous L1B Global 70 m V002","coordinate_system":"CARTESIAN","summary":"The ECOsystem Spaceborne Thermal Radiometer Experiment on Space Station (ECOSTRESS) mission measures the temperature of plants to better understand how much water plants need and how they respond to stress. ECOSTRESS is attached to the International Space Station (ISS) and collects data over the conterminous United States (CONUS) as well as key biomes and agricultural zones around the world and selected  FLUXNET (http://fluxnet.fluxdata.org/about/) validation sites. A map of the acquisition coverage can be found on the ECOSTRESS website (https://ecostress.jpl.nasa.gov/science).\\r\\n\\r\\nThe ECOSTRESS Swath Geolocation Instantaneous Level 1B Global (ECO_L1B_GEO) Version 2 data product provides the geolocation information for the radiance values retrieved in the ECO_L1B_RAD (https://doi.org/10.5067/ecostress/eco_l1b_rad.002) Version 2 data product. The geolocation product gives geo-tagging to each of the radiance pixels. The geolocation processing corrects the ISS-reported ephemeris and attitude data by image matching with a global ortho-base derived from Landsat data, and then assigns latitude and longitude values to each of the Level 1 radiance pixels. When image matching is successful, the data are geolocated to better than 50 meter (m) accuracy. The ECO_L1B_GEO data product is provided as swath data.\\r\\n\\r\\nThe ECO_L1B_GEO data product contains data layers for latitude and longitude values, solar and view geometry information, surface height, and the fraction of pixel on land versus water distributed in HDF5 format.","service_features":{"opendap":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"esi":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"harmony":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false}},"orbit_parameters":{},"id":"C2076087338-LPCLOUD","has_formats":false,"score":1.32,"consortiums":["GEOSS","EOSDIS"],"original_format":"UMM_JSON","collection_data_type":"SCIENCE_QUALITY","archive_center":"LP DAAC","has_temporal_subsetting":false,"browse_flag":false,"platforms":["ISS"],"online_access_flag":true,"links":[{"rel":"http://esipfed.org/ns/fedsearch/1.1/data#","hreflang":"en-US","href":"https://search.earthdata.nasa.gov/search?q=C2076087338-LPCLOUD"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://doi.org/10.5067/ECOSTRESS/ECO_L1B_GEO.002"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1491/ECO1B_User_Guide_V2.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/223/ECO1B_Geolocation_ATBD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://ecostress.jpl.nasa.gov/science"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/222/ECO1B_Calibration_ATBD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1321/ECO1B_PSD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/225/ECO1B_Rad_ASD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/226/ECO1B_Geo_ASD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/227/ECO_Earthdata_Search_Quick_Guide.pdf"},{"length":"700.0MB","rel":"http://esipfed.org/ns/fedsearch/1.1/data#","hreflang":"en-US","href":"https://appeears.earthdatacloud.nasa.gov/"}]},{"processing_level_id":"1B","cloud_hosted":true,"boxes":["-90 -180 90 180"],"time_start":"2018-07-09T00:00:00.000Z","version_id":"002","dataset_id":"ECOSTRESS Swath Top of Atmosphere Calibrated Radiance Instantaneous L1B Global 70 m","has_spatial_subsetting":false,"has_transforms":false,"has_variables":false,"data_center":"LPCLOUD","short_name":"ECO_L1B_RAD","organizations":["LP DAAC","NASA/JPL/ECOSTRESS"],"title":"ECOSTRESS Swath Top of Atmosphere Calibrated Radiance Instantaneous L1B Global 70 m","coordinate_system":"CARTESIAN","summary":"The ECOsystem Spaceborne Thermal Radiometer Experiment on Space Station (ECOSTRESS) mission measures the temperature of plants to better understand how much water plants need and how they respond to stress. ECOSTRESS is attached to the International Space Station (ISS) and collects data over the conterminous United States (CONUS) as well as key biomes and agricultural zones around the world and selected  FLUXNET (http://fluxnet.fluxdata.org/about/) validation sites. A map of the acquisition coverage can be found on the ECOSTRESS website (https://ecostress.jpl.nasa.gov/science).\\r\\n\\r\\nThe ECOSTRESS Swath Top of Atmosphere Calibrated Radiance Instantaneous L1B Global 70 m (ECO_L1B_RAD) Version 2 data product provides at-sensor calibrated radiance values retrieved for five thermal infrared (TIR) bands operating between 8 and 12.5 \xc2\xb5m. Additionally, the digital numbers (DN) for the shortwave infrared (SWIR) band are provided. The TIR bands are spatially co-registered to produce a variable spatial resolution between 70 meters (m) and 90 m at the edge of the swath. The ECO_L1B_RAD data product is provided as swath data and does not contain geolocation information. The corresponding ECO_L1B_GEO (https://doi.org/10.5067/ECOSTRESS/ECO_L1B_GEO.002) data product is required to georeference the ECO_L1B_RAD data product. The geographic coverage of acquisitions for the ECO_L1B_RAD Version 2 data product extends to areas outside of those indicated on the coverage map. \\r\\n\\r\\nThe ECO_L1B_RAD Version 2 data product contains layers of radiance values for the five TIR bands, DN values for the SWIR band, associated data quality indicators, and ancillary data distributed in HDF5 format. For acquisitions after May 15, 2019, data products contain data values for the 8.785 \xce\xbcm, 10.522 \xce\xbcm, and 12.001 \xce\xbcm (TIR) bands only. The 1.6 \xce\xbcm (SWIR), 8.285 \xce\xbcm (TIR), and 9.060 \xce\xbcm (TIR) bands contain fill values to accommodate direct streaming of data from the ISS.\\r\\n","service_features":{"opendap":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"esi":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"harmony":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false}},"orbit_parameters":{},"id":"C2076116385-LPCLOUD","has_formats":false,"score":1.32,"consortiums":["GEOSS","EOSDIS"],"original_format":"UMM_JSON","collection_data_type":"SCIENCE_QUALITY","archive_center":"LP DAAC","has_temporal_subsetting":false,"browse_flag":false,"platforms":["ISS"],"online_access_flag":true,"links":[{"rel":"http://esipfed.org/ns/fedsearch/1.1/data#","hreflang":"en-US","href":"https://search.earthdata.nasa.gov/search?q=C2076116385-LPCLOUD"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://doi.org/10.5067/ECOSTRESS/ECO_L1B_RAD.002"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1491/ECO1B_User_Guide_V2.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/223/ECO1B_Geolocation_ATBD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://ecostress.jpl.nasa.gov/science"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/222/ECO1B_Calibration_ATBD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1321/ECO1B_PSD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/225/ECO1B_Rad_ASD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/226/ECO1B_Geo_ASD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/227/ECO_Earthdata_Search_Quick_Guide.pdf"}]},{"processing_level_id":"2","cloud_hosted":true,"boxes":["-90 -180 90 180"],"time_start":"2018-07-09T00:00:00.000Z","version_id":"002","dataset_id":"ECOSTRESS Swath Cloud Mask Instantaneous L2 Global 70 m V002","has_spatial_subsetting":false,"has_transforms":false,"has_variables":false,"data_center":"LPCLOUD","short_name":"ECO_L2_CLOUD","organizations":["LP DAAC","NASA/JPL/ECOSTRESS"],"title":"ECOSTRESS Swath Cloud Mask Instantaneous L2 Global 70 m V002","coordinate_system":"CARTESIAN","summary":"The ECOsystem Spaceborne Thermal Radiometer Experiment on Space Station (ECOSTRESS) mission measures the temperature of plants to better understand how much water plants need and how they respond to stress. ECOSTRESS is attached to the International Space Station (ISS) and collects data over the conterminous United States (CONUS) as well as key biomes and agricultural zones around the world and selected FLUXNET (http://fluxnet.fluxdata.org/about/) validation sites. A map of the acquisition coverage can be found on the ECOSTRESS website (https://ecostress.jpl.nasa.gov/science).\\r\\n\\r\\nThe ECOSTRESS Swath Cloud Mask Instantaneous L2 Global 70 m (ECO_L2_CLOUD) Version 2 data product is derived using a single-channel Bayesian cloud threshold with a look-up-table (LUT) approach. The ECOSTRESS Level 2 cloud product provides a cloud mask that can be used to determine cloud cover for accurate land surface temperature and evapotranspiration estimation. The corresponding ECO_L1B_GEO (https://doi.org/10.5067/ECOSTRESS/ECO_L1B_GEO.002) data product is required to georeference the ECO_L2_CLOUD data product.\\r\\n \\r\\nThe ECO_L2_CLOUD Version 2 data product contains three cloud mask layers: brightness temperature LUT test, brightness temperature difference test, and final cloud mask. Information on how to interpret the bit fields in the cloud mask is provided in Table 7 of the User Guide (https://lpdaac.usgs.gov/documents/1493/ECOL2_User_Guide_V2.pdf).","service_features":{"opendap":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"esi":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"harmony":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false}},"orbit_parameters":{},"id":"C2076115306-LPCLOUD","has_formats":false,"score":1.32,"consortiums":["GEOSS","EOSDIS"],"original_format":"UMM_JSON","collection_data_type":"SCIENCE_QUALITY","archive_center":"LP DAAC","has_temporal_subsetting":false,"browse_flag":false,"platforms":["ISS"],"online_access_flag":true,"links":[{"rel":"http://esipfed.org/ns/fedsearch/1.1/data#","hreflang":"en-US","href":"https://search.earthdata.nasa.gov/search?q=C2076115306-LPCLOUD"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://doi.org/10.5067/ECOSTRESS/ECO_L2_CLOUD.002"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1495/ECOL2_User_Guide_V2.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1496/ECOL2_ATBD_V2.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://ecostress.jpl.nasa.gov/science"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/380/ECO2_PSD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/299/ECO2_ASD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/227/ECO_Earthdata_Search_Quick_Guide.pdf"},{"length":"1.5MB","rel":"http://esipfed.org/ns/fedsearch/1.1/data#","hreflang":"en-US","href":"https://appeears.earthdatacloud.nasa.gov/"}]},{"processing_level_id":"2","cloud_hosted":true,"boxes":["-90 -180 90 180"],"time_start":"2018-07-09T00:00:00.000Z","version_id":"002","dataset_id":"ECOSTRESS Swath Land Surface Temperature and Emissivity Instantaneous L2 Global 70 m V002","has_spatial_subsetting":false,"has_transforms":false,"has_variables":false,"data_center":"LPCLOUD","short_name":"ECO_L2_LSTE","organizations":["LP DAAC","NASA/JPL/ECOSTRESS"],"title":"ECOSTRESS Swath Land Surface Temperature and Emissivity Instantaneous L2 Global 70 m V002","coordinate_system":"CARTESIAN","summary":"The ECOsystem Spaceborne Thermal Radiometer Experiment on Space Station (ECOSTRESS) mission measures the temperature of plants to better understand how much water plants need and how they respond to stress. ECOSTRESS is attached to the International Space Station (ISS) and collects data over the conterminous United States (CONUS) as well as key biomes and agricultural zones around the world and selected FLUXNET (http://fluxnet.fluxdata.org/about/) validation sites. A map of the acquisition coverage can be found on the ECOSTRESS website (https://ecostress.jpl.nasa.gov/science).\\r\\n\\r\\nThe ECOSTRESS Swath Land Surface Temperature and Emissivity Instantaneous L2 Global 70 m (ECO_L2_LSTE) Version 2 data product provides atmospherically corrected land surface temperature and emissivity (LST&E) values derived from five thermal infrared (TIR) bands. The ECO_L2_LSTE data product was derived using a physics-based Temperature/Emissivity Separation (TES) algorithm. The ECO_L2_LSTE is provided as swath data and has a spatial resolution of 70 meters (m). The corresponding  ECO_L1B_GEO (https://doi.org/10.5067/ECOSTRESS/ECO_L1B_GEO.002) data product is required to georeference the ECO_L2_LSTE data product.\\r\\n\\r\\nThe ECO_L2_LSTE Version 2 data product contains layers of LST, emissivity for bands 1 through 5, quality control for LST&E, LST error, emissivity error for bands 1 through 5, wideband emissivity, Precipitable Water Vapor (PWV), cloud mask, and water mask. For acquisitions after May 15, 2019, data products contain data values for TIR bands 2, 4 and 5 only. TIR bands 1 and 3 contain fill values to accommodate direct streaming of data from the ISS as mentioned in the Known Issues section.","service_features":{"opendap":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"esi":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false},"harmony":{"has_formats":false,"has_variables":false,"has_transforms":false,"has_spatial_subsetting":false,"has_temporal_subsetting":false}},"orbit_parameters":{},"id":"C2076114664-LPCLOUD","has_formats":false,"score":1.32,"consortiums":["GEOSS","EOSDIS"],"original_format":"UMM_JSON","collection_data_type":"SCIENCE_QUALITY","archive_center":"LP DAAC","has_temporal_subsetting":false,"browse_flag":false,"platforms":["ISS"],"online_access_flag":true,"links":[{"rel":"http://esipfed.org/ns/fedsearch/1.1/data#","hreflang":"en-US","href":"https://search.earthdata.nasa.gov/search?q=C2076114664-LPCLOUD"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://doi.org/10.5067/ECOSTRESS/ECO_L2_LSTE.002"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1495/ECOL2_User_Guide_V2.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/1324/ECO2_LSTE_ATBD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/metadata#","hreflang":"en-US","href":"https://ecostress.jpl.nasa.gov/science"},{"length":"150.0MB","rel":"http://esipfed.org/ns/fedsearch/1.1/data#","hreflang":"en-US","href":"https://appeears.earthdatacloud.nasa.gov/"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/380/ECO2_PSD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/299/ECO2_ASD_V1.pdf"},{"rel":"http://esipfed.org/ns/fedsearch/1.1/documentation#","hreflang":"en-US","href":"https://lpdaac.usgs.gov/documents/227/ECO_Earthdata_Search_Quick_Guide.pdf"}]}]}}'

A more convenient way to work with this information is to use json formatted data. I’m using pretty print pprint to print the data in an easy to read way.

Note - response.json() will format our response in json - ['feed']['entry'] returns all entries that CMR returned in the request (not the same as CMR-Hits) - [0] returns the first entry. Reminder that python starts indexing at 0, not 1!

pprint(response.json()['feed']['entry'][0])
{'archive_center': 'LP DAAC',
 'boxes': ['-90 -180 90 180'],
 'browse_flag': True,
 'cloud_hosted': True,
 'collection_data_type': 'SCIENCE_QUALITY',
 'consortiums': ['GEOSS', 'EOSDIS'],
 'coordinate_system': 'CARTESIAN',
 'data_center': 'LPCLOUD',
 'dataset_id': 'ECOSTRESS Tiled Land Surface Temperature and Emissivity '
               'Instantaneous L2 Global 70 m V002',
 'has_formats': False,
 'has_spatial_subsetting': False,
 'has_temporal_subsetting': False,
 'has_transforms': False,
 'has_variables': False,
 'id': 'C2076090826-LPCLOUD',
 'links': [{'href': 'https://search.earthdata.nasa.gov/search?q=C2076090826-LPCLOUD',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/data#'},
           {'href': 'https://doi.org/10.5067/ECOSTRESS/ECO_L2T_LSTE.002',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/metadata#'},
           {'href': 'https://lpdaac.usgs.gov/',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/metadata#'},
           {'href': 'https://lpdaac.usgs.gov/documents/1324/ECO2_LSTE_ATBD_V1.pdf',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/documentation#'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-public/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_21247_032_19MCN_20220405T135253_0700_01/ECOv002_L2T_LSTE_21247_032_19MCN_20220405T135253_0700_01.png',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#'},
           {'href': 'https://lpdaac.usgs.gov/documents/380/ECO2_PSD_V1.pdf',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/documentation#'},
           {'href': 'https://lpdaac.usgs.gov/documents/299/ECO2_ASD_V1.pdf',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/documentation#'},
           {'href': 'https://lpdaac.usgs.gov/documents/1566/ECOL2-4_Grid_Tile_User_Guide_V2.pdf',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/documentation#'}],
 'online_access_flag': True,
 'orbit_parameters': {},
 'organizations': ['LP DAAC', 'NASA/JPL/ECOSTRESS'],
 'original_format': 'UMM_JSON',
 'platforms': ['ISS'],
 'processing_level_id': '2',
 'score': 1.32,
 'service_features': {'esi': {'has_formats': False,
                              'has_spatial_subsetting': False,
                              'has_temporal_subsetting': False,
                              'has_transforms': False,
                              'has_variables': False},
                      'harmony': {'has_formats': False,
                                  'has_spatial_subsetting': False,
                                  'has_temporal_subsetting': False,
                                  'has_transforms': False,
                                  'has_variables': False},
                      'opendap': {'has_formats': False,
                                  'has_spatial_subsetting': False,
                                  'has_temporal_subsetting': False,
                                  'has_transforms': False,
                                  'has_variables': False}},
 'short_name': 'ECO_L2T_LSTE',
 'summary': 'The ECOsystem Spaceborne Thermal Radiometer Experiment on Space '
            'Station (ECOSTRESS) mission measures the temperature of plants to '
            'better understand how much water plants need and how they respond '
            'to stress. ECOSTRESS is attached to the International Space '
            'Station (ISS) and collects data over the conterminous United '
            'States (CONUS) as well as key biomes and agricultural zones '
            'around the world and selected FLUXNET validation sites. A map of '
            'the acquisition coverage can be found on the ECOSTRESS '
            'website.\r\n'
            'The ECOSTRESS Tiled Land Surface Temperature and Emissivity '
            'Instantaneous Level 2 Global 70 m (ECO_L2T_LSTE) Version 2 data '
            'product provides atmospherically corrected land surface '
            'temperature and emissivity (LST&E) values derived from five '
            'thermal infrared (TIR) bands. The ECO_L2T_LSTE data product was '
            'derived using a physics-based Temperature/Emissivity Separation '
            '(TES) algorithm. This tiled data product is subset from the '
            'ECO_L2G_LSTE data product using a modified version of the '
            'Military Grid Reference System (MGRS) which divides Universal '
            'Transverse Mercator (UTM) zones into square tiles that are 109.8 '
            'km by 109.8 km with a 70 meter (m) spatial resolution.\r\n'
            'The ECO_L2T_LSTE Version 2 data product is provided in Cloud '
            'Optimized GeoTIFF (COG) format, and each band is distributed as a '
            'separate COG. This product contains seven layers including LST, '
            'LST error, wideband emissivity, quality flags, height, and cloud '
            'and water masks. For acquisitions after May 15, 2019, data '
            'products contain data values for TIR bands 2, 4, and 5 only. TIR '
            'bands 1 and 3 contain fill values to accommodate direct streaming '
            'of data from the ISS, as mentioned in the Known Issues section. '
            'LST data generated after May 15, 2019 will only use the 3 '
            'available bands, accuracy may be affected when compared to the '
            'LST data that utilized all 5 bands.',
 'time_start': '2018-07-09T00:00:00.000Z',
 'title': 'ECOSTRESS Tiled Land Surface Temperature and Emissivity '
          'Instantaneous L2 Global 70 m V002',
 'updated': '2021-06-23T16:50:51.108Z',
 'version_id': '002'}

The first response contains a lot more information than we need. We’ll narrow in on a few fields to get a feel for what we have. We’ll print the name of the dataset (dataset_id) and the concept id (id). We can build this variable and print statement like we did above with the url variable.

collections = response.json()['feed']['entry']
for collection in collections:
    print(f'{collection["archive_center"]} | {collection["dataset_id"]} | {collection["short_name"]} |{collection["id"]}')
LP DAAC | ECOSTRESS Tiled Land Surface Temperature and Emissivity Instantaneous L2 Global 70 m V002 | ECO_L2T_LSTE |C2076090826-LPCLOUD
LP DAAC | ECOSTRESS Swath Geolocation Instantaneous L1B Global 70 m V002 | ECO_L1B_GEO |C2076087338-LPCLOUD
LP DAAC | ECOSTRESS Swath Top of Atmosphere Calibrated Radiance Instantaneous L1B Global 70 m | ECO_L1B_RAD |C2076116385-LPCLOUD
LP DAAC | ECOSTRESS Swath Cloud Mask Instantaneous L2 Global 70 m V002 | ECO_L2_CLOUD |C2076115306-LPCLOUD
LP DAAC | ECOSTRESS Swath Land Surface Temperature and Emissivity Instantaneous L2 Global 70 m V002 | ECO_L2_LSTE |C2076114664-LPCLOUD

We know from CMR-Hits that there are 5 datasets but in some situations CMR restricts the number of results returned by each query. The default is 10 but it can be set to a maximum of 2000. If I only search for datasets that are distributed by LPCLOUD provider, we will have more number of results. We can set the page_size parameter to 50 (higher than the number of results returned) so we return all results in a single query.

response = requests.get(url,
                        params={
                            'cloud_hosted': 'True',
                            'has_granules': 'True',
                            'provider': provider,
                            #'project': project,
                            'page_size': 50
                        },
                        headers=headers
                       )
response
<Response [200]>
response.headers['cmr-hits']
'41'

Now, when we can re-run our for loop for the collections we now have all of the available collections listed.

collections = response.json()['feed']['entry']
for collection in collections:
    print(f'{collection["archive_center"]} | {collection["dataset_id"]} | {collection["short_name"]} |{collection["id"]}')
LP DAAC | HLS Sentinel-2 Multi-spectral Instrument Surface Reflectance Daily Global 30m v2.0 | HLSS30 |C2021957295-LPCLOUD
LP DAAC | HLS Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m v2.0 | HLSL30 |C2021957657-LPCLOUD
LP DAAC | ASTER Global Digital Elevation Model V003 | ASTGTM |C1711961296-LPCLOUD
LP DAAC | MODIS/Aqua Land Surface Temperature/Emissivity 5-Min L2 Swath 1km V061 | MYD11_L2 |C2343114808-LPCLOUD
LP DAAC | MODIS/Terra Vegetation Indices 16-Day L3 Global 250m SIN Grid V061 | MOD13Q1 |C1748066515-LPCLOUD
LP DAAC | MODIS/Terra Land Surface Temperature/Emissivity 8-Day L3 Global 1km SIN Grid V061 | MOD11A2 |C2269056084-LPCLOUD
LP DAAC | MODIS/Terra Vegetation Indices Monthly L3 Global 1km SIN Grid V061 | MOD13A3 |C2327962326-LPCLOUD
LP DAAC | MODIS/Terra Surface Reflectance Daily L2G Global 1km and 500m SIN Grid V061 | MOD09GA |C2202497474-LPCLOUD
LP DAAC | MODIS/Terra Land Surface Temperature/Emissivity Daily L3 Global 1km SIN Grid V061 | MOD11A1 |C1748058432-LPCLOUD
LP DAAC | MODIS/Aqua Vegetation Indices 16-Day L3 Global 250m SIN Grid V061 | MYD13Q1 |C2307290656-LPCLOUD
LP DAAC | MODIS/Aqua Land Surface Temperature/Emissivity Daily L3 Global 1km SIN Grid V061 | MYD11A1 |C1748046084-LPCLOUD
LP DAAC | MODIS/Terra+Aqua BRDF/Albedo Albedo Daily L3 Global - 500m V061 | MCD43A3 |C2278860820-LPCLOUD
LP DAAC | MODIS/Terra Surface Reflectance 8-Day L3 Global 500m SIN Grid V061 | MOD09A1 |C2343111356-LPCLOUD
LP DAAC | MODIS/Terra Surface Reflectance Daily L2G Global 250m SIN Grid V061 | MOD09GQ |C2343115666-LPCLOUD
LP DAAC | MODIS/Aqua Surface Reflectance Daily L2G Global 1km and 500m SIN Grid V061 | MYD09GA |C2202498116-LPCLOUD
LP DAAC | MODIS/Terra Thermal Anomalies/Fire 5-Min L2 Swath 1km V061 | MOD14 |C2271754179-LPCLOUD
LP DAAC | MODIS/Terra Leaf Area Index/FPAR 8-Day L4 Global 500m SIN Grid V061 | MOD15A2H |C2218777082-LPCLOUD
LP DAAC | MODIS/Aqua Thermal Anomalies/Fire 5-Min L2 Swath 1km V061 | MYD14 |C2278858993-LPCLOUD
LP DAAC | MODIS/Terra Net Evapotranspiration 8-Day L4 Global 500m SIN Grid V061 | MOD16A2 |C2343113232-LPCLOUD
LP DAAC | MODIS/Aqua Surface Reflectance Daily L2G Global 250m SIN Grid V061 | MYD09GQ |C2343109950-LPCLOUD
LP DAAC | MODIS/Terra+Aqua Leaf Area Index/FPAR 4-Day L4 Global 500m SIN Grid V061 | MCD15A3H |C2343110937-LPCLOUD
LP DAAC | MODIS/Terra+Aqua BRDF/Albedo Nadir BRDF-Adjusted Ref Daily L3 Global - 500m V061 | MCD43A4 |C2218719731-LPCLOUD
LP DAAC | MODIS/Terra Surface Reflectance 8-Day L3 Global 250m SIN Grid V061 | MOD09Q1 |C2343112831-LPCLOUD
LP DAAC | MODIS/Terra+Aqua Land Cover Type Yearly L3 Global 500m SIN Grid V061 | MCD12Q1 |C2484079608-LPCLOUD
LP DAAC | MODIS/Aqua Surface Reflectance 8-Day L3 Global 500m SIN Grid V061 | MYD09A1 |C2343113743-LPCLOUD
LP DAAC | MODIS/Aqua Land Surface Temperature/Emissivity 8-Day L3 Global 1km SIN Grid V061 | MYD11A2 |C2269057787-LPCLOUD
LP DAAC | ECOSTRESS Tiled Land Surface Temperature and Emissivity Instantaneous L2 Global 70 m V002 | ECO_L2T_LSTE |C2076090826-LPCLOUD
LP DAAC | MODIS/Terra+Aqua Land Aerosol Optical Depth Daily L2G Global 1km SIN Grid V061 | MCD19A2 |C2324689816-LPCLOUD
LP DAAC | MODIS/Aqua Surface Reflectance 8-Day L3 Global 250m SIN Grid V061 | MYD09Q1 |C2343114343-LPCLOUD
LP DAAC | MODIS/Aqua Vegetation Indices Monthly L3 Global 1km SIN Grid V061 | MYD13A3 |C2327957988-LPCLOUD
LP DAAC | MODIS/Terra+Aqua Land Cover Type Yearly L3 Global 0.05Deg CMG V061 | MCD12C1 |C2484078896-LPCLOUD
LP DAAC | MODIS/Terra+Aqua Land Cover Dynamics Yearly L3 Global 500m SIN Grid V061 | MCD12Q2 |C2484079943-LPCLOUD
LP DAAC | MODIS/Terra+Aqua Leaf Area Index/FPAR 8-Day L4 Global 500m SIN Grid V061 | MCD15A2H |C2222147000-LPCLOUD
LP DAAC | MODIS/Terra+Aqua Photosynthetically Active Radiation Daily/3-Hour L3 Global 0.05Deg CMG V061 | MCD18C2 |C2484081543-LPCLOUD
LP DAAC | MODIS/Terra Land Surface Temperature/Emissivity 5-Min L2 Swath 1km V061 | MOD11_L2 |C2343115255-LPCLOUD
LP DAAC | ECOSTRESS Swath Attitude and Ephemeris Instantaneous L1B Global V002 | ECO_L1B_ATT |C2076117996-LPCLOUD
LP DAAC | ECOSTRESS Swath Geolocation Instantaneous L1B Global 70 m V002 | ECO_L1B_GEO |C2076087338-LPCLOUD
LP DAAC | ECOSTRESS Swath Top of Atmosphere Calibrated Radiance Instantaneous L1B Global 70 m | ECO_L1B_RAD |C2076116385-LPCLOUD
LP DAAC | ECOSTRESS Swath Cloud Mask Instantaneous L2 Global 70 m V002 | ECO_L2_CLOUD |C2076115306-LPCLOUD
LP DAAC | ECOSTRESS Swath Land Surface Temperature and Emissivity Instantaneous L2 Global 70 m V002 | ECO_L2_LSTE |C2076114664-LPCLOUD
LP DAAC | MODIS/Terra+Aqua Downward Shortwave Radiation Daily/3-Hour L3 Global 0.05Deg CMG V061 | MCD18C1 |C2484081120-LPCLOUD

Searching for Granules

In NASA speak, Granules are files or groups of files. In this example, we will search for ECO_L2T_LSTE version 2 for a specified region of interest and datetime range.

We need to change the resource url to look for granules instead of collections

url = f'{CMR_OPS}/{"granules"}'
url
'https://cmr.earthdata.nasa.gov/search/granules'

We will search by concept_id, temporal, and bounding_box. Details about these search parameters can be found in the CMR API Documentation.

The formatting of the values for each parameter is quite specific.
Temporal parameters are in ISO 8061 format yyyy-MM-ddTHH:mm:ssZ.
Bounding box coordinates are lower left longitude, lower left latitude, upper right longitude, upper right latitude.

collection_id = 'C2076090826-LPCLOUD'
date_range = '2022-10-20T00:00:00Z,2022-11-14T23:59:59Z'
bbox = '-120.295181,34.210026,-119.526215,35.225021'
response = requests.get(url, 
                        params={
                            'concept_id': collection_id,
                            'temporal': date_range,
                            'bounding_box': bbox,
                            #'token': token,
                            'page_size': 200
                            },
                        headers=headers
                       )
print(response.status_code)
200
print(response.headers['CMR-Hits'])
47
granules = response.json()['feed']['entry']
for granule in granules:
    print(f'{granule["data_center"]} | {granule["title"]} | {granule["id"]}')
LPCLOUD | ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01 | G2530780237-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24418_001_10SGC_20221026T105945_0710_01 | G2530780962-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24418_001_10SGD_20221026T105945_0710_01 | G2530781111-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24418_002_10SGD_20221026T110036_0710_01 | G2530775818-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24418_002_10SGE_20221026T110036_0710_01 | G2530778344-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24418_002_11SKV_20221026T110036_0710_01 | G2530780217-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24418_002_11SKU_20221026T110036_0710_01 | G2530780251-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24418_002_11SKT_20221026T110036_0710_01 | G2530780282-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24418_002_10SGC_20221026T110036_0710_01 | G2530780296-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24479_001_10SGE_20221030T092522_0710_01 | G2535607120-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24479_001_10SGD_20221030T092522_0710_01 | G2535607552-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24479_001_10SGC_20221030T092522_0710_01 | G2535607555-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24479_001_11SKT_20221030T092522_0710_01 | G2535609921-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01 | G2535610056-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24479_001_11SKV_20221030T092522_0710_01 | G2535611479-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24494_003_11SKT_20221031T083716_0710_01 | G2536450014-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_011_10SGC_20221101T155724_0710_01 | G2539193798-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_011_10SGD_20221101T155724_0710_01 | G2539195601-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_011_10SGE_20221101T155724_0710_01 | G2539196967-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_011_11SKV_20221101T155724_0710_01 | G2539199950-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_012_11SKT_20221101T155816_0710_01 | G2539203544-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_012_11SKV_20221101T155816_0710_01 | G2539203547-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_012_10SGE_20221101T155816_0710_01 | G2539203627-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_012_10SGD_20221101T155816_0710_01 | G2539205423-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_012_10SGC_20221101T155816_0710_01 | G2539205436-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24514_012_11SKU_20221101T155816_0710_01 | G2539206874-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24540_005_10SGE_20221103T074954_0710_01 | G2541389219-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24540_005_10SGD_20221103T074954_0710_01 | G2541389633-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24540_005_10SGC_20221103T074954_0710_01 | G2541390013-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24540_005_11SKV_20221103T074954_0710_01 | G2541390707-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24540_005_11SKT_20221103T074954_0710_01 | G2541390948-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24540_005_11SKU_20221103T074954_0710_01 | G2541391017-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24540_006_11SKV_20221103T075046_0710_01 | G2541390173-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24560_012_10SGC_20221104T151000_0710_01 | G2543733039-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24560_012_10SGD_20221104T151000_0710_01 | G2543733267-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24560_013_10SGD_20221104T151052_0710_01 | G2543738483-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24560_013_11SKT_20221104T151052_0710_01 | G2543739516-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24560_013_10SGC_20221104T151052_0710_01 | G2543740062-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24575_011_10SGD_20221105T142134_0710_01 | G2545346904-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24575_011_10SGE_20221105T142134_0710_01 | G2545347453-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24575_011_11SKV_20221105T142134_0710_01 | G2545348685-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24575_012_10SGC_20221105T142226_0710_01 | G2545349703-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24575_012_10SGD_20221105T142226_0710_01 | G2545349707-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24575_012_10SGE_20221105T142226_0710_01 | G2545350290-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24575_012_11SKV_20221105T142226_0710_01 | G2545350562-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24575_012_11SKT_20221105T142226_0710_01 | G2545350572-LPCLOUD
LPCLOUD | ECOv002_L2T_LSTE_24575_012_11SKU_20221105T142226_0710_01 | G2545351427-LPCLOUD
pprint(granules[0])
{'boxes': ['33.309906 -120.259598 34.3242 -119.044289'],
 'browse_flag': True,
 'collection_concept_id': 'C2076090826-LPCLOUD',
 'coordinate_system': 'GEODETIC',
 'data_center': 'LPCLOUD',
 'dataset_id': 'ECOSTRESS Tiled Land Surface Temperature and Emissivity '
               'Instantaneous L2 Global 70 m V002',
 'day_night_flag': 'NIGHT',
 'granule_size': '3.36234',
 'id': 'G2530780237-LPCLOUD',
 'links': [{'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_water.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/data#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_water.tif'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_water.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/s3#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_cloud.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/data#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_cloud.tif'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_cloud.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/s3#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_height.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/data#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_height.tif'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_height.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/s3#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_QC.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/data#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_QC.tif'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_QC.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/s3#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/data#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST.tif'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/s3#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST_err.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/data#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST_err.tif'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST_err.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/s3#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_EmisWB.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/data#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_EmisWB.tif'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_EmisWB.tif',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/s3#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01.json',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/metadata#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01.json '
                     '(VIEW RELATED INFORMATION)'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01.json',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/metadata#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule (VIEW RELATED INFORMATION)'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01.cmr.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/metadata#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01.cmr.xml '
                     '(EXTENDED METADATA)'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01.cmr.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/metadata#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule (EXTENDED METADATA)'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/s3credentials',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/metadata#',
            'title': 'api endpoint to retrieve temporary credentials valid for '
                     'same-region direct s3 access (VIEW RELATED INFORMATION)'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-public/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01.png',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01.png'},
           {'href': 's3://lp-prod-public/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01.png',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_water.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_water.jpeg'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_water.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_water.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_water.jpeg.aux.xml'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_water.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_cloud.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_cloud.jpeg'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_cloud.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_cloud.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_cloud.jpeg.aux.xml'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_cloud.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_height.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_height.jpeg'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_height.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_height.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_height.jpeg.aux.xml'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_height.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_QC.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_QC.jpeg'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_QC.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_QC.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_QC.jpeg.aux.xml'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_QC.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST.jpeg'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST.jpeg.aux.xml'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST_err.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST_err.jpeg'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST_err.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST_err.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST_err.jpeg.aux.xml'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_LST_err.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_EmisWB.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_EmisWB.jpeg'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_EmisWB.jpeg',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_EmisWB.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'Download '
                     'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_EmisWB.jpeg.aux.xml'},
           {'href': 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01/ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01_EmisWB.jpeg.aux.xml',
            'hreflang': 'en-US',
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/browse#',
            'title': 'This link provides direct download access via S3 to the '
                     'granule'},
           {'href': 'https://search.earthdata.nasa.gov/search?q=C2076090826-LPCLOUD',
            'hreflang': 'en-US',
            'inherited': True,
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/data#'},
           {'href': 'https://doi.org/10.5067/ECOSTRESS/ECO_L2T_LSTE.002',
            'hreflang': 'en-US',
            'inherited': True,
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/metadata#'},
           {'href': 'https://lpdaac.usgs.gov/',
            'hreflang': 'en-US',
            'inherited': True,
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/metadata#'},
           {'href': 'https://lpdaac.usgs.gov/documents/1324/ECO2_LSTE_ATBD_V1.pdf',
            'hreflang': 'en-US',
            'inherited': True,
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/documentation#'},
           {'href': 'https://lpdaac.usgs.gov/documents/380/ECO2_PSD_V1.pdf',
            'hreflang': 'en-US',
            'inherited': True,
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/documentation#'},
           {'href': 'https://lpdaac.usgs.gov/documents/299/ECO2_ASD_V1.pdf',
            'hreflang': 'en-US',
            'inherited': True,
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/documentation#'},
           {'href': 'https://lpdaac.usgs.gov/documents/1566/ECOL2-4_Grid_Tile_User_Guide_V2.pdf',
            'hreflang': 'en-US',
            'inherited': True,
            'rel': 'http://esipfed.org/ns/fedsearch/1.1/documentation#'}],
 'online_access_flag': True,
 'orbit_calculated_spatial_domains': [{'start_orbit_number': '24418',
                                       'stop_orbit_number': '24418'}],
 'original_format': 'ECHO10',
 'producer_granule_id': 'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01',
 'time_end': '2022-10-26T11:00:36.970Z',
 'time_start': '2022-10-26T10:59:45.000Z',
 'title': 'ECOv002_L2T_LSTE_24418_001_11SKT_20221026T105945_0710_01',
 'updated': '2022-10-28T10:41:15.849Z'}

Get URLs to cloud data assets

https_urls = [l['href'] for l in granules[13]['links'] if 'https' in l['href'] and '.tif' in l['href']]
https_urls
['https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_water.tif',
 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_cloud.tif',
 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_height.tif',
 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_QC.tif',
 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_LST.tif',
 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_LST_err.tif',
 'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_EmisWB.tif']
s3_urls = [l['href'] for l in granules[13]['links'] if 's3' in l['href'] and '.tif' in l['href']]
s3_urls
['s3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_water.tif',
 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_cloud.tif',
 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_height.tif',
 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_QC.tif',
 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_LST.tif',
 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_LST_err.tif',
 's3://lp-prod-protected/ECO_L2T_LSTE.002/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01/ECOv002_L2T_LSTE_24479_001_11SKU_20221030T092522_0710_01_EmisWB.tif']