Discover/Plantsforafuture API
live

Plantsforafuture APIplantsforafuture.org

Access the PFAF plant database via API. Search by Latin name, browse alphabetically, and retrieve edibility, medicinal, cultivation, and propagation details.

Endpoint health
verified 4d ago
search_plants
get_plant_details
browse_plants_alphabetically
3/3 passing latest checkself-healing
Endpoints
3
Updated
26d ago

What is the Plantsforafuture API?

The Plants For A Future API exposes 3 endpoints covering the PFAF plant database of edible and useful plants. Use search_plants to run partial-match queries by Latin name and get back habit, hardiness, soil and moisture preferences, and edible/medicinal/other ratings. Use get_plant_details to retrieve a full plant profile — including geographic range, known hazards, cultivation notes, propagation methods, and detailed use descriptions — for any exact Latin name.

Try it
Latin name or partial Latin name to search for (e.g. 'Rosa', 'Allium')
api.parse.bot/scraper/18f9d0e0-3307-428c-a976-dd138c6806ee/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/18f9d0e0-3307-428c-a976-dd138c6806ee/search_plants?query=Rosa' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 plantsforafuture-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.

from parse_apis.plants_for_a_future_pfaf_api import Pfaf, Plant, PlantSummary, Letter

pfaf = Pfaf()

# Search for plants in the Rosa genus
for summary in pfaf.plantsummaries.search(query="Rosa"):
    print(summary.latin_name, summary.common_name, summary.edible, summary.medicinal)

# Get full details for a specific plant
plant = pfaf.plants.get(latin_name="Rosa canina")
print(plant.common_name, plant.family, plant.edible_rating, plant.medicinal_rating)
print(plant.known_hazards, plant.usda_hardiness)

# Browse alphabetically using the Letter enum
for entry in pfaf.plantsummaries.browse(letter=Letter.Q):
    print(entry.latin_name, entry.habit, entry.height)

# Navigate from summary to full details
for item in pfaf.plantsummaries.search(query="Allium"):
    detail = item.details()
    print(detail.latin_name, detail.edible_uses, detail.cultivation)
    break
All endpoints · 3 totalmissing one? ·

Full-text search over the PFAF plant database by Latin name. Returns a list of matching plants with summary characteristics (habit, height, hardiness, soil/shade/moisture preferences, edible/medicinal/other ratings). Partial matches are supported — searching 'Rosa' returns all species in that genus. Results are not paginated; the full matching set is returned in one response.

Input
ParamTypeDescription
queryrequiredstringLatin name or partial Latin name to search for (e.g. 'Rosa', 'Allium')
Response
{
  "type": "object",
  "fields": {
    "items": "array of plant summary objects",
    "total": "integer count of results returned"
  },
  "sample": {
    "data": {
      "items": [
        {
          "Soil": "LMH",
          "Habit": "Shrub",
          "Other": "3",
          "Shade": "SN",
          "Edible": "2",
          "Growth": "",
          "Height": "2.5",
          "Moisture": "M",
          "Hardiness": "0-0",
          "Medicinal": "2",
          "Latin Name": "Rosa acicularis",
          "Common Name": "Prickly Rose",
          "details_url": "https://pfaf.org/user/Plant.aspx?LatinName=Rosa acicularis",
          "latin_name_id": "Rosa acicularis"
        }
      ],
      "total": 56
    },
    "status": "success"
  }
}

About the Plantsforafuture API

Endpoints and Data Coverage

The API provides three endpoints. search_plants accepts a query string (e.g. 'Rosa' or 'Allium') and returns an array of plant summary objects alongside a total count. Each summary includes habit, height, hardiness zone, soil and shade preferences, moisture tolerance, and numeric ratings for edible, medicinal, and other uses. Partial Latin names are supported, so querying 'Rosa' returns all matching species.

get_plant_details takes an exact latin_name — as it appears in search results — and returns the full PFAF profile for that plant. Response fields include common_name, family, range, habitats, edible_uses, other_uses, cultivation, propagation, other_rating, and known hazards. The latin_name must match the database entry exactly; use search_plants first to confirm the correct spelling before calling this endpoint.

Browsing the Database

browse_plants_alphabetically accepts a single letter parameter (A–Z) and returns every plant in the database whose Latin name starts with that letter. Results are not paginated — the full set for the letter is returned in one response. This is useful for inventory-style queries or when you want to explore the database without a specific species in mind. The items array and total count follow the same structure as search_plants results.

Ratings and Use Fields

Edible, medicinal, and other-use ratings are numeric scores on a 1–5 scale, making them filterable client-side for use-case prioritisation. The edible_uses and other_uses fields in get_plant_details are free-text descriptions sourced from the PFAF database entries, and their length and detail vary by species. Not every plant has values for every field — sparse or missing data reflects the underlying database.

Reliability & maintenanceVerified

The Plantsforafuture API is a managed, monitored endpoint for plantsforafuture.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when plantsforafuture.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 plantsforafuture.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.

Last verified
4d ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a foraging reference app that lets users search edible plants by partial Latin name and filter by edible rating
  • Generate cultivation guides for a gardening platform using the cultivation and propagation fields from get_plant_details
  • Populate a medicinal plant index by browsing alphabetically and extracting species with a medicinal rating above a threshold
  • Cross-reference known hazards from get_plant_details against a list of candidate species for food safety research
  • Create a plant family taxonomy tool by aggregating the family field across all results from browse_plants_alphabetically
  • Feed habitat and geographic range data into a biodiversity mapping tool for specific plant genera
  • Build a permaculture plant selector that filters by soil, shade, and moisture preferences from search_plants summaries
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does Plants For A Future have an official developer API?+
No. PFAF does not publish an official developer API or documented data access endpoint. This Parse API provides structured programmatic access to the PFAF plant database.
What does `get_plant_details` return, and how does it differ from `search_plants`?+
search_plants returns summary objects — habit, height, hardiness, soil/shade/moisture preferences, and 1–5 ratings for edible, medicinal, and other uses. get_plant_details returns the full profile for one species: edible_uses, other_uses, cultivation, propagation, habitats, range, family, common_name, and known hazards. The latin_name input must match the database exactly, so it is best practice to call search_plants first to confirm the correct form.
Does `browse_plants_alphabetically` paginate its results?+
No. The endpoint returns the complete set of plants for the requested letter in a single response. For high-frequency letters like 'A' or 'C', the items array and total may be large. If you need a subset, filter the returned array client-side.
Does the API return images or photos for plants?+
Not currently. The three endpoints cover text-based data: ratings, use descriptions, cultivation notes, propagation methods, and geographic/habitat information. Image URLs are not included in any response field. You can fork this API on Parse and revise it to add an image endpoint if that data is accessible from the source.
Are common names searchable, or is search limited to Latin names?+
Search is limited to Latin names. The search_plants endpoint accepts a query parameter matched against Latin names only, and browse_plants_alphabetically indexes by the first letter of the Latin name. Common names are returned as a field in results but cannot be used as search input. You can fork this API on Parse and revise it to add a common-name search endpoint.
Page content last updated . Spec covers 3 endpoints from plantsforafuture.org.
Related APIs in OtherSee all →
rhsplants.co.uk API
Search and browse the RHS Plants catalogue to discover thousands of plants and gardening products. Retrieve detailed specifications, growing conditions, images, and purchasing options for any plant, and filter or sort results by category or keyword.
plantvillage.psu.edu API
Search for crops, diseases, and pests to access detailed agricultural knowledge including treatments, management strategies, and educational content like blog posts and videos. Get comprehensive plant health information with images and disease identification to help diagnose and manage crop problems.
plantix.net API
Access a comprehensive agricultural database covering over 700 plant diseases and pests, with detailed symptoms, treatment options, and prevention methods. Browse cultivation guides for a wide range of crops, retrieve disease risk by growth stage, and explore expert agricultural blog posts — all through a single structured API.
identify.plantnet.org API
Identify and explore plant species by searching through Pl@ntNet's comprehensive botanical database to access detailed information like taxonomic families, genera, species descriptions, photos, and community observations. Track plant distributions, view contribution trends, and discover expert contributors within the platform's collaborative plant identification community.
cabi.org API
Search and retrieve detailed information about plant diseases from the CABI Digital Library, including disease characteristics, symptoms, and management strategies. Find specific disease data by name or browse the comprehensive Compendium to identify and understand plant health issues.
leafly.com API
Browse and search Leafly's cannabis catalog. Look up strains by effect, flavor, terpene, or medical use. Find dispensaries near any location, explore their menus and product details, and search across strains, brands, dispensaries, and articles.
fdc.nal.usda.gov API
Search across thousands of foods to get detailed nutritional information, serving sizes, and ingredient data from USDA's comprehensive food database. Find nutrition facts for branded products, legacy foods, and foundation foods all in one place.
aplaceformom.com API
Search and compare senior care facilities across the country, view detailed information about specific facilities, read resident reviews, and explore state-level senior care overviews. Access comprehensive data on facility types, pricing, availability, contact information, and ratings.