Open data API
Everything on this site as JSON, under CC BY 4.0. No key, no signup, no quota. Seven files, served from a CDN, with permissive CORS so you can fetch them straight from a browser.
Getting started
There is nothing to set up. Every endpoint is a plain GET.
curl https://milkweedusa.com/api/species.json
Or from a browser, from any origin:
const res = await fetch('https://milkweedusa.com/api/species.json');
const { species } = await res.json();
// Every milkweed native to Colorado, tallest first
const colorado = species
.filter((s) => s.states.includes('CO') && s.nativeToUS)
.sort((a, b) => b.heightInches[1] - a.heightInches[1]);
Start at /api/index.json, which lists every endpoint and the license terms in machine-readable form.
Rate limits, and why there are none
This is worth being straight about rather than inventing policy. The API is seven static files on Cloudflare's CDN. There is no database behind it, no application server, and no per-request cost that scales with you. Hammering it does not degrade anything for anybody else, so there is no quota, no key and no throttle.
Two things follow from that:
- Cache what you fetch. Every file is served with
Cache-Control: public, max-age=3600. Respect it and you will be fetching once an hour rather than once a request, which is better for you as well. - The data changes at the pace of a rebuild, which is measured in weeks. Polling it every minute achieves nothing.
If you are about to move serious volume, or you want to be told before a shape changes, say hello at contact@milkweedusa.com. Not because permission is needed, but because it is nice to know who is using it.
The endpoints
Service description
GET /api/index.json
Every endpoint, the license, and pointers to the llms.txt feeds. Start here if you are discovering the API programmatically.
All 79 species
GET /api/species.json
The full species record: names, authority, native status, height and spread, bloom months, flower colors, leaf arrangement and shape, sun and moisture, USDA zones, stratification, state range, editorial ratings, and resolved identifiers for POWO, GBIF, iNaturalist and Wikipedia.
{
"count": 79,
"species": [{
"slug": "swamp-milkweed",
"scientificName": "Asclepias incarnata",
"commonNames": ["Swamp Milkweed", "Rose Milkweed"],
"nativeToUS": true,
"heightInches": [36, 60],
"bloomMonths": [6, 7, 8, 9],
"states": ["AL", "AR", "..."],
"references": { "powo": {...}, "gbif": {...} }
}]
}
All 51 states and DC
GET /api/states.json
Each state with its species list, USDA zones, monarch flyway and its full NOAA climate normals.
Useful for "what should I plant here" tools.
County-level distribution
GET /api/counties.json
Every US county with a USDA PLANTS record, per species: 11,587 records in all. Counties are 5-digit FIPS codes, so they join straight onto Census boundary files.
{
"species": {
"butterfly-weed": {
"scientificName": "Asclepias tuberosa",
"nativeCounties": ["01001", "01003", "..."],
"introducedCounties": []
}
}
}
A county with no record has not necessarily got no plants. Collection effort is uneven.
Statewide climate normals
GET /api/climate.json
NOAA nClimDiv 1991 to 2020 monthly normals for every state: average daily high, average daily low and average monthly precipitation.
16 animals that use milkweed
GET /api/wildlife.json
The specialists, the pollinators, the predators and the birds, with what each does on the plant and when it appears.
86 nurseries and seed houses
GET /api/suppliers.json
Independent nurseries, non-profits and seed producers, with what they stock, where they are and whether they ship. Plus the 51 state native plant societies.
Monarch population counts
GET /api/population.json
Both long-running series: the eastern overwintering area in hectares since 1993, and the western Thanksgiving count since 1997, with methods and sources attached.
License and attribution
Everything is CC BY 4.0. Use it commercially, build a product on it, train a model on it. The one condition is credit:
Milkweed USA (https://milkweedusa.com), CC BY 4.0
A link back from wherever you use it is the form of credit that helps most.
Two things are not ours to license. Photographs carry their own licenses and are credited per image, so the API returns counts and filenames rather than rights. And the underlying government data, USDA PLANTS and NOAA, is public domain in its own right and you can go to the source directly.
Stability
- Fields get added, not removed. If a shape has to change in a breaking way it will go to a new path rather than mutating in place.
- Slugs are stable. A species slug is the primary key and is not going to change under you.
- There is no versioning yet, because nothing has needed it. If that changes it will be in the path.
Other machine-readable things
/llms.txtand/llms-full.txt, the whole site as plain text for language models.- Every page has a Markdown twin: add
index.mdto any path. /sitemap.xmlincludes the PDFs and the image manifest.- Every page carries schema.org JSON-LD, including
Datasetnodes on the climate and population pages.
Cite this page
This page is licensed CC BY 4.0. Quote it, adapt it and reuse it, including commercially, as long as you credit Milkweed USA and link back.
Milkweed USA. (2026). Milkweed USA open data API. Retrieved DATE, from https://milkweedusa.com/api/
"Milkweed USA open data API." Milkweed USA, 2026, https://milkweedusa.com/api/. Accessed DATE.
Milkweed USA. "Milkweed USA open data API." Last modified 2026-08-01. Accessed DATE. https://milkweedusa.com/api/.
@misc{milkweedusa_api,
title = {Milkweed USA open data API},
author = {{Milkweed USA}},
year = {2026},
url = {https://milkweedusa.com/api/},
note = {Accessed DATE}
}