Skip to main content

Plant taxonomy and cultivation API client — plantfyi.com

Project description

plantfyi

PyPI version Python License: MIT Zero Dependencies

Python API client for the world's plant taxonomy and botanical data. Access 379,774 plant species across 734 families and 50 orders, with taxonomic classification, climate zone mapping, geographic distribution, and species comparison data — all through a clean REST API with zero core dependencies.

Extracted from PlantFYI, a botanical reference platform cataloging the plant kingdom with taxonomy aligned to the APG IV classification system, distribution data from WCSP and POWO, and cultivation guides used by botanists, horticulturists, and plant enthusiasts worldwide.

Explore plant data at plantfyi.com — browse plants, families, orders, climate zones, and distribution data.

plantfyi demo — plant taxonomy lookup, family browsing, and botanical search in Python

Table of Contents

Install

pip install plantfyi                # Core (zero deps)
pip install "plantfyi[cli]"         # + Command-line interface (typer, rich)
pip install "plantfyi[mcp]"         # + MCP server for AI assistants
pip install "plantfyi[api]"         # + HTTP client for plantfyi.com API
pip install "plantfyi[all]"         # Everything

Or run instantly without installing:

uvx --from plantfyi plantfyi search "orchid"

Quick Start

from plantfyi.api import PlantFYI

with PlantFYI() as api:
    # Search across all plant species
    results = api.search("sunflower")
    print(results)

    # Get detailed information for a specific plant
    plant = api.get_plant("helianthus-annuus")
    print(plant["name"])  # Helianthus annuus

    # Browse plant families — 734 families
    families = api.list_families()
    print(families["count"])  # 734

    # Explore climate zones for cultivation
    zones = api.list_climate_zones()
    print(zones["count"])

What You Can Do

Plant Taxonomy and APG IV

The plant kingdom contains approximately 379,774 known species, organized into 50 orders and 734 families. Modern plant classification follows the APG IV (Angiosperm Phylogeny Group IV, 2016) system, which uses molecular phylogenetic data rather than morphology alone to determine evolutionary relationships.

Division Orders Species Description
Angiosperms (flowering plants) 64 ~370,000 Produce flowers and enclosed seeds
Gymnosperms (conifers, etc.) 4 ~1,000 Naked seeds, no flowers
Ferns and Allies 4 ~10,500 Spore-producing vascular plants
Mosses and Liverworts ~20,000 Non-vascular, spore-producing

The APG IV system groups flowering plants into monocots (grasses, orchids, palms — one seed leaf) and eudicots (roses, oaks, sunflowers — two seed leaves), with several basal lineages like water lilies and magnolias.

from plantfyi.api import PlantFYI

with PlantFYI() as api:
    # Browse all 50 plant orders
    orders = api.list_orders()
    for order in orders["results"][:5]:
        print(f"{order['name']}")

    # Get details for a specific order
    order = api.get_order("rosales")
    print(order["name"])  # Rosales (roses, elms, figs, hemp)

Learn more: Plant Species · Plant Orders · Botanical Glossary

Plant Families

The 734 plant families represent distinct evolutionary lineages sharing common ancestry. Some families are enormously diverse while others contain only a handful of species. The largest families alone account for over half of all flowering plant species.

Family Common Name Species Key Features
Asteraceae Daisy/Composite ~32,000 Composite flower heads (sunflowers, daisies)
Orchidaceae Orchid ~28,000 Complex flowers, mycorrhizal dependence
Fabaceae Legume/Pea ~20,000 Nitrogen fixation, pod fruits
Poaceae Grass ~12,000 Hollow stems, cereal crops (wheat, rice)
Rubiaceae Coffee ~13,500 Opposite leaves, includes coffee and quinine
Lamiaceae Mint ~7,000 Square stems, aromatic oils (basil, lavender)
Rosaceae Rose ~4,800 Fruits (apple, cherry, strawberry)
Brassicaceae Mustard/Cabbage ~3,700 Cruciform flowers, glucosinolates
Solanaceae Nightshade ~2,700 Alkaloids (tomato, potato, tobacco)
Cactaceae Cactus ~1,700 Succulence, spines, CAM photosynthesis
from plantfyi.api import PlantFYI

with PlantFYI() as api:
    # Browse all 734 plant families
    families = api.list_families()
    print(families["count"])  # 734

    # Get details for a specific family
    orchid = api.get_family("orchidaceae")
    print(orchid["name"])  # Orchidaceae

Learn more: Plant Families · Guides

Climate Zones and Cultivation

Plant distribution is primarily governed by climate — temperature range, precipitation, frost dates, and photoperiod. The USDA Plant Hardiness Zone system divides regions into zones based on minimum winter temperature, while the Koppen climate classification maps global climate patterns that determine which plants can thrive where.

Hardiness Zone Min Winter Temp Example Plants
Zone 3 (-40 to -34C) Siberian iris, birch, spruce
Zone 5 (-29 to -23C) Roses, lilacs, apple trees
Zone 7 (-18 to -12C) Camellias, crape myrtle, figs
Zone 9 (-7 to -1C) Citrus, bougainvillea, palms
Zone 11 (4 to 10C) Tropical orchids, plumeria, mangoes

Plants also differ in photosynthesis pathways — C3 (most plants, temperate), C4 (grasses, tropical crops like corn and sugarcane), and CAM (succulents, cacti) — each adapted to different light and water conditions.

from plantfyi.api import PlantFYI

with PlantFYI() as api:
    # Browse climate zones
    zones = api.list_climate_zones()
    for z in zones["results"][:5]:
        print(z["name"])

    # Get details for a specific climate zone
    zone = api.get_climate_zone("tropical-rainforest")
    print(zone["name"])  # Tropical Rainforest

Learn more: Climate Zones · Guides

Geographic Distribution

PlantFYI maps plant species to their native and introduced ranges across countries and botanical regions. Understanding plant distribution reveals biogeographic patterns — why certain families dominate in specific regions (e.g., Proteaceae in Australia and South Africa, cacti in the Americas).

from plantfyi.api import PlantFYI

with PlantFYI() as api:
    # Browse distribution data
    distributions = api.list_distributions()
    print(distributions["count"])

    # Browse plants by country
    countries = api.list_countries()
    brazil = api.get_country("brazil")
    print(brazil["name"])  # Brazil — highest plant diversity on Earth

Learn more: Plant Distributions · Countries

Species Comparison

PlantFYI provides side-by-side comparisons of similar or commonly confused plant species, covering morphological differences, growing conditions, uses, and geographic overlap.

from plantfyi.api import PlantFYI

with PlantFYI() as api:
    # Browse plant comparisons
    comparisons = api.list_comparisons()
    for comp in comparisons["results"][:3]:
        print(comp["name"])

    # Get a specific comparison
    comp = api.get_comparison("basil-vs-thai-basil")
    print(comp["name"])

Learn more: Plant Comparisons · Botanical Guides

Command-Line Interface

pip install "plantfyi[cli]"

plantfyi search "lavender"     # Search across all plant species

MCP Server (Claude, Cursor, Windsurf)

Add plant data to any AI assistant that supports Model Context Protocol.

pip install "plantfyi[mcp]"

Add to your claude_desktop_config.json:

{
    "mcpServers": {
        "plantfyi": {
            "command": "uvx",
            "args": ["--from", "plantfyi[mcp]", "python", "-m", "plantfyi.mcp_server"]
        }
    }
}

REST API Client

from plantfyi.api import PlantFYI

with PlantFYI() as api:
    plants = api.list_plants()            # Browse all 379,774 species
    families = api.list_families()        # Browse 734 families
    orders = api.list_orders()            # Browse 50 orders
    results = api.search("bamboo")        # Full-text search

API Endpoints

Method Endpoint Description
GET /api/v1/plants/ List all plants
GET /api/v1/plants/{slug}/ Plant detail
GET /api/v1/orders/ List all orders
GET /api/v1/families/ List all families
GET /api/v1/climate-zones/ List climate zones
GET /api/v1/distributions/ List distributions
GET /api/v1/countries/ List countries
GET /api/v1/comparisons/ List comparisons
GET /api/v1/glossary/ List glossary terms
GET /api/v1/guides/ List guides
GET /api/v1/search/?q={query} Search across all content
curl -s "https://plantfyi.com/api/v1/plants/?limit=3"

Full API documentation at plantfyi.com/developers/. OpenAPI 3.1.0 spec: plantfyi.com/api/openapi.json.

API Reference

Function Description
PlantFYI() Create API client (base_url, timeout)
list_plants(**params) List all plant species
get_plant(slug) Get plant detail
list_orders(**params) List all orders
get_order(slug) Get order detail
list_families(**params) List all families
get_family(slug) Get family detail
list_climate_zones(**params) List climate zones
get_climate_zone(slug) Get climate zone detail
list_distributions(**params) List distributions
list_countries(**params) List countries
list_comparisons(**params) List comparisons
list_glossary(**params) List glossary terms
list_guides(**params) List guides
search(query) Search across all content

Learn More About Plants

Nature FYI Family

Part of the FYIPedia open-source developer tools ecosystem — living organisms, wildlife, and natural history.

Package PyPI Description
speciesfyi PyPI 49,112 species, 17,982 taxa, 846 ecoregions — speciesfyi.com
birdfyi PyPI 11,251 birds, 40 orders, 258 families — birdfyi.com
fishfyi PyPI 78 fish species, 48 orders, 188 families — fishfyi.com
plantfyi PyPI 379,774 plants, 734 families, 50 orders — plantfyi.com
dinofyi PyPI 6,142 dinosaurs, 15 periods, 198 countries — dinofyi.com

FYIPedia Developer Tools

Package PyPI npm Description
colorfyi PyPI npm Color conversion, WCAG contrast, harmonies — colorfyi.com
emojifyi PyPI npm Emoji encoding & metadata for 3,953 emojis — emojifyi.com
symbolfyi PyPI npm Symbol encoding in 11 formats — symbolfyi.com
unicodefyi PyPI npm Unicode lookup with 17 encodings — unicodefyi.com
fontfyi PyPI npm Google Fonts metadata & CSS — fontfyi.com
plantfyi PyPI Plant taxonomy & cultivation — plantfyi.com
speciesfyi PyPI Species taxonomy & biodiversity — speciesfyi.com
birdfyi PyPI Bird species encyclopedia — birdfyi.com
fishfyi PyPI Fish species & marine biology — fishfyi.com
dinofyi PyPI Dinosaur paleontology & fossil record — dinofyi.com

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plantfyi-0.1.1.tar.gz (565.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plantfyi-0.1.1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file plantfyi-0.1.1.tar.gz.

File metadata

  • Download URL: plantfyi-0.1.1.tar.gz
  • Upload date:
  • Size: 565.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for plantfyi-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b175cfed0cb233f61e4a5dd5c7a140264e555cd6787005c1ea7dfbf89dc9a285
MD5 8b24add1207a02cb6993389fbaf5c0f9
BLAKE2b-256 bc80b08438f3349742ffa66c5a4c4fafe08f9931910f6228a56ceac22df83b6d

See more details on using hashes here.

File details

Details for the file plantfyi-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: plantfyi-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for plantfyi-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 92110953a241a8820af54969de070ced9b612226356e1981cf56fb9722d2936a
MD5 58b1461cb86029569ceeb2a3c18b5f90
BLAKE2b-256 3bbd26bea0ff55e75262efed9f55af8cf8191818cc5a147f0676df2187c51408

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page