Wildflower APIwildflower.org ↗
Search and retrieve detailed botanical data from the Lady Bird Johnson Wildflower Center's Native Plant Database — taxonomy, bloom info, distribution, and propagation.
What is the Wildflower API?
The wildflower.org API gives developers access to the Lady Bird Johnson Wildflower Center's Native Plant Database through 2 endpoints and returns over 15 structured fields per plant. Use search_plants to find plants by scientific or common name, then call get_plant with a USDA symbol to retrieve taxonomy, geographic distribution, bloom characteristics, wildlife benefits, and propagation guidance for native North American species.
curl -X GET 'https://api.parse.bot/scraper/b4a8ad53-1572-4a5d-b336-4be93ff2c840/search_plants?query=Echinacea' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace wildflower-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: wildflower_org_api SDK — bounded, re-runnable; every call capped."""
from parse_apis.wildflower_org_api import Wildflower, PlantNotFound
client = Wildflower()
# Search for plants by name — limit caps total items fetched.
for plant_summary in client.plants.search(query="Echinacea", limit=3):
print(plant_summary.scientific_name, plant_summary.common_names)
# Drill-down: take one result and get full details.
hit = client.plants.search(query="coneflower", limit=1).first()
if hit:
try:
full = hit.details()
print(full.scientific_name, full.family)
print(full.description)
if full.characteristics:
print(full.characteristics.duration, full.characteristics.habit)
if full.bloom_information:
print(full.bloom_information.bloom_color, full.bloom_information.bloom_time)
if full.distribution:
print(full.distribution.native_habitat)
except PlantNotFound as e:
print(f"Plant not found: {e.plant_id}")
print("exercised: plants.search, PlantSummary.details")
Search the Native Plant Database by scientific or common name. Returns a list of matching plants with their USDA symbol identifiers, which can be used to retrieve full details. Results are limited to the first page (up to 10 matches); the total count of all matches is included.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Scientific name, common name, or partial name to search for (e.g. 'Echinacea', 'coneflower'). |
{
"type": "object",
"fields": {
"total": "total number of matching plants",
"plants": "array of plant summary objects with id_plant, scientific_name, and common_names"
},
"sample": {
"total": 13,
"plants": [
{
"id_plant": "ECAN2",
"common_names": "Black Samson, Narrow-leaf Coneflower",
"scientific_name": "Echinacea angustifolia"
},
{
"id_plant": "ECPA",
"common_names": "Pale Purple Coneflower, Pale Coneflower",
"scientific_name": "Echinacea pallida"
}
]
}
}About the Wildflower API
Searching the Native Plant Database
The search_plants endpoint accepts a query string — a full or partial scientific name, common name, or genus — and returns up to 10 matching plant summaries. Each summary includes id_plant (the USDA symbol), scientific_name, and common_names. The response also includes a total count of all matching records across the full database, so you know how many results exist even when only the first page is returned. The id_plant value from these results is the key input to the second endpoint.
Retrieving Full Plant Detail
The get_plant endpoint accepts a plant_id USDA symbol (for example, ECPA for *Echinacea pallida*) and returns a single, detailed record. The characteristics object covers duration (annual, perennial), habit (forb, shrub, tree), leaf retention, size notes, and physical descriptors for leaf, flower, and fruit. The distribution object includes U.S. and Canadian state/province coverage, a native distribution range description, and native habitat type. bloom data, propagation details (seed collection, seed treatment, commercial availability), and benefits (ornamental use, wildlife value, pollinators attracted) are each returned as structured objects.
Taxonomy and Nomenclature
Each get_plant response includes family (with common family name), full authority citation, synonyms as a comma-separated string of alternate scientific names, and the canonical usda_symbol. This makes the API usable for cross-referencing records against USDA PLANTS data or other botanical datasets. The description field provides a narrative overview of the species suitable for display or NLP processing.
The Wildflower API is a managed, monitored endpoint for wildflower.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when wildflower.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official wildflower.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a regional native plant finder that filters results by U.S. state using the
distribution.usafield. - Generate pollinator garden plant lists by querying the
benefits.attractsfield for bee- or butterfly-friendly species. - Populate a nursery inventory system with standardized USDA symbols and botanical metadata from
get_plant. - Create a seed propagation guide app using
propagation.seed_collection,propagation.seed_treatment, andpropagation.commercially_avail. - Cross-reference native plant records against other botanical databases using
synonymsandauthorityfields. - Build a wildflower identification tool that maps common name searches via
search_plantsto full species detail pages. - Analyze native plant habitat data by extracting
distribution.native_habitatacross a batch of USDA symbols.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the Lady Bird Johnson Wildflower Center provide an official developer API?+
What does `search_plants` return, and does it paginate beyond the first 10 results?+
id_plant, scientific_name, and common_names, along with a total count of all matches. Pagination beyond the first 10 results is not currently supported — the endpoint always returns the first page only. You can fork this API on Parse and revise it to add offset or page-based pagination if your use case requires deeper result sets.Does the API return images or photos of plants?+
get_plant endpoint returns text-based botanical data — taxonomy, characteristics, distribution, propagation, and benefits — but does not include image URLs or photo gallery data. You can fork this API on Parse and revise it to add image retrieval if photos are part of your use case.How is geographic coverage represented in `get_plant` results?+
distribution object includes separate fields for U.S. state coverage (usa), Canadian province coverage (canada), a descriptive native distribution range (native_distribution), and native habitat type (native_habitat). Coverage reflects the Wildflower Center's database records and is focused on North American native species.Can I retrieve growing condition details like soil type or sun requirements?+
characteristics object includes habit, duration, leaf retention, and physical descriptors, and the distribution.native_habitat field gives habitat context, but structured fields for explicit soil type, pH range, or sun/shade requirements are not currently returned as discrete values. You can fork this API on Parse and revise it to extract those fields if the source exposes them.