This function obtains SoilGrids properties information (250m raster resolution) given a data.frame containing site IDs, latitudes and longitudes. SoilGrids API and maps return values as whole (integer) numbers to minimize the storage space used. These values are converted by to produce conventional units by `fetchSoilGrids()``

  loc.names = c("id", "lat", "lon"),
  verbose = FALSE,
  progress = FALSE



A data.frame containing 3 columns referring to site ID, latitude and longitude.


Optional: Column names referring to site ID, latitude and longitude. Default: c("id","lat","lon")


Print messages? Default: FALSE


logical, give progress when iterating over multiple requests; Default: FALSE


A SoilProfileCollection



NameDescriptionMapped unitsConversion factorConventional units
bdodBulk density of the fine earth fractioncg/cm^3100kg/dm^3
cecCation Exchange Capacity of the soilmmol(c)/kg10cmol(c)/kg
cfvoVolumetric fraction of coarse fragments (> 2 mm)cm^3/dm^3 (vol per mil)10cm^3/100cm^3 (vol%)
clayProportion of clay particles (< 0.002 mm) in the fine earth fractiong/kg10g/100g (%)
nitrogenTotal nitrogen (N)cg/kg100g/kg
phh2oSoil pHpH*1010pH
sandProportion of sand particles (> 0.05 mm) in the fine earth fractiong/kg10g/100g (%)
siltProportion of silt particles (= 0.002 mm and = 0.05 mm) in the fine earth fractiong/kg10g/100g (%)
socSoil organic carbon content in the fine earth fractiondg/kg10g/kg
ocdOrganic carbon densityhg/m^310kg/m^3
ocsOrganic carbon stockst/ha10kg/m^2

SoilGrids predictions are made for the six standard depth intervals specified in the GlobalSoilMap IUSS working group and its specifications. The depth intervals returned are: "0-5cm", "5-15cm", "15-30cm", "30-60cm", "60-100cm", "100-200cm" and the properties returned are "bdod", "cec", "cfvo", "clay", "nitrogen", "phh2o", "sand", "silt", "soc" -- each with 5th, 50th, 95th, mean and uncertainty values. The uncertainty values are the ratio between the inter-quantile range (90% prediction interval width) and the median : (Q0.95-Q0.05)/Q0.50. Point data requests are made through properties/query endpoint of the SoilGrids v2.0 REST API. Please check ISRIC's data policy, disclaimer and citation:

Find out more information about the SoilGrids and GlobalSoilMap products here:


Poggio, L., de Sousa, L. M., Batjes, N. H., Heuvelink, G. B. M., Kempen, B., Ribeiro, E., and Rossiter, D.: SoilGrids 2.0: producing soil information for the globe with quantified spatial uncertainty, SOIL, 7, 217-240, 2021. doi:10.5194/soil-7-217-2021


Andrew G. Brown


if (FALSE) {

  your.points <- data.frame(id  = c("A", "B"), 
                           lat = c(37.9, 38.1), 
                           lon = c(-120.3, -121.5), 
                           stringsAsFactors = FALSE)
  x <- try(fetchSoilGrids(your.points))
  if (!inherits(x, 'try-error'))
   plotSPC(x, name = NA, color = "socQ50")