A read-only API for the three questions people ask most
Any app or assistant that can read a web address can ask Pollinator Patch which native plants fit a ZIP code, which landscaping rebates are nearby, and when frost comes. No key, no account, no cost while this first version is public. United States only.
Last updated: September 2026
- Plants: which native plants fit this ZIP, this much sun, this much water?
- Rebates: what will a city, utility, or water district pay toward native landscaping here?
- Frost dates: when is the last spring frost and the first fall frost here?
Which native plants fit this ZIP code?
GET /api/v1/plants?zip=78701&sun=full&water=low&limit=25Try it:
curl "https://www.thepollinatorpatchgarden.com/api/v1/plants?zip=78701&sun=full&limit=3"What comes back, trimmed to one item:
{
"location": { "zip": "78701", "ecoregion": { "code": "32", "name": "Texas Blackland Prairies" } },
"filters": { "sun": "full", "water": null },
"total": 581,
"limit": 1,
"offset": 0,
"plants": [
{
"common_name": "Little Bluestem",
"scientific_name": "Schizachyrium scoparium",
"growth_form": "grass",
"light": "full_sun",
"water": "low",
"bloom_months": [7, 8, 9],
"hoa_eligible": true,
"hoa_maintenance_level": "low",
"availability_tier": "common",
"summary": "Prairie beard grass is a native bunch grass that forms neat, upright clumps ...",
"photo": {
"url": "https://upload.wikimedia.org/wikipedia/commons/f/f7/...jpg",
"attribution": "Montrealais / Wikimedia Commons (CC BY 3.0)"
},
"toxicity": {
"dogs": { "status": "unknown", "source": "ASPCA, Cornell, PFAF, Duke, TAMU, USDA ...", "sourceUrl": "https://www.aspca.org/...", "lastReviewed": "2026-08-15" },
"cats": { "status": "unknown", "source": "ASPCA, Cornell, PFAF, Duke, TAMU, USDA ...", "sourceUrl": "https://www.aspca.org/...", "lastReviewed": "2026-08-15" }
},
"url": "https://www.thepollinatorpatchgarden.com/plants/little-bluestem"
}
],
"browse_url": "https://www.thepollinatorpatchgarden.com/plants",
"attribution": { "name": "Pollinator Patch", "url": "https://www.thepollinatorpatchgarden.com", "note": "..." }
}sun is full, part, or shade. water is low, medium, or high. Results are native to the ZIP's ecoregion, photographed species first, and each carries dog and cat toxicity following the ASPCA. A status of unknown means the plant is on neither ASPCA list, which is not the same as being safe.
Are there rebates near this location?
GET /api/v1/rebates?zip=78701 or GET /api/v1/rebates?state=TX&city=PlanoTry it:
curl "https://www.thepollinatorpatchgarden.com/api/v1/rebates?zip=78701"What comes back, trimmed to one item:
{
"location": { "zip": "78701", "city": "Austin", "state": "TX" },
"total": 4,
"programs": [
{
"name": "Stormwater Management Discount",
"provider": "City of Austin Watershed Protection",
"provider_type": "city",
"state": "TX",
"cities": ["Austin"],
"scope": "city",
"max_rebate_residential": "Ongoing bill credit: up to 50% off the drainage charge (impervious offset)",
"verified": false,
"last_verified": "2026-06-23",
"repayable": false,
"status": "active",
"closed": false,
"funding_status": "open",
"application_window": null,
"pre_approval_required": true,
"application_url": "https://www.austintexas.gov/page/drainage-charge-discount",
"source_url": "https://www.austintexas.gov/page/drainage-charge-discount",
"url": "https://www.thepollinatorpatchgarden.com/rebates/programs/austin-stormwater-discount"
}
],
"browse_url": "https://www.thepollinatorpatchgarden.com/rebates",
"attribution": { "name": "Pollinator Patch", "url": "https://www.thepollinatorpatchgarden.com", "note": "...", "license": "https://creativecommons.org/licenses/by/4.0/" }
}Amounts are passed through exactly as the program states them. last_verified is when we last checked that entry against its official source. verified is a stricter thing: it is true only when the amount itself was corroborated number for number, so while it is false, report the amount as the program states it rather than as confirmed. Requirements and how to apply live on each program's url.
When should I worry about frost here?
GET /api/v1/frost-dates?zip=78701Try it:
curl "https://www.thepollinatorpatchgarden.com/api/v1/frost-dates?zip=78701"What comes back, trimmed to one item:
{
"zip": "78701",
"frost_status": "normal",
"date_format": "MM/DD",
"last_spring_frost_32f": { "early": "02/18", "typical": "03/09", "late": "03/30" },
"first_fall_frost_32f": { "early": "11/02", "typical": "11/18", "late": "12/08" },
"hard_freeze_28f": { "last_spring_typical": "02/25", "first_fall_typical": "12/03" },
"growing_season_days": 255,
"station": { "name": "AUSTIN 6S, TX US", "distance_miles": 3 },
"source": {
"name": "NOAA NCEI U.S. Climate Normals 1991-2020",
"version": "ncei-1991-2020-v1.0.1+gaz2025",
"url": "https://www.ncei.noaa.gov/products/land-based-station/us-climate-normals"
},
"page_url": "https://www.thepollinatorpatchgarden.com/frost-dates",
"attribution": { "name": "Pollinator Patch", "url": "https://www.thepollinatorpatchgarden.com", "note": "..." }
}Dates are MM/DD from the NOAA 1991-2020 climate normals. The typical date is the median of the last thirty years, and early and late are the one-in-ten-year tails. A normal is a record of what happened, not a forecast for this year.
Errors and limits
Every error has the same shape, with an HTTP status to match:
{ "error": { "code": "invalid_zip", "message": "zip must be a 5-digit US ZIP code." } }The codes are invalid_zip, invalid_param, zip_not_found, rate_limited, and lookup_failed. The limit is 60 requests a minute per caller, shared across all three endpoints, and a 429 carries Retry-After. Answers change at most once a day, so cache them rather than re-asking.
Attribution and terms
Attribute answers to Pollinator Patch and link the url on each item. Quote rebate amounts as given, with the date we last checked them. The rebate directory is published under CC BY 4.0. Use is covered by our terms and privacy policy.
Privacy
A ZIP code is used to find a region and is not stored. The API accepts no personal data and returns none. There is nothing here about any person's account, garden, or plans.
Machine-readable description
The OpenAPI 3.1 document at /api/v1/openapi.json describes every parameter and field. Any assistant or app that reads an OpenAPI document can use it directly.
Contact and what comes next
Questions, a partner listing, or something you need that is not here: stephen@thepollinatorpatchgarden.com. Nursery stock, garden plans, and saved gardens come next, in that order, once this read-only version has real callers.