---
name: nasa-power-ingestion
description: "How to get NASA POWER (Prediction Of Worldwide Energy Resources) API data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load NASA POWER daily weather into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/nasa-power
Provider: https://power.larc.nasa.gov/docs/
Checked against the provider's documentation: 2026-10-30

## Access
- No account or API key parameter is documented for this public endpoint.
- Observed 2026-10-30: the daily point request completed without credentials.

## Request
```bash
curl 'https://power.larc.nasa.gov/api/temporal/daily/point?parameters=T2M%2CPRECTOTCORR&community=AG&longitude=-87.63&latitude=41.88&start=20261001&end=20261007&format=JSON'
```

## Format
JSON feature with properties.parameter keyed by parameter and YYYYMMDD, plus units, source and header metadata. The fill_value header is -999.0.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""NASA POWER daily temperature and precipitation for Chicago -> pandas -> Parquet. No key."""
import requests
import pandas as pd

URL = "https://power.larc.nasa.gov/api/temporal/daily/point"
params = {"parameters": "T2M,PRECTOTCORR", "community": "AG", "longitude": -87.63,
          "latitude": 41.88, "start": "20261001", "end": "20261007", "format": "JSON"}
r = requests.get(URL, params=params, timeout=60)
r.raise_for_status()
values = r.json()["properties"]["parameter"]
df = pd.DataFrame(values).rename_axis("date").reset_index()
df["date"] = pd.to_datetime(df["date"], format="%Y%m%d", utc=True)
df[["T2M", "PRECTOTCORR"]] = df[["T2M", "PRECTOTCORR"]].replace(-999, pd.NA)
df.to_parquet("nasa_power_chicago_daily.parquet", index=False)
print(len(df), "daily rows", df["date"].min().date(), "to", df["date"].max().date(),
      "missing values", int(df[["T2M", "PRECTOTCORR"]].isna().sum().sum()))
```
Run by us on 2026-10-30 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 7 daily rows 2026-10-01 to 2026-10-07 missing values 0

## Limits
- Rate limit: Not stated.
- A daily single-point request accepts at most 20 parameters; a regional request accepts one.
- Repeated requests for the same relative grid location can be blocked.

## Quirks
- Replace the API fill value -999 with a missing value before calculations.
- Daily data default to local solar time; add time-standard=UTC when civil-day alignment matters.
- Parameter resolution, source and near-real-time latency vary; retain response metadata and units.

## Terms and attribution
- NASA Earthdata says NASA-sponsored data and information are available to all users and encourages citation and acknowledgment.
- For a publication, include the POWER reference, data reference, service name, version and access date.
- Terms page: https://www.earthdata.nasa.gov/engage/open-data-services-software-policies

## Sources
- https://power.larc.nasa.gov/docs/services/api/temporal/daily/: "The Daily microservice API returns time series analysis-ready data responses for solar and meteorological data to be used directly by applications."
- https://power.larc.nasa.gov/docs/services/api/temporal/daily/: "A maximum of 20 parameters can currently be requested in one submission for a single point. Regional requests are limited to one parameter."
- https://www.earthdata.nasa.gov/engage/open-data-services-software-policies: "NASA's free and open data use guidance states that data and information generated under NASA sponsorship are available to all users."
- https://power.larc.nasa.gov/docs/referencing/: "When POWER data products are used in a publication include both POWER 's Reference and POWER 's Data Reference in any work product or publication"

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
