Guide

County-Level Soil Moisture API

NASA SMAP data aggregated to every U.S. county — for precision ag, crop insurance, and ag lending.

Daily surface soil moisture readings from NASA's SMAP satellite, aggregated from a 9 km grid to county level and delivered via a single REST API call.

Source: NASA SMAP L3 9 km  ·  Coverage: 3,100+ U.S. counties  ·  Updated: Daily (1–3 day lag)

On this page
  1. Why county-level soil moisture matters
  2. How NASA SMAP data works
  3. Use cases
  4. API endpoints & examples
  5. Frequently asked questions
  6. Get started

Why county-level soil moisture matters

Soil moisture is one of the most operationally important variables in agriculture — and one of the hardest to get at scale. Field sensors give you a point. Weather station networks have gaps. Modeled estimates carry large uncertainty. NASA's SMAP satellite covers the continental U.S. daily, but the raw data comes on a 9 km grid that doesn't map cleanly to the county boundaries used by USDA programs, crop insurance policies, and farm loan portfolios.

R2Data2 bridges that gap. We aggregate SMAP grid cells to county boundaries using precomputed area-weighted grids, add a historical anomaly z-score for each county and week of year, and serve the result via a clean REST API — updated daily with 1–3 day satellite latency.

How NASA SMAP data works

SMAP (Soil Moisture Active Passive) is a NASA Earth observation satellite launched in 2015. Its L-band radiometer measures microwave emissions from the soil surface, which are sensitive to water content in the top ~5 cm. NASA processes the raw measurements into the L3 9 km daily global product — the source R2Data2 ingests.

The satellite passes over each location twice per day: once in the early morning (~6 AM local, the AM overpass) and once in the early evening (~6 PM local, the PM overpass). Both readings are included in every API response. AM readings tend to have better accuracy because the soil surface is more thermally uniform before the sun heats it.

From grid to county

Each 9 km SMAP grid cell overlaps multiple counties — and each county overlaps multiple grid cells. R2Data2 builds a county-cell weight table from the actual intersection areas, then computes an area-weighted mean for every county each day. Counties with poor satellite coverage (e.g., heavy forest canopy or frozen soil) get a lower coverage_pct_am value, so you can filter out low-confidence readings.

Key response fields

FieldDescription
sm_mean_amMean surface soil moisture, AM overpass (m³/m³, top ~5 cm)
sm_mean_pmMean surface soil moisture, PM overpass (m³/m³)
sm_z_scoreAnomaly vs. 3-year baseline for this week of year (positive = wetter than normal, negative = drier)
vwc_amVolumetric water content, AM overpass
surface_temp_amSoil surface temperature, AM overpass (Kelvin)
freeze_thaw_amFreeze/thaw state flag — useful for filtering spring readings
coverage_pct_amPercentage of county area with valid AM retrieval — filter below 20% for quality control
cell_count_amNumber of SMAP grid cells contributing to the county average
Reading sm_z_score: A z-score of –2.0 means the county is 2 standard deviations drier than its 3-year baseline for that week of year — a meaningful signal even when the raw sm_mean_am value looks moderate. Null values indicate the baseline has low confidence (fewer than 3 years of data for that county and week).

Use cases

Precision agriculture: field-level irrigation scheduling context

On-farm soil sensors are expensive and point-specific. SMAP data gives precision ag platforms a county-level baseline to compare against — useful for calibrating sensor networks, validating model outputs, and identifying counties where regional soil moisture is diverging from field conditions. The sm_z_score field is particularly useful: it normalizes out seasonal variation so an anomaly in July is directly comparable to one in February.

Crop insurance: pre-loss soil moisture monitoring

Moisture-stressed soils in planting season correlate strongly with yield loss later in the year. Crop insurers can use R2Data2's soil moisture history to monitor policy counties through the growing season, flag counties showing multi-week negative anomalies, and support loss adjustment with objective satellite-backed data rather than adjuster notes alone.

Pair soil moisture with the drought API to get the full picture: SMAP captures surface moisture day-to-day, while the USDM drought category reflects the cumulative multi-week signal used in USDA program triggers.

Agricultural lending: soil condition risk across loan portfolios

Persistent negative soil moisture anomalies heading into planting season are an early indicator of yield stress. Ag lenders can use the soil moisture time series endpoint to monitor borrower counties through the year, compare current conditions to the 3-year baseline, and integrate soil moisture trends into annual loan review workflows alongside drought severity and crop progress data.

Climate analytics: long-term soil moisture trends

SMAP has been operational since 2015 — nearly a decade of daily county-level readings. Growth and Pro plan subscribers can pull multi-year time series and compute trends, return periods, and seasonal patterns at county resolution. Combined with PRISM precipitation data from R2Data2, it's a powerful foundation for county-level water balance modeling.

API endpoints

All soil moisture endpoints require an API key in the X-API-Key header. The free tier provides the last year of history for any county, with 100 requests/day.

County time series

The primary endpoint. Give it a FIPS code and get back daily soil moisture records — useful for charting moisture trends, computing anomaly streaks, or reviewing conditions heading into a growing season.

GET /soil-moisture/county/{fips}
# Last 14 days of soil moisture for Polk County, Iowa (FIPS 19153)
curl "https://r2data2.com/soil-moisture/county/19153?limit=14" \
  -H "X-API-Key: agr_your_key_here"
{
  "fips": "19153",
  "records": [
    {
      "fips": "19153",
      "obs_date": "2025-04-10",
      "sm_mean_am": 0.312,
      "sm_std_am": 0.041,
      "cell_count_am": 14,
      "coverage_pct_am": 87.3,
      "sm_error_am": 0.038,
      "surface_temp_am": 283.4,
      "vwc_am": 0.309,
      "freeze_thaw_am": 0.0,
      "sm_mean_pm": 0.298,
      "sm_std_pm": 0.045,
      "cell_count_pm": 13,
      "coverage_pct_pm": 81.0,
      "sm_error_pm": 0.042,
      "surface_temp_pm": 291.7,
      "vwc_pm": 0.295,
      "freeze_thaw_pm": 0.0,
      "sm_z_score": -1.43
    }
  ]
}

Use start_date and end_date query parameters for a specific date range. The limit parameter caps results (default 90, max 365). A z-score of –1.43 here means Polk County's soil is moderately drier than its 3-year baseline for mid-April.

Latest reading

Returns the single most recent SMAP record for a county. Useful as a fast status check — one request, one record, no date arithmetic needed.

GET /soil-moisture/county/{fips}/latest
# Most recent soil moisture reading for Fresno County, CA (FIPS 06019)
curl https://r2data2.com/soil-moisture/county/06019/latest \
  -H "X-API-Key: agr_your_key_here"

National snapshot

Returns all county soil moisture records for a specific date. Run this daily to power dashboards, screeners, or any workflow that needs a national view of soil conditions.

GET /soil-moisture/snapshot/{obs_date}
Growth plan required. The snapshot endpoint returns up to 3,100 county records per call. Use min_coverage_pct to filter out counties with poor satellite coverage (e.g., min_coverage_pct=20 is a reasonable quality threshold).
# All counties on 2025-04-10 with at least 20% AM coverage
curl "https://r2data2.com/soil-moisture/snapshot/2025-04-10?min_coverage_pct=20" \
  -H "X-API-Key: agr_your_key_here"
{
  "obs_date": "2025-04-10",
  "count": 2847,
  "records": [ /* array of SmapRecord objects */ ]
}

See the Data Dictionary for the full field reference and API Docs for interactive request testing.

Frequently asked questions

Where does the soil moisture data come from?

All data is sourced from NASA's SMAP (Soil Moisture Active Passive) satellite, specifically the L3 9 km daily global product. R2Data2 ingests each daily release and aggregates the grid cells to U.S. county boundaries using precomputed area-weighted grids.

How current is the data?

NASA typically publishes each day's SMAP data with a 1–3 day lag. R2Data2 ingests new releases daily at 14:30 UTC. The obs_date field reflects the actual satellite observation date, not the ingestion date.

What does sm_mean_am actually measure?

sm_mean_am is the county-area-weighted mean volumetric soil moisture content in the top ~5 cm of soil, measured in m³/m³ (cubic meters of water per cubic meter of soil). A value of 0.30 m³/m³ means 30% of the soil volume is water. Field capacity for typical agricultural soils runs roughly 0.25–0.40 m³/m³ depending on texture.

How is the sm_z_score calculated?

The z-score compares the current sm_mean_am reading to the distribution of AM soil moisture values for the same county and the same week of year, computed over a 3-year rolling baseline. A z-score of –2.0 means the county is 2 standard deviations drier than its typical mid-season value — a meaningful anomaly. The z-score is null when baseline confidence is low (insufficient data for that county and week).

Why does coverage_pct_am vary so much?

SMAP retrievals can fail or be masked for several reasons: frozen soil, heavy precipitation, dense forest canopy, radio frequency interference, or the satellite geometry for that overpass. coverage_pct_am tells you what fraction of the county's area had a valid retrieval. A county with 15% coverage should be treated with caution; 70%+ is generally reliable for agricultural applications.

How far back does the historical data go?

SMAP launched in January 2015 and began producing science-quality data in April 2015. R2Data2 stores the full archive. The free tier covers the last 365 days; Growth and Pro plans unlock multi-year history going back to 2015.

Ready to query soil moisture data?

Get a free API key in under a minute. No credit card required.
Daily SMAP readings for every U.S. county — aggregated, anomaly-scored, and ready to query.