Search nasa earthdata granules

When the user wants to find downloadable NASA Earth observation data files (granules) within a known dataset — satellite imagery tiles, climate files, land surface temperature, atmospheric data — search NASA's CMR by collection short name with spatial and temporal filters.

search-nasa-earthdata-granules · v1 · updated 2026-04-16

Agents: This page is a SKILL.md-style capability guide. For JSON, call GET /api/skills/search-nasa-earthdata-granules. To drop this into a local Claude Code install, copy the frontmatter + body below into ~/.claude/skills/search-nasa-earthdata-granules/SKILL.md.

When to use this skill

When the user wants to find downloadable NASA Earth observation data files (granules) within a known dataset — satellite imagery tiles, climate reanalysis files, land surface temperature grids, atmospheric measurements. You need a collection short name (like MYD11A1) or concept ID (like C1748046084-LPCLOUD) to search granules; the API rejects bare queries. For discovering what datasets exist, use a collection search instead. For real-time satellite imagery or weather forecasts, this is the wrong skill.

Your best first call

curl "https://cmr.earthdata.nasa.gov/search/granules.json?short_name=MYD11A1&page_size=10"

No auth for search queries. Downloading the actual data files requires a free NASA Earthdata login with the relevant DAAC's data access policy accepted.

Results come wrapped in feed.entry[] — not a plain array. Key fields per granule:

Narrow further with temporal[] (ISO date range), bounding_box (lat/lon rectangle), or point (single coordinate).

Fallbacks (when the best call isn't enough)

Pitfalls

One-line summary for the user

I can search NASA's Earthdata CMR for individual data files (granules) within a known collection by short name, with spatial and temporal filters — but you'll need a free Earthdata login to download the actual files.

APIs this skill uses

NASA Earthdata CMR API · primary · verified

NASA Common Metadata Repository (CMR) API for searching Earth observation data collections and granules. Provides access to satellite imagery, climate data, and geospatial datasets from NASA's Earth Observing System Data and Information Sys…

Generated from

NASA Earthdata CMR API tutorial Getting Started with NASA Earthdata CMR

SKILL.md source (frontmatter + body)
---
name: search-nasa-earthdata-granules
description: When the user wants to find downloadable NASA Earth observation data files (granules) within a known dataset — satellite imagery tiles, climate files, land surface temperature, atmospheric data — search NASA's CMR by collection short name with spatial and temporal filters.
---

## When to use this skill

When the user wants to find downloadable NASA Earth observation data files (granules) within a known dataset — satellite imagery tiles, climate reanalysis files, land surface temperature grids, atmospheric measurements. You need a collection short name (like `MYD11A1`) or concept ID (like `C1748046084-LPCLOUD`) to search granules; the API rejects bare queries. For discovering what datasets exist, use a collection search instead. For real-time satellite imagery or weather forecasts, this is the wrong skill.

## Your best first call

```bash
curl "https://cmr.earthdata.nasa.gov/search/granules.json?short_name=MYD11A1&page_size=10"
```

No auth for search queries. Downloading the actual data files requires a free NASA Earthdata login with the relevant DAAC's data access policy accepted.

Results come wrapped in `feed.entry[]` — not a plain array. Key fields per granule:

- `producer_granule_id` — full filename encoding date and tile (e.g. `MYD11A1.A2002185.h20v05.061.2020128174702`, where `A2002185` = day 185 of 2002 and `h20v05` is a sinusoidal tile over West Africa)
- `time_start`, `time_end` — temporal coverage
- `cloud_cover` — percentage of the tile obscured by clouds (optical/thermal sensors like MODIS only)
- `granule_size` — file size in MB
- `online_access_flag` — whether direct download links exist
- `links[].href` — URLs pointing to data files on NASA's Earthdata Cloud (AWS S3)

Narrow further with `temporal[]` (ISO date range), `bounding_box` (lat/lon rectangle), or `point` (single coordinate).

## Fallbacks (when the best call isn't enough)

- **You don't know the collection short name yet** → Search collections at `/search/collections.json?keyword=land+surface+temperature`, then use the returned `short_name` or `id` to narrow your granule search.
- **You need full collection metadata (processing level, platforms, organizations)** → Use `/search/concepts/{concept_id}.json` with the concept ID from a collection search.

## Pitfalls

- **Bare granule searches return 400.** You must include at least one collection filter (`short_name`, `collection_concept_id`, or `provider`). The API will not search across all granules in all collections.
- **The `.json` suffix is inconsistent.** Search endpoints require `.json` for JSON output; metadata endpoints (`/providers`, `/tags`) return JSON by default and 404 if you append `.json`.
- **Three endpoint families, three response shapes.** Collections and granules wrap results in `feed.entry[]`; concept lookups return the object directly; provider/tag listings use `items[]` with a separate `hits` count.
- **Concept IDs encode entity type.** `C` prefix = collection, `G` = granule, `V` = variable. The suffix after the dash is the DAAC code (`LPCLOUD`, `LAADS`, `GES_DISC`).

## One-line summary for the user

I can search NASA's Earthdata CMR for individual data files (granules) within a known collection by short name, with spatial and temporal filters — but you'll need a free Earthdata login to download the actual files.

« Back to all skills