Climate-aware planting
Six climate types, anchored to your real frost dates. Maritime 8b sows tomato in May; humid subtropical 8b sows it in March. CropGraph knows.
GET /api/planting ?lat=48.118&lng=-123.43 → "climateType": "maritime"
One call. Six dimensions. The complete garden plan for any US coordinate. Zone, climate, soil, planting windows, growing-degree-day harvest prediction, succession, rotation, pests, and bed-level companion analysis. 5,006 crops, 605 relationships, 120 GDD models. Free, no key, no signup.
No other API has the graph to power this. Hand it a coordinate and a crop list; get the full traversal back: hardiness zone, climate type, frost dates, USDA SSURGO soil profile, climate-aware planting windows, GDD-based harvest prediction, succession chains, rotation families, top pests with organic management, and bed-level companion and antagonist analysis. A garden-app developer makes one fetch and ships.
$ curl "https://api.cropgraph.com/api/garden-plan?lat=48.118&lng=-123.43&crops=tomato,basil,bush-bean,carrot,kale"
{
"location": {
"coordinates": { "lat": 48.118, "lng": -123.43 },
"zone": "8b",
"climateType": "maritime",
"frostDates": { "lastSpring": "03-15", "firstFall": "11-30" },
"seasonDays": 260,
"soil": {
"soilType": "Clallam gravelly sandy loam",
"drainageClass": "Moderately well drained",
"texture": "sandy loam",
"ph": { "min": 5.8, "max": 5.8 },
"organicMatter": "moderate"
}
},
"crops": [
{
"slug": "tomato",
"planting": { "action": "start_indoors", "windowStart": "2026-01-04", "windowEnd": "2026-02-01" },
"harvest": {
"estimatedHarvestDate": "2026-07-29",
"latestHarvestDate": "2026-09-01",
"gddBased": true,
"gddAccumulated": 1205,
"confidence": "moderate"
},
"succession": { "hasChain": false, "summary": "Single planting, no succession needed" },
"rotation": { "family": "nightshades", "rotationYears": 3, "followWith": ["legumes", "grasses", "alliums"] },
"pests": [
{ "pest": "late-blight", "severity": "severe", "topManagement": "Copper preventive on the 5-day forecast" },
{ "pest": "tomato-hornworm", "severity": "high", "topManagement": "Handpick + Bt spray" }
],
"soilNotes": "Slightly acidic; nightshades prefer pH 6.0 to 6.8. Add calcium (lime or gypsum) to reduce blossom end rot risk."
},
{ "slug": "basil", "harvest": { "estimatedHarvestDate": "2026-07-15", "gddBased": true }, ... },
{ "slug": "bush-bean", ... },
{ "slug": "carrot", ... },
{ "slug": "kale", ... }
],
"bedAnalysis": {
"companions": [
{ "a": "tomato", "b": "basil", "mechanism": "pest_repellent", "strength": "strong" },
{ "a": "carrot", "b": "bush-bean", "mechanism": "nitrogen_fixing", "strength": "moderate" }
],
"antagonists": [],
"warnings": [],
"rotationConflicts": []
},
"source": "CropGraph v1.5. USDA Cooperative Extension, NRCS SSURGO, NOAA Climate Normals 1991-2020."
}
CropGraph models the dimensions every garden app needs and most APIs fold into a single ambiguous list.
Six climate types, anchored to your real frost dates. Maritime 8b sows tomato in May; humid subtropical 8b sows it in March. CropGraph knows.
GET /api/planting ?lat=48.118&lng=-123.43 → "climateType": "maritime"
605 directed relationships with cited mechanism (pest repellent, nitrogen fixation, shade) and strength (strong, moderate, weak). Read like a graph.
GET /api/companions/tomato → "mechanism": "pest_repellent" "strength": "strong"
Pass a list of crops, get every pairwise relationship deduplicated, plus warnings when one crop is antagonist to too many neighbors.
GET /api/plan?crops= tomato,basil,marigold,fennel → "warnings": [ "fennel-herb" ]
12 botanical families covering every crop in the calendar. Year-gap rules, follow-with families, never-follow families, all cited. Validate a 3-5 year bed plan in one call.
cropgraph rotation tomato → "family": "nightshades" "rotationYears": 3
33 time-sequenced planting chains. Greens cycles, root cadences, legume relays, brassica spring/fall, cucurbit replacements, herb succession, cut-flower staggers, cover-crop relays. Frost-anchored phases with per-climate notes.
cropgraph succession lettuce --zone 8b --climate maritime → "phase 1": "every 2 weeks" "windowStart": "2026-02-15"
158 crop-to-pest associations with diagnostic symptoms, ordered organic management, prevention practices, and regions. OMRI-listed materials and biocontrols only. Sourced from Cornell, UC IPM, UF/IFAS, Penn State, OSU, WSU, and Texas A&M Extensions.
cropgraph pests tomato → "late-blight": "severe" "manage": "copper preventive"
SSURGO soil data resolved by coordinate. Soil series, drainage class, texture, pH range, organic matter, rooting depth, and crop-aware recommendations. Sourced live from USDA NRCS Soil Data Access, attributed on every response.
GET /api/soil?lat=48.118&lng=-123.43 → "soilType": "Clallam gravelly sandy loam" "ph": { "min": 5.8, "max": 5.8 }
65 literature-grounded GDD models from Purdue, Cornell, UC Davis, USDA-ARS, OSU, and WSU Extension. Predicts earliest and latest harvest dates by walking NOAA Climate Normals 1991-2020 month-by-month for any US coordinate. Falls back automatically when no live weather is supplied, so the prediction works offline.
GET /api/gdd?crop=tomato &lat=48.118&lng=-123.43&plant_date=2026-05-15 → "estimatedHarvestEarliest": "2026-08-07" "estimatedHarvestLatest": "2026-09-13" "totalGddEarliest": 1210
5,006 curated crops across 14 categories sourced from USDA Cooperative Extension publications, USDA-ARS breeding records, Native Seeds/SEARCH heritage collections, and university breeder programs. Every entry includes days to harvest, frost-anchored sowing windows, growing context, minimum soil temperature, zone range, and source citation. Named cultivars across tomato, pepper, apple, grape, blueberry, raspberry, strawberry, pear, peach, plum, melon, watermelon, bean, pea, corn, squash, lettuce, carrot, onion, garlic.
605 companion and antagonist relationships with cited mechanisms. 12 rotation families covering every crop with year-gap rules. 33 succession chains for continuous-harvest scheduling. 158 pest/disease associations with organic management and prevention. 120 growing degree day models with cultivar-specific heat-unit ranges. 120 crops carry climate-specific modifiers across 6 climate types.
Edit any field, hit Run. Real requests against api.cropgraph.com. The six tabs below are a sampler; the full surface is in /docs and the table beneath.
No versioning, no deprecation calendar, no breaking changes without notice. Full reference at /docs.
| Endpoint | Description | Try it |
|---|---|---|
| GET /api/zone | USDA hardiness zone, climate type, frost dates, season length. | ?lat=48.118&lng=-123.43 |
| GET /api/planting | What to plant right now. Climate-aware. Enriched with companions. | ?lat=48.118&lng=-123.43 |
| GET /api/crop/:slug | Full crop record with companions and antagonists. | /tomato |
| GET /api/companions/:slug | Companions plus antagonists, with cited mechanism and strength. | /tomato |
| GET /api/check | Edge between two crops. Returns found: false when no relationship exists. | ?a=tomato&b=basil |
| GET /api/plan | Bed compatibility report for a list of crops, with antagonist warnings. | ?crops=tomato,basil… |
| GET /api/crops | Filter and list crops by category, season, zone. | ?category=herb&zone=8b |
| GET /api/search | Fuzzy search across slug, common name, scientific name, aliases. | ?q=pepper |
| GET /api/rotation/:slug | Rotation family, year-gap, follow-with and never-follow families for a crop. | /tomato |
| GET /api/rotation-check | Validate a multi-year planting sequence against family rotation rules. | ?sequence=tomato,bush-bean… |
| GET /api/succession/:slug | Frost-anchored succession chain for a crop or chain slug. | /lettuce-leaf |
| GET /api/succession-plan | Succession chain resolved to concrete ISO dates for a coordinate. | ?crop=lettuce-leaf&lat=… |
| GET /api/pests/:slug | Pests and diseases affecting a crop, ranked by severity, with organic management. | /tomato |
| GET /api/pest/:slug | Full record for one pest or disease across every crop it affects. | /tomato-hornworm |
| GET /api/soil | SSURGO soil profile by coordinate: type, drainage, texture, pH, organic matter, recommendations. | ?lat=48.118&lng=-123.43 |
| GET /api/garden-plan | The complete garden plan for a coordinate and crop list. Six graph dimensions in one call. | ?lat=…&crops=tomato,basil… |
| GET /api/gdd | Growing-degree-day harvest prediction with monthly accumulation, base temp, and confidence band. | ?crop=tomato&plant_date=… |
CropGraph speaks the Model Context Protocol. Claude, Cursor, and anything else that loads MCP servers can plan a bed without leaving the conversation.
Registered on the official MCP Registry as io.github.Cropgraph/cropgraph. No install, no key, no network: all 5,006 crops and 605 relationships ship in the package.
Fourteen tools, all offline: zone lookup, planting plan, crop details, search, companions, pair check, bed compatibility, crops-for-zone, rotation advice, rotation-sequence check, succession chain, dated succession plan, crop pests, and pest detail.
{
"mcpServers": {
"cropgraph": {
"command": "npx",
"args": ["@cropgraph/mcp"]
}
}
}
{
"mcpServers": {
"cropgraph": {
"command": "npx",
"args": ["-y", "@cropgraph/mcp"]
}
}
}
Twelve subcommands mirroring the MCP tools. Useful for seed-company ops scripts, quick checks, and anyone who would rather pipe to jq than open Postman.
Or run any subcommand through npx cropgraph without installing. The data ships in the package, so commands work without an API key or a network call.
CropGraph is the API, the MCP, and the CLI today. The structured-data layer beneath them grows every quarter.
Zone, planting, crops, companions, plan, search, rotation, rotation-check, succession, succession-plan, pests, pest, soil, garden-plan, gdd. 5,006 crops, 605 relationships, 6 climate types, 26 USDA zones, 120 GDD models. Cited from USDA Cooperative Extension publications.
@cropgraph/mcp on npm, io.github.Cropgraph/cropgraph on the official MCP Registry. Fourteen tools, all offline.
cropgraph on npm. Twelve subcommands across zones, planting, crops, companions, pair checks, bed plans, rotation, rotation sequences, succession, pests, and pest detail.
12 botanical families, year-gap rules, follow-with and never-follow, all cited. Live across @cropgraph/core, the REST API (/api/rotation + /api/rotation-check), the MCP server, and the CLI.
33 time-sequenced planting chains across greens, roots, legumes, brassicas, cucurbits, herbs, flowers, and cover crops. Frost-anchored phases with per-climate notes. Live across @cropgraph/core, the REST API (/api/succession + /api/succession-plan), the MCP server, and the CLI.
158 crop-to-pest associations with diagnostic symptoms, ordered organic management, prevention practices, regions, and citations. Live across @cropgraph/core, the REST API (/api/pests + /api/pest), the MCP server, and the CLI. OMRI-listed management only.
Soil series, drainage class, texture, pH range, organic matter, and rooting depth resolved by coordinate from the USDA NRCS Soil Survey Geographic Database (SSURGO). The first endpoint with a network dependency; the recommendations array cross-references soil traits with crop preferences in the catalog. Live at /api/soil.
65 literature-grounded GDD models with NOAA Climate Normals 1991-2020 fallback (720 zone-x-climate-x-month entries). Predicts earliest and latest harvest dates from a planting date for any US coordinate, offline. Live across @cropgraph/core, the REST API (/api/gdd and inside /api/garden-plan), and the npm helpers getGddModel, estimateHarvestDate, and getClimateNormalTemps.
One call traverses every graph dimension at the requested coordinate: zone, climate, frost dates, SSURGO soil profile, climate-aware planting windows, GDD-based harvest prediction, succession chains, rotation families, top pests with organic management, and bed-level companion and antagonist analysis. The killer endpoint. Live at /api/garden-plan.
Optional live daily-temperature feed swap for the Climate Normals fallback, lifting predictions from moderate to high confidence for callers that have a weather source already.
Triple the catalog. Heirlooms, regional cultivars, ornamental edibles, more cover crops.
1,000 requests per month, rate-limited to 60 per minute per IP. Paid tiers when there is real demand for them. Until then, ship.
Want the data without the network? npm install @cropgraph/core gives you all 5,006 crops and 605 relationships as typed functions, in-process.