Search nasa earthdata collections

When the user asks about NASA datasets, satellite data, Earth observation collections, or what data exists for a topic like land surface temperature, aerosols, sea ice, or soil moisture — search NASA's CMR catalog by keyword. No auth for search.

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

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

When to use this skill

When the user asks what NASA datasets exist for a topic — land surface temperature, sea ice, aerosols, soil moisture, or any Earth science keyword — reach for CMR's keyword search. CMR indexes every collection across all of NASA's DAACs, including ESA Sentinel data alongside NASA missions. For downloading individual data files, use granule search after identifying the collection. For real-time satellite imagery or weather forecasts, this is the wrong skill.

Your best first call

curl "https://cmr.earthdata.nasa.gov/search/collections.json?keyword=land+surface+temperature&page_size=2"

No auth. No key. Replace keyword with the user's search term — multi-word phrases use + as separator. Use page_size to bound the response; CMR defaults to 10 results.

The response wraps results in feed.entry[] (not a plain array). Key fields per entry:

Fallbacks (when the best call isn't enough)

Pitfalls

One-line summary for the user

I can search NASA's Earth observation data catalog for collections matching a keyword — satellite imagery, climate data, land surface temperature, aerosols — using CMR, no auth for search, but downloading files requires a free Earthdata login.

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-collections
description: When the user asks about NASA datasets, satellite data, Earth observation collections, or what data exists for a topic like land surface temperature, aerosols, sea ice, or soil moisture — search NASA's CMR catalog by keyword. No auth for search.
---

## When to use this skill

When the user asks what NASA datasets exist for a topic — land surface temperature, sea ice, aerosols, soil moisture, or any Earth science keyword — reach for CMR's keyword search. CMR indexes every collection across all of NASA's DAACs, including ESA Sentinel data alongside NASA missions. For downloading individual data files, use granule search after identifying the collection. 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/collections.json?keyword=land+surface+temperature&page_size=2"
```

No auth. No key. Replace `keyword` with the user's search term — multi-word phrases use `+` as separator. Use `page_size` to bound the response; CMR defaults to 10 results.

The response wraps results in `feed.entry[]` (not a plain array). Key fields per entry:

- `id` — concept ID (e.g., `C1748046084-LPCLOUD`). `C` prefix means collection; suffix is the DAAC code. Your key for subsequent lookups.
- `entry_id` — product short name and version: `MYD11A1_061` means product MYD11A1 at version 061. `MYD` signals Aqua satellite; `MOD` means Terra.
- `dataset_id` — full human-readable collection name.
- `short_name` — product acronym without version.
- `processing_level_id` — `"3"` means gridded time-averaged geophysical quantities; `"1B"` means calibrated raw instrument output.
- `cloud_hosted` — `true` means data is on AWS S3 for direct cloud access.

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

- **Full metadata for a specific collection** → `https://cmr.earthdata.nasa.gov/search/concepts/{concept_id}.json` — platforms, organizations, orbit parameters. Use after you have a concept ID from search.
- **Downloadable data files within a collection** → `https://cmr.earthdata.nasa.gov/search/granules.json?short_name={short_name}` — requires a collection identifier; bare granule search returns 400. Accessing files requires a free Earthdata login.

## Pitfalls

- The `.json` suffix is inconsistent. Search endpoints (`/collections.json`, `/granules.json`) require it. Metadata endpoints (`/providers`, `/tags`) return JSON by default and 404 if you append `.json`. Set `Accept: application/json` instead of memorizing which endpoints want the suffix.
- `processing_level_id` is a string, not a number. `"3"` is Level 3 (gridded averages); `"1B"` is Level 1B (calibrated radiances). Don't compare numerically.
- `cloud_hosted: true` means S3 access exists, but downloading actual files requires a free Earthdata login with the DAAC's data access policy accepted. The search is unauthenticated; the data is not.

## One-line summary for the user

I can search NASA's Earth observation data catalog for collections matching a keyword — satellite imagery, climate data, land surface temperature, aerosols — using CMR, no auth for search, but downloading files requires a free Earthdata login.

« Back to all skills