MilkweedUSA

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.

Open it →

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.

Open it →

{
  "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.

Open it →

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.

Open it →

{
  "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.

Open it →

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.

Open it →

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.

Open it →

The same list, searchable by ZIP code.

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.

Open it →

The same data, charted and explained.

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.txt and /llms-full.txt, the whole site as plain text for language models.
  • Every page has a Markdown twin: add index.md to any path.
  • /sitemap.xml includes the PDFs and the image manifest.
  • Every page carries schema.org JSON-LD, including Dataset nodes 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.

APA Milkweed USA. (2026). Milkweed USA open data API. Retrieved DATE, from https://milkweedusa.com/api/
MLA "Milkweed USA open data API." Milkweed USA, 2026, https://milkweedusa.com/api/. Accessed DATE.
Chicago Milkweed USA. "Milkweed USA open data API." Last modified 2026-08-01. Accessed DATE. https://milkweedusa.com/api/.
BibTeX @misc{milkweedusa_api, title = {Milkweed USA open data API}, author = {{Milkweed USA}}, year = {2026}, url = {https://milkweedusa.com/api/}, note = {Accessed DATE} }