How We Built MySoilType: USDA Soil Data for Every US Zip Code
Every gardener and homeowner eventually asks the same question: what kind of soil do I have? We built MySoilType to answer that question for every zip code in the United States.
The Problem
The USDA maintains the Web Soil Survey — an incredible dataset covering soil composition across the entire country. But it's complex. Really complex. Navigating it requires GIS knowledge, and extracting actionable gardening advice from raw soil taxonomy data is anything but intuitive.
We wanted to bridge that gap: take the USDA's soil survey data and turn it into something a homeowner could actually use.
Architecture Decisions
Zero Database, 35,000+ Pages
MySoilType serves data for every US zip code, every state, every county, and every soil type. That's nearly 35,000 pages. Instead of a database, we use pre-processed JSON files.
Each zip code has a data file containing:
- Dominant soil type and texture
- pH range
- Drainage classification
- USDA Hardiness Zone
- Soil composition percentages (sand, silt, clay)
The entire dataset was pre-processed from USDA NRCS data. At runtime, PHP reads the JSON file, applies the template, and returns HTML. No database queries, no API calls.
Performance
The result is fast. Sub-second page loads without any CDN or caching layer (though we use Cloudflare for edge caching). The PHP process reads a 2KB JSON file, renders the template, and responds.
Plant Recommendations
One feature that users love is the personalized plant guide. Based on your zip code's soil type, pH, and hardiness zone, we recommend plants that will actually thrive in your specific conditions.
This isn't a simple lookup table. We cross-reference:
- Soil type tolerance (does the plant handle clay? sandy soil?)
- pH preference (acid-loving vs alkaline-tolerant)
- Hardiness zone (can it survive your winters?)
- Drainage requirements (does it need well-drained soil?)
SEO Architecture
We organized content into natural clusters:
- By zip code: mysoiltype.com/zip/90210 (individual location pages)
- By county: mysoiltype.com/county/los-angeles-ca (aggregated county data)
- By state: mysoiltype.com/state/california (state-level overview)
- By soil type: mysoiltype.com/soil/clay (soil type deep-dive)
Each cluster type serves a different search intent. Someone searching "soil type 90210" wants their specific data. Someone searching "clay soil gardening" wants general advice.
Data Processing Pipeline
The raw USDA data is messy. Here is what our processing pipeline handles:
- SSURGO data extraction — Download soil survey geographic database
- Component mapping — Map soil components to dominant types per area
- Zip code overlay — Cross-reference soil polygons with zip code boundaries
- Aggregation — Calculate dominant soil type, average pH, and drainage class per zip
- Plant matching — Cross-reference with our plant database for recommendations
The entire pipeline runs as a batch process. We re-process quarterly when the USDA updates their data.
What is Working
After 3 months:
- 35,000+ pages indexed and growing
- 30+ daily organic clicks
- Users spending 2-3 minutes per visit (exploring their local soil data)
- Strong featured snippet capture for "soil type [zip code]" queries
Lessons Learned
Programmatic SEO works when there is real value — Each page is genuinely unique because every zip code has different soil. This is not thin content — it is location-specific data that does not exist elsewhere in this format.
Schema markup matters for data-heavy pages — We use
DatasetandFAQPageschema on every page. Google's understanding of the content improved noticeably after adding structured data.Internal linking at scale requires automation — With 35,000 pages, manual interlinking is impossible. We automated county-to-zip and state-to-county links programmatically.
Check your soil type at MySoilType.com — it is free and covers every US zip code.
Top comments (0)