cjscrofani.com
7 min read

Rootfast

APITypeScriptCloudflareOpen DataOpen Source

A free, public-domain plant API — and the website that browses it — joining USDA, GBIF, and iNaturalist data into one queryable surface that answers 'I live here, what should I plant?'

Rootfast answers a simple question — I live here, what should I plant? — with data, not opinion. It joins several pieces of public infrastructure (USDA PLANTS, the USDA Plant Hardiness Zone Map, the GBIF backbone taxonomy, and iNaturalist photos) into one free, queryable API and a website that browses it. Everything is public domain or CC0: no keys, no commercial gating, no terms beyond attribution.

By the Numbers

27,678

Plant taxa

2.5M

Distribution records

3,230

U.S. counties

40,502

Hardiness ZIP codes

55 / 56

States & territories

100%

GBIF match coverage

26,125

iNaturalist photos

$0

Cost to use

Key Features

Location-First Plant Discovery

Query by state, county FIPS, or ZIP code to find what grows where — complete with native vs. introduced status drawn from 2.5 million county-level distribution records.

Hardiness Zone Lookups

ZIP-to-zone and county-to-zone resolution from the USDA-ARS 2023 Plant Hardiness Zone Map, covering 40,502 ZIP codes and 3,199 counties.

One Cross-Source Join Key

Every plant carries a gbif_taxon_key from the GBIF backbone taxonomy (100% match coverage), so downstream tools can join rootfast to the rest of the biodiversity ecosystem.

Hot-Linked CC Photos

26,125 species photos (94% coverage) sourced from iNaturalist, with each photo's individual Creative Commons license preserved and attributed.

Data Sources

Rootfast doesn't generate data — it joins beautiful public infrastructure into one surface so downstream tools don't have to. Everything is public domain or CC0.

USDA PLANTS Database

Taxonomy, county-level distribution, native/introduced status, and cultivation characteristics

USDA-ARS Plant Hardiness Zone Map (2023)

ZIP → zone and county → zone lookups

GBIF Backbone Taxonomy

The cross-source join key present on every plant

iNaturalist

Hot-linked, CC-licensed species photos

Using the API

The API is live at api.rootfast.org — no authentication required. A few examples:

Example Requests

Full detail on ponderosa pine (by USDA symbol):

curl https://api.rootfast.org/v1/plants/PIPO

Hardiness zone for a ZIP code (Bozeman, MT):

curl https://api.rootfast.org/v1/hardiness/zip/59715

Search across the taxonomy:

curl 'https://api.rootfast.org/v1/search?q=ponderosa'

Every plant recorded in a county (by FIPS):

curl https://api.rootfast.org/v1/counties/30031/plants

Interactive documentation lives at /v1/docs, with the full OpenAPI 3.0 spec at /v1/openapi.json.

How It's Built

Each upstream has its own Python ETL pipeline that emits a SQLite chunk matching a shared schema. A build job merges those chunks on gbif_taxon_key, runs foreign-key and integrity checks, and produces a data-only SQL dump split into ~4 MB pieces for Cloudflare D1's import path. The API serves it all from a single dependency-free Cloudflare Worker.

USDA PLANTS ─┐ ├─→ build.py ─→ rootfast.db ─→ Cloudflare D1 USDA PHZM ───┘ │ ▼ Worker API ──→ Astro site (Pages)
Edge API

A raw-fetch TypeScript Cloudflare Worker (no framework) over D1, with a hand-maintained OpenAPI spec and rate-limit middleware.

Website

Astro 4 SSR on Cloudflare Pages, browsing plants, counties, states, and hardiness zones straight from the live API.

Idempotent ETL

Python fetchers cache raw responses and resume from where they left off — re-running only pulls what's missing.

The whole thing runs on Cloudflare's free tier — Workers, D1, and Pages.

Resources

Code is MIT-licensed; data is released under CC0 1.0. Rootfast is a quiet public-interest project — corrections and region requests are welcome via GitHub issues.