Search nasa earthdata

When the user asks to find NASA satellite data — Sentinel, MODIS, Landsat, or any Earth observation dataset — by region, time period, platform, or keyword, search the CMR API for collections and data files. No auth needed for search.

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

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

When to use this skill

When the user asks to find NASA satellite data — Sentinel-1 radar imagery, MODIS land surface temperature, Landsat scenes, or any Earth observation dataset — by region, time period, platform, or topic. CMR is a metadata catalog: you get pointers to data files and download links, not the data itself. For weather forecasts, use a weather API instead. For downloading the actual files, the user needs a free Earthdata login (separate from CMR search, which needs no auth).

Your best first call

curl "https://cmr.earthdata.nasa.gov/search/granules.json?short_name=SENTINEL-1A_SLC&bounding_box=-122.5,37.5,-122.0,38.0&temporal=2014-10-01T00:00:00Z,2014-10-31T23:59:59Z&page_size=5"

No auth needed for search. Use granules.json when you know the dataset's short name. The three narrowing parameters that matter most are short_name (which dataset), bounding_box (SW_lon,SW_lat,NE_lon,NE_lat), and temporal (start,end in ISO 8601). Sentinel-1 SLC is radar, not optical — the polygons field returns an irregular quadrilateral footprint rather than a rectangle, and individual scenes run ~4 GB.

The response is a JSON feed with an entry array. Key fields:

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

Pitfalls

One-line summary for the user

I can search NASA's Earth observation metadata catalog for satellite datasets and data files by topic, region, platform, and time period using the CMR API — no auth needed for search, but downloading data requires a free Earthdata login.

APIs this skill uses

NASA Earthdata API · primary · verified

NASA Earthdata API provides access to Earth observation data through the Common Metadata Repository (CMR). This API includes CMR Search for discovering datasets (collections) and data files (granules), as well as STAC (SpatioTemporal Asset …

Generated from

NASA Earthdata API tutorial Getting Started with NASA Earthdata

SKILL.md source (frontmatter + body)
---
name: search-nasa-earthdata
description: When the user asks to find NASA satellite data — Sentinel, MODIS, Landsat, or any Earth observation dataset — by region, time period, platform, or keyword, search the CMR API for collections and data files. No auth needed for search.
---

## When to use this skill

When the user asks to find NASA satellite data — Sentinel-1 radar imagery, MODIS land surface temperature, Landsat scenes, or any Earth observation dataset — by region, time period, platform, or topic. CMR is a metadata catalog: you get pointers to data files and download links, not the data itself. For weather forecasts, use a weather API instead. For downloading the actual files, the user needs a free Earthdata login (separate from CMR search, which needs no auth).

## Your best first call

```bash
curl "https://cmr.earthdata.nasa.gov/search/granules.json?short_name=SENTINEL-1A_SLC&bounding_box=-122.5,37.5,-122.0,38.0&temporal=2014-10-01T00:00:00Z,2014-10-31T23:59:59Z&page_size=5"
```

No auth needed for search. Use `granules.json` when you know the dataset's short name. The three narrowing parameters that matter most are `short_name` (which dataset), `bounding_box` (`SW_lon,SW_lat,NE_lon,NE_lat`), and `temporal` (start,end in ISO 8601). Sentinel-1 SLC is radar, not optical — the `polygons` field returns an irregular quadrilateral footprint rather than a rectangle, and individual scenes run ~4 GB.

The response is a JSON feed with an `entry` array. Key fields:

- `producer_granule_id` — scene identifier
- `time_start`, `time_end` — acquisition time window
- `granule_size` — file size in megabytes
- `polygons` — ground footprint as coordinate pairs (irregular for SAR imagery)
- `links` — array with `rel` and `href`; filter for `rel` containing `data#` to get download URLs
- `online_access_flag` — `true` means the data is publicly downloadable (with Earthdata login)

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

- **Don't know the dataset short name** → `collections.json?keyword=land+surface+temperature&bounding_box=-110,39.5,-105,40.5` discovers datasets by topic and region. The `entry_id` gives you short name plus version; strip the version suffix (`MOD11A1_061` → `MOD11A1`) for use in granule queries.
- **Don't know what keyword or parameter to use** → `autocomplete?q=MODIS` maps a partial term to CMR's controlled vocabulary. Each `type` value (`instrument`, `project`, `science_keywords`, `organization`) maps to a different query parameter.
- **Need to download the actual data files** → CMR search needs no auth, but the download links in `links` require a free NASA Earthdata login at `urs.earthdata.nasa.gov`.

## Pitfalls

- `entry_id` includes the version but `short_name` does not. A collection's `entry_id` is `MOD11A1_061`; its `short_name` (used in granule queries) is `MOD11A1`. Using the full `entry_id` as `short_name` returns zero results.
- `bounding_box` uses `SW_lon,SW_lat,NE_lon,NE_lat` — longitude first, then latitude. Swapping the order puts your query in the wrong hemisphere.
- `granules.json` with no collection filter (`short_name`, `concept_id`, or `provider`) returns empty results or a 400 error. Always narrow by collection first.
- Append `.json` to search paths. Without it, CMR returns HTML or Atom XML. `collections` → `collections.json`, `granules` → `granules.json`.

## One-line summary for the user

I can search NASA's Earth observation metadata catalog for satellite datasets and data files by topic, region, platform, and time period using the CMR API — no auth needed for search, but downloading data requires a free Earthdata login.

« Back to all skills