GardenTrack plant database 152 food crops · 500 named varieties · free, and enough to plan and plant a garden with ======================================================================= Files: gardentrack-plant-db.json (639 KB) gardentrack-plant-db-provenance.json (473 KB) Version: 2026.07.0 License: CC BY 4.0 — reuse it, sell it, build on it. Just credit us. Home: https://gardentrack.app/data/plant-database/ SHA-256: gardentrack-plant-db.json 8656cc9ea59f8deabdca042562dc283c10233d543a70070966f57b267ec4c824 gardentrack-plant-db-provenance.json 0cead20e896d92a4c12f8b38b95e9235419ba838879e73c02ffed64f849214a3 EVERY NUMBER BELOW IS GENERATED FROM THESE TWO FILES AT BUILD TIME. An earlier hand-written version of this README got eleven things wrong. WHAT THIS IS FOR, AND WHAT IS NOT IN IT --------------------------------------- This is a free reference for somebody growing food on their own: what to plant, when to start it, how far apart, how deep, how much sun, how big it gets, whether it lives through your winter, what size pot, when it is ready — for every crop and every variety we hold. It is a SUBSET of our internal database, and here is what we kept back: 852 growth stages — what the plant is doing, week by week 1,848 the care actions inside those stages 370 variety disease resistance 2,024 variety trait tags 2,222 the parsed days-to-maturity range (the same number in a form a scheduler can read) 1,071 variety growth habit and determinacy 872 years to first harvest, pollination needs and chill hours 850 variety ripening season, mature height and heat level 2,674 the other 2674 varieties we hold weather alert thresholds, watering rates and soil-temperature sowing gates the frost-relative calendar those stages resolve onto Those are what our app runs on. Nothing in that list changes what you do with a trowel; all of it is what software needs to do the deciding for you. If you want the complete record — for research, for a review, or because you want to check us properly — ask: hello@gardentrack.app. HOW COMPLETE IS IT — READ THIS BEFORE ANYTHING ELSE --------------------------------------------------- Of the 4,209 field-contract values across the 152 crops in THIS DOWNLOAD, 3,617 — 85.9% — carry at least one cited source. Quote that figure with that sentence attached. The denominator is the 4,209 values the provenance file tracks: one per field-contract entry per crop, counted over the fields this file actually contains. It is NOT every key in the crop JSON, it is NOT the varieties nested under the crops, and it is NOT sourcing attempts. All three produce different numbers, and so does the internal database, which holds more fields. The remaining 592 values — 14% — carry no citation, and each says why: 505 general_knowledge Nobody publishes it. Filled from ordinary horticulture, not left blank. 87 human_reviewed A person set it and attached no citation. So you never have to guess whether a blank means "not researched", "not published anywhere", or "we forgot". Open the provenance file and it tells you, per value. A dataset that is silently incomplete cannot be relied on at any percentage. One that marks each empty cell can. WHAT IS IN IT ------------- gardentrack-plant-db.json `crops` is an ARRAY of 152 crops. Index it yourself by `slug`. Every field a crop can carry, read off the records themselves: slug name display botanical family kind category lifecycle variety_count sun water_needs frost_sensitivity frost_damage_temp frost_kill_temp growth_habit fertility zones soil_ph soil_texture spacing_in_row spacing_between_rows spacing_dwarf spacing_semi_dwarf spacing_standard planting_depth days_to_maturity years_to_harvest chill_hours weeks_indoors_before_planting_out pollination mature_height mature_spread container needs_support timing harvest_cues propagation pests diseases edible_parts human_toxicity pet_toxicity identity_note searched searched_why sources A measurement is an object — `{v, min, max, unit}` — where `v` is a ready-to-print string and the numbers are what you compute on. Never parse `v`: spacing stays in inches while `v` may read "6–12 ft". `timing` is the exception and holds bare numbers, either a single value or a `{min, max}` pair. Each is counted from your last spring frost and its own field name carries the unit and the direction — `start_indoors_weeks_before_last_frost`, `transplant_days_after_last_frost`, `direct_sow_days_relative_last_frost` (negative means before the frost date), `days_to_germination`. Add your own last-frost date and you have a sowing calendar. Everything else is a plain string, number, boolean or list of codes. 500 named varieties nested under their crop, carrying: slug name variety_type color size heirloom hybrid days_to_maturity dtm_basis Variety coverage is partial and uneven, measured here rather than claimed: days to maturity 290 of 500 (58%) growth habit 0 of 500 (0%) size 190 of 500 (38%) `dtm_basis` is the field to read before you use `days_to_maturity`. Seed catalogs count either from the day you SOW or from the day you set out a transplant, about five weeks apart. A variety marked "transplant" whose days you count from sowing lands over a month wrong. gardentrack-plant-db-provenance.json `crops` is an OBJECT keyed by slug — `crops["tomato"]["planting_depth"]`. Note the shapes differ between the two files: array here, object there. Keys are FIELD-CONTRACT names, which are not always the path in the crop record. `soil_ph_min` and `soil_ph_max` become one `soil_ph`; `container_min_volume` becomes `container`. A `field_map` in the provenance file gives every key-to-path pair. Each value carries ONE of: sources publication keys it came from status why there is no source Plus a `sources` dictionary: 867 publications with organization, title, URL and license. It is normalized on purpose — repeating a URL on 3,617 values would have quadrupled the file to say the same thing. WHERE THE VALUES COME FROM -------------------------- 867 publications, by kind: 720 extension 107 other 34 seed catalog fact 5 usda 1 wikipedia Extension services are the working standard for regional horticulture in the US: land-grant universities publishing for growers in their own state, revised as the science moves. ON SEED CATALOGS, PLAINLY: 135 crop-level values cite one — planting_depth (21), spacing_between_rows (20), spacing_in_row (19), harvest_indicators (17). An earlier draft of this README claimed catalogs were used only for varieties' own specifications and never for horticultural fact. That was false, and the data is what says so. Where a catalog is the source of a horticultural value, the provenance file names it and you can weigh it yourself. HOW IT WAS CHECKED ------------------ 260 sourcing batches, audited after the fact against the cited sources. 12,315 values re-checked, 191 findings, a rate of 1.55%. 160 miscite 26 wrong_value 3 bad_na 2 unit_error 126 of the 260 batches name the person or process that audited them. The other 134 record that an audit happened without naming who ran it — so do not read "260 audited" as 260 equally attested. KNOWN SOFT SPOTS ---------------- 1. `zones` means two different things, and the 6 annuals that still carry one are NOT the exception this note used to describe. On the 53 perennials it is the coldest USDA zone the plant survives winter in place. The annuals that keep a value are tender perennials grown as annuals — basil reads 10–10 — where the number is a REAL perennation zone, not a growing range. The records where it meant a growing range were removed (#119). Filter on `lifecycle` first or you will compare two measurements. 2. `container` is a range on 111 of the 144 crops that carry one and a single number on the other 33 — Apple, at 20 gal, is one of them. Treat a single number as a FLOOR, not an answer: it is the smallest pot the crop tolerates, and on a crop whose varieties differ in size the big ones want more. 3. A blank on a variety is not a claim that it matches its crop. It means that variety did not state its own value, so the crop's applies. Read the crop record for anything the variety leaves empty. 4. Growth stages, watering rates and weather thresholds are not in this file (see the top). Where a field would have depended on them, it is absent rather than approximated. 5. Toxicity fields are informational, not veterinary advice. If an animal has eaten something, phone a vet. LICENSE + CITATION ------------------ CC BY 4.0. Commercial use, redistribution and derivative products are all fine. Attribution, copy-paste: GardenTrack plant database (gardentrack.app), CC BY 4.0. The underlying facts come from US public-domain and all-rights-reserved publications. Bare facts are not copyrightable; we extract facts, never prose or images. Each source's own license is in the provenance file. CHANGELOG --------- 2026-08-07 Every crop and every variety still ships. The field list narrowed to what a home gardener acts on — see WHAT THIS IS FOR above for what came out and how to ask for the rest. 2026-08-06 First public release, dataset version 2026.07.0.