earthaccess
Client library for NASA Earthdata APIs
What it is and what it does
earthaccess is a Python client library that simplifies access to NASA Earth science data by wrapping the NASA CMR (Common Metadata Repository) API and Earthdata authentication. It abstracts away the complexity of querying NASA's distributed data holdings and handles downloads from multiple storage backends—both cloud-hosted and on-premises—through a three-step workflow: login, search, and download. The library depends on fsspec for filesystem abstraction, requests for HTTP communication, s3fs for cloud storage access, and several utility packages for retry logic and metadata parsing.
The package targets researchers and data scientists who need to programmatically access satellite and Earth observation data without managing authentication tokens, API endpoints, or storage-specific download logic. It is actively maintained, supports modern Python versions (3.12 and 3.13), and carries no known security vulnerabilities. The low install friction and permissive MIT license make it accessible for both academic and commercial workflows.
Use it for:
- Retrieve ICESat-2 or MODIS data for a specific geographic region and time period in a research notebook.
- Automate batch downloads of Earth observation data for climate or land-use analysis pipelines.
- Stream remote sensing data directly into memory for real-time processing without intermediate storage.
- Build a data ingestion workflow that handles authentication and multi-source data access transparently.
- Prototype geospatial analysis without writing custom NASA API client code.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
earthaccess searches, downloads, and streams NASA Earth science data through a simple Python interface, handling authentication and data access across cloud and on-premises storage.
Yes. earthaccess is actively maintained, carries no known vulnerabilities, has low install friction, and solves a real problem for researchers needing NASA data. The MIT license is permissive, and the three-step API (login, search, download) is straightforward. Install it if you need to access NASA Earth science data programmatically; the main constraint is the Python 3.12+ requirement.
Install
earthaccess on PyPI
pip
pip install earthaccessuv
uv add earthaccesspoetry
poetry add earthaccessInstalling earthaccess
Before you install
Low install friction with a pure-Python wheel and ten runtime dependencies. The project is actively maintained with recent commits and a stable release cadence.
License in practice
MIT license permits unrestricted use, modification, and distribution with minimal restrictions, making it suitable for both open and proprietary projects.
Quickstart
pip install earthaccess
import earthaccess
earthaccess.login()
results = earthaccess.search_data(short_name='ATL06', bounding_box=(-10, 20, 10, 50))
files = earthaccess.download(results, '/tmp/data')
Requires Python 3.12 or later. NASA Earthdata account credentials needed for login and data access.
Verify before relying
- Whether authentication can be automated via environment variables or stored credentials without interactive login.
- Performance characteristics when downloading large datasets or streaming data over slow connections.
- Specific NASA data collections and formats supported beyond the ATL06 example.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.12) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 10 — fsspec, importlib-resources, multimethod, pqdm, python-cmr, requests, s3fs, tenacity, tinynetrc, typing-extensions |
| Maintenance | actively maintained — 94 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 253,694/month — #8,510 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: earthaccess-0.18.0-py3-none-any.whl
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
python-cmrProvides a Python wrapper around NASA's Common…
permissive · top 15,000 on PyPI
earthengine-apiPython client library for Google Earth Engine,…
permissive · top 15,000 on PyPI
datacubeDatacube provides an integrated gridded data…
permissive · top 15,000 on PyPI
geemapGeemap provides interactive geospatial analysis…
permissive · top 15,000 on PyPI
skyfieldSkyfield computes high-precision positions for…
permissive · top 15,000 on PyPI
geocifGenerates climatic impact drivers from Earth…
permissive · top 15,000 on PyPI
skyfield-dataProvides pre-packaged astronomical data files…
permissive · top 15,000 on PyPI
xeeXee is an Xarray backend that lets you open…
permissive · top 15,000 on PyPI
sgp4Computes satellite positions in Earth orbit…
permissive · top 5,000 on PyPI
astropy-iers-dataProvides IERS Earth Rotation and Leap Second…
permissive · top 5,000 on PyPI