API Documentation
A free REST API for querying the Edible Plant Database. Access 27,000+ plant species with scientific names, edible uses, cultivation details, nutrition data, lookalikes, photos, and more — all as JSON.
Quick start
Sign in
Create a free account using just your email.
Generate a key
Go to your account page and click "Generate API Key".
Start querying
Include your key in the Authorization header.
Authentication
Include your API key in the Authorization header of every request:
curl https://edibleplantdb.org/api/v1/plants/1 \
-H "Authorization: Bearer epdb_live_YOUR_KEY_HERE" All API keys start with epdb_live_. Keep your key secret — anyone with it can use your quota.
Rate limits
The free tier includes 1,000 requests per day per API key. The quota resets at midnight UTC. If you hit the limit you'll get a 429 Too Many Requests response.
Every response includes these headers so you can track your usage:
X-RateLimit-Limit— your daily quotaX-RateLimit-Remaining— requests left today
Endpoints
/api/v1/searchFull-text search across plant names, descriptions, edible uses, and geographic distribution. Supports filtering by family, country, and edible part.
Query parameters:
q(required) — search query (e.g. "mango", "Brazil", "edible leaves")family— filter by botanical family (e.g. "Rosaceae")country— filter by ISO 3166-1 alpha-2 country code (e.g. "BR")edible_part— filter by edible part: Fruit, Leaves, Seeds & Nuts, Roots & Tubers, Flowers, Shoots & Stems, Mushroom, Spice, Cereal & Grain, Seaweed, Sap & Oillimit— max results (1-100, default 20)offset— pagination offset (default 0)
curl "https://edibleplantdb.org/api/v1/search?q=strawberry&country=US&edible_part=Fruit" \
-H "Authorization: Bearer epdb_live_YOUR_KEY"/api/v1/plantsBrowse all plants with pagination. Also supports search and filters (same parameters as /search).
Query parameters:
q— optional search queryfamily,country,edible_part— filters (same as /search)limit— max results (1-100, default 20)offset— pagination offset (default 0)
curl "https://edibleplantdb.org/api/v1/plants?family=Rosaceae&limit=10" \
-H "Authorization: Bearer epdb_live_YOUR_KEY"/api/v1/plants/:idFull details for a single plant — every field in the database, plus images, lookalikes, nutrition data, and country distribution.
curl "https://edibleplantdb.org/api/v1/plants/200" \
-H "Authorization: Bearer epdb_live_YOUR_KEY"/api/v1/randomGet a random plant with full details. Great for "plant of the day" features or discovery.
curl "https://edibleplantdb.org/api/v1/random" \
-H "Authorization: Bearer epdb_live_YOUR_KEY"/api/v1/familiesList all botanical families with plant counts.
curl "https://edibleplantdb.org/api/v1/families" \
-H "Authorization: Bearer epdb_live_YOUR_KEY"/api/v1/families/:namePlants within a specific family. Supports pagination.
curl "https://edibleplantdb.org/api/v1/families/Rosaceae?limit=10" \
-H "Authorization: Bearer epdb_live_YOUR_KEY"/api/v1/countries/:codePlants found in a specific country. Use ISO 3166-1 alpha-2 country codes (e.g. US, CA, AU, BR).
curl "https://edibleplantdb.org/api/v1/countries/CA?limit=20" \
-H "Authorization: Bearer epdb_live_YOUR_KEY"Plant detail fields
The /api/v1/plants/:id and /api/v1/random endpoints return every field stored in the database:
| Field | Type | Description |
|---|---|---|
| id | int | Unique plant ID |
| scientific_name | string | Binomial name (e.g. "Urtica dioica") |
| common_names | string | Comma-separated common names |
| family | string | Botanical family (e.g. "Urticaceae") |
| authority | string | Taxonomic authority citation |
| synonyms | string | Taxonomic synonyms |
| other_names | string | Alternative common names in various languages |
| edible_portion | string | Edible parts (e.g. "Leaves, Fruit, Seeds") |
| edible_uses | string | How edible parts are prepared and eaten |
| medicinal_uses | string | Traditional and modern medicinal applications |
| known_hazards | string | Toxicity warnings and safety precautions |
| description | string | Physical description and characteristics |
| description_wiki | string | Summary from Wikipedia (if available) |
| cultivation | string | Growing conditions, soil, climate, companions |
| propagation | string | How to propagate (seed, division, cuttings) |
| other_uses | string | Non-food uses (dye, fibre, fuel, etc.) |
| distribution | string | Geographic range description |
| found_in | string | Detailed regions/countries where found |
| production | string | Commercial production notes |
| other_info | string | Additional information |
| use | string | General use category |
| notes | string | Additional notes |
| references | string | Source references |
| wiki_url | string | Wikipedia article URL |
| base_species | string | Parent species (for subspecies/varieties) |
| inat_observations | int | iNaturalist observation count (popularity signal) |
| countries | string[] | ISO 3166-1 alpha-2 country codes where found |
| nutrition | object[] | Per-part nutrition: energy, protein, vitamins, minerals |
| images | object[] | Photos with URL, source, attribution, and CC license |
| lookalikes | object[] | Dangerous lookalikes with toxicity and identifying features |
| url | string | Canonical URL on edibleplantdb.org |
Nutrition object
Each entry in the nutrition array contains per-100g values for a specific plant part:
| Field | Unit |
|---|---|
| part | Plant part (e.g. "Leaves", "Fruit") |
| moisture_pct | % |
| energy_kj / energy_kcal | kJ / kcal |
| protein_g | grams per 100g |
| provitamin_a_ug | micrograms |
| vitamin_c_mg | milligrams |
| iron_mg / zinc_mg | milligrams |
Error responses
All errors return JSON with an error field:
| Status | Meaning |
|---|---|
| 400 | Invalid request (bad parameters) |
| 401 | Missing or invalid API key |
| 404 | Resource not found |
| 429 | Rate limit exceeded (resets at midnight UTC) |
| 503 | Search index temporarily unavailable |
Terms of use
- Non-commercial use — the API is free for personal projects, research, and educational use. For commercial applications, please get in touch.
- Attribution required — if you build something public, please credit Edible Plant Database and note that plant data is sourced from Food Plants International by Bruce French.
- Don't bulk-copy the database — the rate limit is designed to support real applications, not wholesale scraping. If you need the full dataset, download the ZIM file.
- Content license — all plant data returned by the API is licensed under CC BY-NC-SA 4.0. Individual images may have different licenses — see each image's
licensefield. - No warranty — this API is provided as-is. Data may contain errors. Never use this API as the sole source of truth for determining if a plant is safe to eat.
Ready to start?
Sign in and generate your free API key.