The planting calendar API

Plant what works here, today.

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.

GET /api/planting?lat=48.118&lng=-123.43 200 OK

              
$ curl "https://api.cropgraph.com/api/planting?lat=48.118&lng=-123.43"
The killer endpoint

One call. Six dimensions. /api/garden-plan

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."
}
Eight things this does

Zone alone is wrong. Same zone, different climate, different calendar.

CropGraph models the dimensions every garden app needs and most APIs fold into a single ambiguous list.

01 / planting

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"
02 / companions

Companion graph

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"
03 / plan

Bed compatibility

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" ]
04 / rotation

Rotation families

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
05 / succession

Succession planting

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"
06 / pests

Pest and disease

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"
07 / soil

Soil intelligence

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 }
08 / GDD

Growing degree day harvest prediction

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
The data

What you get when you hit the API.

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.

1,183 fruits
1,120 vegetables
462 medicinals
331 herbs
315 grains
249 natives
248 forages
223 flowers
208 legumes
146 sprouts
146 fibers
144 roots
126 cover crops
105 mushrooms
120 climate-modified

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.

Cornell CALS WSU Extension UC ANR UF / IFAS OSU Extension Penn State Texas A&M USDA-ARS Xerces Society PRISM 2023
Try the API

Seventeen endpoints, no key required.

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.

USDA hardiness zone, climate type, frost dates, season length for any coordinate.

Full crop detail plus companions and antagonists. Slug matches common name, scientific name, or alias.

Companions and antagonists for one crop, with mechanisms and strengths.

Directed relationship between two crops. Returns the edge if one exists in either direction.

Bed compatibility for a group of crops. Surfaces every pairwise relationship plus warnings for antagonist hubs.

All seventeen endpoints

The full surface, in one table.

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=…
MCP server

Fourteen tools your agent can call.

CropGraph speaks the Model Context Protocol. Claude, Cursor, and anything else that loads MCP servers can plan a bed without leaving the conversation.

$npx @cropgraph/mcp

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.

@cropgraph/mcp@2.1.0 MIT licensed node ≥ 18
claude_desktop_config.json Claude Desktop
{
  "mcpServers": {
    "cropgraph": {
      "command": "npx",
      "args": ["@cropgraph/mcp"]
    }
  }
}
~/.cursor/mcp.json Cursor
{
  "mcpServers": {
    "cropgraph": {
      "command": "npx",
      "args": ["-y", "@cropgraph/mcp"]
    }
  }
}
CLI

Same data, your terminal.

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.

$npm install -g cropgraph

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@1.0.0 MIT licensed node ≥ 18
terminal
  • $cropgraph zone --lat 48.118 --lng -123.43 zone 8b · maritime · last frost 03-15 · 260 day season
  • $cropgraph planting --lat 48.118 --lng -123.43 plant now: bush bean, cucumber, basil, tomato (transplant)
  • $cropgraph companions tomato companions: basil, marigold, carrot · antagonists: fennel, brassicas
  • $cropgraph plan tomato basil marigold carrot 4 crops · 3 companion edges · 0 warnings · ship the bed
  • $cropgraph rotation tomato nightshades · 3-year gap · follow with legumes, grasses, alliums
Roadmap

Where this is going.

CropGraph is the API, the MCP, and the CLI today. The structured-data layer beneath them grows every quarter.

Shipped
Seventeen REST endpoints

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.

Shipped
MCP server on the registry

@cropgraph/mcp on npm, io.github.Cropgraph/cropgraph on the official MCP Registry. Fourteen tools, all offline.

Shipped
CLI tool

cropgraph on npm. Twelve subcommands across zones, planting, crops, companions, pair checks, bed plans, rotation, rotation sequences, succession, pests, and pest detail.

Shipped
Crop rotation rules

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.

Shipped
Succession planting chains

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.

Shipped
Pest and disease associations

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.

Shipped
Soil intelligence (USDA SSURGO)

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.

Shipped
Growing degree day harvest prediction

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.

Shipped
The garden-plan endpoint

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.

Later
Live weather GDD overlay

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.

Later
3,000+ crop expansion

Triple the catalog. Heirlooms, regional cultivars, ornamental edibles, more cover crops.

Pricing

Free. No API key. Build.

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.

1,000req / month
60req / minute
$0per seat