US Grow Zones

Free hardiness zone JSON API

Last updated · Sources: PRISM/OSU

Look up the 2023 USDA plant hardiness zone for any U.S. ZIP code as JSON. No API key, open CORS, free for apps, garden blogs, nurseries and research. Zones come from the PRISM Group / Oregon State University ZIP listings behind the USDA map.

Quick start

GET https://usgrowzones.com/api/v1/zip/10001

Example response:

{
  "zip": "10001",
  "zone": "7b",
  "temperature_range": "5 to 10",
  "temperature_unit": "F",
  "zone_2012": "7b",
  "links": {
    "zone_guide": "https://usgrowzones.com/zone/7b/",
    "frost_lookup": "https://usgrowzones.com/?zip=10001",
    "methodology": "https://usgrowzones.com/methodology/",
    "docs": "https://usgrowzones.com/developers/"
  },
  "attribution": "Zones from PRISM Group / Oregon State University ZIP listings for the USDA Plant Hardiness Zone Map. US Grow Zones is independent and not affiliated with USDA or OSU."
}

Try it: /api/v1/zip/80202 · /api/v1/zip/60601 · /api/v1/zip/98101

Endpoint

MethodPathNotes
GET/api/v1/zip/{zip}zip must be exactly 5 digits. Returns 200, 400, 404 or 502.
OPTIONSsameCORS preflight. Access-Control-Allow-Origin: *

Successful responses are cached for 24 hours (Cache-Control: public, max-age=86400).

Response fields

FieldTypeMeaning
zipstring5-digit ZIP code requested
zonestring2023 USDA half-zone (e.g. 6b)
temperature_rangestringAverage annual extreme minimum temperature range in °F for that zone
temperature_unitstringAlways F
zone_2012string?2012 map zone when the ZIP appears in both listings
linksobjectHuman pages for the zone, frost lookup, methodology and these docs
attributionstringRequired credit line when you display the data

Bulk / shard files

For offline use or many lookups, download the same data as prefix shards (two leading ZIP digits):

GET https://usgrowzones.com/data/zw/10.json

Each file is a map of ZIP → [zone_2023, temperature_range, zone_2012?]. CORS is open on /data/* too. Prefer the /api/v1/zip/ endpoint for single lookups.

curl and JavaScript

curl -s https://usgrowzones.com/api/v1/zip/10001
const r = await fetch("https://usgrowzones.com/api/v1/zip/10001");
const data = await r.json();
console.log(data.zone);

Terms