A single 0–100 county crop risk score — five signals, six crop models, calibrated against USDA yield data.
One API call returns a composite Crop Stress Index for any U.S. county: a 0–100 score and plain-English rating built from drought severity, vapor pressure deficit, precipitation, soil moisture, and satellite vegetation anomaly — weighted per crop based on actual correlations with county yield outcomes.
Individual agricultural signals each capture a piece of crop risk. Drought severity reflects cumulative moisture deficit. Soil moisture shows what's actually in the root zone. VPD captures heat-driven transpiration stress. Precipitation tells you what fell. NDVI anomaly shows how the vegetation is actually responding to all of it.
Any one of these signals alone can mislead. A county in D2 drought with recently replenished soil moisture is in a very different situation from one that's been dry for 12 consecutive weeks. A wet spring followed by a high-VPD July can be more damaging than moderate drought with mild temperatures.
The Crop Stress Index combines all five signals into a single number — reducing five API calls and a manual blending step to one call that returns the aggregated view. Use the individual signal endpoints when you need to understand what's driving the score; use the index when you need to rank, screen, or alert across a portfolio.
Each of the five component signals is scored on its own scale, then combined using crop-specific weights. The weights were derived by computing Pearson correlations between each signal's growing-season summary and county-level yield deviations from trend, using USDA NASS data for 2001–2024 across roughly 40,000 county-year observations for corn alone. Only signals with a meaningful correlation (|r| ≥ 0.05) are included in each crop's model.
The API automatically selects the crop model for a county based on its dominant crop by
harvested acreage (5-year NASS average). A McLean County, IL request automatically uses the
corn model; a Lubbock County, TX request uses cotton. Counties without NASS data fall back
to the GENERAL model. The crop field in every response tells you which model
was applied.
When a signal is temporarily unavailable (e.g., NDVI is a 16-day composite with cloud gaps),
the index rescales over the available components rather than returning null. The
data_coverage_pct field tells you what share of the model's total weight was
covered by valid data — a score computed at 60% coverage should be treated with more caution
than one at 100%.
Component weights (shown below) are proportional to the absolute Pearson correlation between each signal and county yield deviations, rescaled to sum to 100 per crop. A dash (—) means the signal was excluded from that model due to insufficient correlation.
| Crop | Drought | VPD | NDVI anomaly | Precip | Soil moisture | Sample size |
|---|---|---|---|---|---|---|
| Corn | 31 | 21 | 20 | 14 | 14 | ~41k county-years |
| Soybeans | 27 | 26 | 21 | 21 | 5 | ~35k county-years |
| Winter Wheat | 35 | 26 | 39 | — | — | ~30k county-years |
| Sorghum | 31 | 22 | 29 | 18 | — | ~7k county-years |
| Cotton | 34 | 20 | 36 | — | 10 | ~9k county-years |
| General | 31 | 22 | 25 | 15 | 7 | Fallback model |
The differences are meaningful: VPD carries 26 weight for soybeans vs. 21 for corn, reflecting soybeans' acute sensitivity during pod fill. NDVI anomaly dominates the winter wheat model (39) because canopy greenness is a direct measure of crop condition in a crop that winters in the ground. Precipitation is excluded from wheat because timing matters more than cumulative total and the raw correlation was near zero.
Every score comes with a plain-English rating field:
| Score | Rating | Interpretation |
|---|---|---|
| 0–15 | minimal | No meaningful stress signals present |
| 16–30 | low | Minor stress — watch if conditions persist |
| 31–50 | moderate | Multiple signals elevated — some yield impact likely |
| 51–65 | elevated | Significant stress — meaningful yield loss risk |
| 66–80 | high | Severe stress across multiple signals |
| 81–100 | extreme | All major stress signals in critical range |
Crop insurers typically wait for adjuster reports to identify stressed counties — by which time losses have already materialized. The Crop Stress Index provides an early-warning signal: a county whose score climbs from 30 to 60 over three consecutive weeks is showing deteriorating conditions across multiple signals, not a single noisy reading.
Use the history endpoint to build a time series of index values through the growing season. Flag counties where the score has risen 20+ points in four weeks and cross-reference against the policy book to prioritize adjuster deployment before claims are filed.
A farm loan portfolio secured by agricultural land in 150 counties needs a consistent way to rank current-season risk. The Crop Stress Index gives you exactly that — one number per county, comparable across geographies, updated weekly. Sort your portfolio by score, filter to "elevated" and above, and you have a prioritized watchlist for the current season.
Combine with the /portfolio endpoint to pull the Crop Stress Index alongside
drought, soil moisture, crop progress, and NRI scores for every county in your book in a
single request.
Field-level recommendations — irrigation scheduling, fertilizer application timing, pest scouting priority — are more accurate when placed in regional context. A field that looks fine on internal sensors but sits in a county with a score of 70 is in a very different situation than one in a score-15 county. The Crop Stress Index gives AgTech platforms a reliable county-level baseline to calibrate against.
County-level crop stress during the critical growing window (corn: June–August; winter wheat: April–June) is a leading indicator of yield deviations from trend. The Crop Stress Index aggregates the same signals that professional crop scouts use into a structured, queryable API — useful for building proprietary yield forecasting models or cross-referencing with futures price moves.
Both endpoints require an API key in the X-API-Key header and a
Starter plan or above. The Crop Stress Index is not available on the
free tier.
Returns the current Crop Stress Index for a county — score, rating, crop model used, and each component's individual contribution. One request.
# Current Crop Stress Index for McLean County, IL (FIPS 17113 — top corn county) curl https://r2data2.com/county/17113/crop-stress-index \ -H "X-API-Key: agr_your_key_here"
{
"fips": "17113",
"county_name": "McLean",
"state_abbr": "IL",
"as_of": "2025-07-10",
"score": 58,
"rating": "elevated",
"crop": "CORN",
"components": {
"drought": 26,
"vpd": 11,
"precipitation": 7,
"soil_moisture": 7,
"ndvi_anomaly": 5
},
"data_coverage_pct": 100,
"model_note": null
}
The components object shows each signal's raw score on its own scale — useful
for understanding what's driving the index. In this example, drought (D2 with worsening
trajectory) is the dominant driver, with VPD and precipitation adding secondary pressure.
Returns the Crop Stress Index for each weekly USDM observation date in a date range — useful for tracking stress progression through the growing season, flagging multi-week deterioration, or building actuarial inputs for historical loss modeling.
start_date and
end_date to scope to a specific season window (e.g., June–August for corn's
critical period). Default limit is 52 weeks.
# Crop stress through corn's critical window: June–August 2024 curl "https://r2data2.com/county/17113/crop-stress-index/history?start_date=2024-06-01&end_date=2024-08-31" \ -H "X-API-Key: agr_your_key_here"
{
"fips": "17113",
"county_name": "McLean",
"state_abbr": "IL",
"crop": "CORN",
"model_note": null,
"records": [
{
"as_of": "2024-08-29",
"score": 42,
"rating": "moderate",
"components": { /* ... */ },
"data_coverage_pct": 100
}
]
}
See the Data Dictionary for the full field reference and API Docs for interactive request testing.
How is the Crop Stress Index different from just using the drought API?
Drought severity alone misses several important dimensions of crop risk. A county can be D1 drought but have recently recharged soil moisture and moderate VPD — very different from one that's been dry for 10 weeks with high heat stress. The Crop Stress Index integrates all five signals into a single score and weights them based on how well each predicted actual yield losses historically. Use drought when you need the USDM category specifically (e.g., for program triggers). Use the Crop Stress Index when you want the full risk picture in one number.
How is the crop model selected?
The model is selected automatically based on the county's dominant crop
by harvested acreage, using a 5-year average from USDA NASS data. The crop
field in every response tells you which model was applied. You cannot override it via the
API — the model is fixed to the county's primary crop to ensure the weights reflect the
actual yield relationship for that geography.
What does data_coverage_pct mean?
It's the share of the crop model's total component weight that was covered
by valid data at scoring time. If NDVI is temporarily unavailable (e.g., due to cloud cover),
the index is rescaled over the remaining components rather than returning null.
data_coverage_pct: 80 means 20% of the model's weight wasn't available —
the score is still meaningful but less certain than one at 100%.
How far back does the historical index go?
For crops that include soil moisture (corn, soybeans, cotton, general model), the index is available from April 2015 onward, when NASA SMAP began producing science-quality data. For wheat and sorghum (which don't use soil moisture), the index can be computed back to 2000 using USDM and PRISM data. Starter plans unlock 5 years of history; Growth and Pro unlock the full archive.
Why is there a model note for cotton in some states?
Cotton yield in the Southeast (Georgia, Alabama, the Carolinas, Mississippi,
Florida, Virginia, Missouri) is primarily limited by excess moisture, disease pressure, and
storm risk — not drought and heat stress. The Crop Stress Index reflects drought and heat
signals only, so its predictive value is lower in that region. The model_note
field surfaces this caveat automatically when it applies.
How often is the score updated?
The Crop Stress Index is anchored to USDM drought release dates — every Thursday. Drought is the highest-weighted component in all crop models, and the USDM releases weekly, so weekly is the natural cadence. Each Thursday evening, new scores are available for every county with sufficient data coverage.
Five signals. One score. Available on Starter plans and above.
County-level crop risk — calibrated against USDA yield data, updated every Thursday.