Select to view content in your preferred language

Find SSURGO data for a location

2264
3
06-24-2024 11:49 PM
DivyaArora
Emerging Contributor

We need to get the soil data like soil classification, soil nutrients and GDD data for a particular location (Lat, Long). Is it Possible to get it from some API exposed by ESRI or some other way.

Any help would be appreciated.

0 Kudos
3 Replies
jcarlson
MVP Alum

You can also get it directly from the USDA. They've really been improving the methods for accessing the data.

https://www.nrcs.usda.gov/resources/data-and-reports/ssurgo-portal

And as @numbrkar mentions, the Living Atlas layer can be useful as well. If you just want to get attributes based on a point location, the query endpoint would be ideal.

- Josh Carlson
Kendall County GIS
Alena
by
Regular Contributor

USDA - NRCS has a API called Soil Data Access where you can submit SQL queries to the national database remotely.

You could also look at how it is called within some of the application.

 https://github.com/ncss-tech/SSURGOOnDemandArcPro

There are other data options available also.

0 Kudos
apzaldivar
New Contributor

You can pull this straight from USDA's Soil Data Access (SDA) without going through Web Soil Survey or standing up an ArcGIS query. SDA takes T-SQL over HTTP — POST to
https://SDMDataAccess.sc.egov.usda.gov/Tabular/post.rest. Coordinate → map unit (note: lon-then-lat inside point(), WGS84):

SELECT mukey FROM SDA_Get_Mukey_from_intersection_with_WktWgs84('point(-93.65 42.03)')



That gives you the mukey. For actual properties (pH, AWC, organic matter at a depth window) you then join mapunit → component → chorizon and depth-weight the horizons.
Heads-up: SDA queries can hang ~a minute and there are 100k-row / 32MB caps, so chunk large jobs.

If you just want clean JSON per coordinate without writing the SQL or wiring up an ArcGIS query — I built a free wrapper for exactly this (disclosure: it's mine, free while I
see if it's useful to anyone):

curl "https://soilpoint.dev/v1/soil?lat=42.03&lon=-93.65"

returns:

{"soilSeries":"Nicollet","mapUnitName":"Nicollet loam, 1 to 3 percent slopes","texture":"Loam","drainageClass":"Somewhat poorly
drained","hydrologicGroup":"B/D","ph":6.2,"awc":0.21,"organicMatter":5.3,"depthWindowCm":[0,30],"dataVintage":"2025-09-09"}


It returns soil series / texture / drainage / hydrologic group / pH / AWC / organic matter for the dominant component. Two honest caveats for your use case: it does NOT do
GDD (that's climate, not soil — different dataset) or detailed nutrient panels beyond OM/pH. And it's US-only (SSURGO coverage), 0–30 cm values are best-effort, as-is / not
for regulatory use. It caches + stale-serves when SDA is flaky. Live "try it" box at https://soilpoint.dev/?utm_source=esri — and it returns honest nulls for non-soil map
units (urban land, water).

0 Kudos