search nasa earth science granules via the common metadata repository (cmr) api
domain: cmr.earthdata.nasa.gov · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Call GET https://cmr.earthdata.nasa.gov/search/granules.json (or .umm_json/.stac) with query params like short_name, collection_concept_id, temporal, bounding_box/polygon, and page_size.
First resolve a dataset's collection_concept_id (or short_name+version) via the /search/collections endpoint if you don't already know it.
For large result sets, read the CMR-Search-After response header and pass it back as the CMR-Search-After request header on the next call to page through results instead of relying on page_num alone.
Choose an output format suited to your use (.json for simple granule metadata, .umm_json for the full UMM schema, or .stac for a STAC-compatible FeatureCollection).
For most Earthdata collections you'll also need a NASA Earthdata Login (EDL) bearer token to actually download the granule data referenced by search results, even though search itself may be unauthenticated for public collections.
Known gotchas
CMR indexes metadata across many DAACs with differing collection schemas — field availability (cloud cover, day/night flag, etc.) varies by dataset, so don't assume a uniform granule schema.
Deep pagination via page_num beyond CMR's supported depth can fail or be slow; use the CMR-Search-After header pattern for exhaustive large-scale harvesting.
Search results give granule metadata and download links, not the data bytes — downloads typically require an authenticated Earthdata Login session even when search queries don't.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?