For anyone who ships a soils page

Soil maps you generate, not soil maps you buy per acre.

Every listing packet, appraisal, and loan file in the corn belt has a soils page in it. Most of them were bought one at a time. The underlying data is USDA SSURGO — public, national, and free. What you are actually paying for is the work of turning overlapping map units into a clean table that sums to 100%. That is the part we sell as an API.

Why this is hard

Soil maps are a per-report line item. Most teams rent them from a mapping vendor and pay per parcel, per user, or per seat — for a rendering of a public USDA dataset. The cost scales with how much you sell, which is exactly backwards.

The output is a PDF, not data. You get an image you can staple into a brochure. You cannot rank a portfolio by CSR2, filter listings by prime farmland acres, or feed the weighted average into a valuation model, because the numbers only exist inside the rendered page.

SSURGO is not a table you can just join. Map unit polygons overlap, components aggregate three different ways, and the productivity indices live in separate tables from the geometry. Getting from raw SSURGO to "53.3% Canisteo, CSR2 84" is the whole job.

The vendor's template is the vendor's brand. Their logo, their layout, their column choices, their footer. If you want your own report inside your own product, you are asking a mapping company to white-label their core product.

Coverage stops where their business stopped. Soil maps are solved for Iowa row crop and thin everywhere else — and the moment you underwrite outside the corn belt you are back to manually pulling Web Soil Survey.

What changes

One call returns the soils inside any boundary you can draw. You own the template it renders into — including the one on the right, which is generated live from the API on this page.

You're doing this today
With the LMM API
Per-report fee to a mapping vendor
One AOI call — soils for any boundary you can draw
A PDF you cannot query
JSON rows: acres, percent, CSR2, NCCPI, drainage, farmland class
Weighted average printed on a page
Weighted average you compute, store, and sort a portfolio by
Their logo on your listing packet
Your template, your brand, your columns
Iowa CSR2 only
CSR2, NCCPI, capability class, and state indices nationwide
Manual Web Soil Survey exports
Same call for every parcel you touch, listed or not

Live document

Generated from the API, right now

Pick a tract in Iowa, Indiana, or Ohio. Every acre, percentage, and index below comes back from a single AOI call — nothing on this page is hard-coded.

Soils Map

507956138B556

Soils data provided by USDA and NRCS.

Area Symbol: IA091, Soil Area Version: 31
CodeSoil DescriptionAcresPercent
of field
CSR2
Legend
*m Corn
Bu
*m Soybeans
Bu
*m Alfalfa
Tons
Non-Irr
Class
CSR2***n NCCPI
Overall
*n NCCPI
Corn
*n NCCPI
Soybeans
507Canisteo clay loam, 0 to 2 percent slopes82.6353.6%
222.367.25.4284827082
956Harps-Okoboji complex, 0 to 2 percent slopes51.7733.6%
183.554.74.5269807179
138BClarion loam, 2 to 6 percent slopes15.049.8%
241.771.55.9289837983
55Nicollet clay loam, 1 to 3 percent slopes3.702.4%
243.371.16.0189818181
6Okoboji silty clay loam, 0 to 1 percent slopes1.020.7%
158.745.93.9359767572
Weighted Average154.16100.0%211.263.45.279.4*n 81.4*n 71.5*n 81.0

**IA has updated the CSR values for each county to CSR2.

*m Yields are modeled by LandMapMagic from CSR2 and NCCPI, not drawn from ISPAID. Treat them as a relative productivity signal, not an agronomic forecast.

*n: The aggregation method is "Weighted Average using all components".

Acres and percent of field are computed by clipping each SSURGO map unit to the tract boundary and resolving overlapping map units so the parcel totals 100%.

Prime farmland: 101.37 of 154.16 acres (65.8%). Source: LandMapMagic AOI.

Soils data provided by USDA and NRCS.

Tract acres

154.16

Weighted CSR2

79.4

5 map units

Prime farmland

101.4 ac

66% of tract

Weighted NCCPI

81.4

The same call renders a page or feeds a model

The document above is one consumer of the response. The other is your database. Because the soils come back as rows rather than a rendered image, the weighted rating on that page is the same number you can sort a 400-tract portfolio by.

Response (truncated)

{
  "state": "IA",
  "acres": 154.16,
  "weighted_csr2": 79.4,
  "weighted_nccpi": 81.4,
  "prime_farmland_acres": 101.37,
  "soils": [
    {
      "code": "507",
      "muname": "Canisteo clay loam, 0 to 2 percent slopes",
      "acres": 82.63,
      "percent_of_field": 53.6,
      "csr2": 84,
      "nccpi": 82,
      "drainage_class": "Poorly drained",
      "farmland_class": "Prime farmland if drained"
    },
    {
      "code": "956",
      "muname": "Harps-Okoboji complex, 0 to 2 percent slopes",
      "acres": 51.77,
      "percent_of_field": 33.6,
      "csr2": 69,
      "nccpi": 80,
      "drainage_class": "Poorly drained",
      "farmland_class": "Farmland of statewide importance"
    },
    {
      "code": "138B",
      "muname": "Clarion loam, 2 to 6 percent slopes",
      "acres": 15.04,
      "percent_of_field": 9.8,
      "csr2": 89,
      "nccpi": 83,
      "drainage_class": "Moderately well drained",
      "farmland_class": "All areas are prime farmland"
    }
  ]
}

Productivity legend

90 – 100
80 – 89
70 – 79
60 – 69
50 – 59
35 – 49
< 35

Iowa is coloured by CSR2. Indiana and Ohio publish no state rating, so the same ramp is driven by NCCPI — which is why the tract selector above crosses state lines.

What we do to the raw data

  • Clip every map unit to your boundary, not to the tile it arrived in
  • Resolve overlapping units so inclusions sit on top and acres total the tract
  • Join productivity indices from the component and horizon tables
  • Area-weight CSR2, NCCPI, and farmland class across the whole parcel

Who ships this

Land brokers & auction companies

Put a soils page in every listing packet without a per-report invoice. Generate it the moment a listing is created, not when someone remembers to order one.

Farm management & appraisal

Weighted CSR2 and prime farmland acres for every tract under management, refreshed on the same schedule as the rest of your data — and exportable into the valuation model you already run.

Ag software & fintech

Drop a soils tab into your product. Lenders want productivity indices behind a loan; agronomy platforms want drainage class and available water behind a recommendation.

Built to sit under your stack

We are not selling you a report template. The template on this page is example code — the product is the endpoint underneath it. Keep your own layout, your own branding, and your own column choices.

Your output

listing packet · appraisal exhibit · loan file · portfolio dashboard

LandMapMagic API

POST /v1/data/aoi · layers: ["ssurgo"] · 10 tokens per request

Source data

USDA NRCS SSURGO · CSR2 · NCCPI · capability class · state productivity indices

Run your own tracts

Send us three or four boundaries you already have soil maps for. We will run them through the API and hand back a side-by-side against the reports you paid for.

If the acres and the weighted rating line up, you already know what the per-report fee was buying.