Discover/RHS Plants API
live

RHS Plants APIrhsplants.co.uk

Access the RHS Plants catalogue via API. Search, list by category, and retrieve detailed growing conditions, images, and purchasing options for thousands of plants.

Endpoint health
verified 1d ago
list_plants
list_plants_by_category
get_plant_detail
search_plants
4/4 passing latest checkself-healing
Endpoints
4
Updated
26d ago

What is the RHS Plants API?

The RHS Plants API provides 4 endpoints for querying the Royal Horticultural Society's plant catalogue at rhsplants.co.uk. Use search_plants to find plants by keyword, list_plants to paginate and sort the full catalogue, list_plants_by_category to scope results to a specific category slug, and get_plant_detail to retrieve structured growing attributes, images, pricing options, and companion plant data for any individual listing.

Try it
Page number (1-indexed).
Sort order.
Items per page (max 100).
Filter to only show orderable items.
Category ID to filter by. '29' returns all plants.
api.parse.bot/scraper/3fbe0228-b288-448e-9b23-647ad0851316/<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/3fbe0228-b288-448e-9b23-647ad0851316/list_plants?page=1&sort=7&limit=5&can_order=True&category_id=29' \
  -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 rhsplants-co-uk-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.rhs_plants_api import RHSPlants, Sort, PlantSummary, Plant, Category

client = RHSPlants()

# Search for lavender plants
for plant in client.plantsummaries.search(query="lavender"):
    print(plant.name, plant.price, plant.url)

# List popular plants sorted by popularity
for plant in client.plantsummaries.list(sort=Sort.POPULARITY, can_order=True):
    print(plant.name, plant.price)

# Browse a specific category using constructible Category
perennials = client.category("perennials")
for plant in perennials.list_plants():
    print(plant.name, plant.image_url)

# Get full detail for a specific plant
detail = client.plants.get(url="https://www.rhsplants.co.uk/plants/_/lavandula-angustifolia-hidcote/classid.4047/")
print(detail.title, detail.description)
for companion in detail.companion_plants:
    print(companion.name, companion.url)

# Navigate from summary to detail
for summary in client.plantsummaries.search(query="rose"):
    full = summary.details()
    print(full.title, full.attributes)
All endpoints · 4 totalmissing one? ·

List plants from the main catalogue with pagination and optional filtering/sorting. Returns paginated plant items with name, URL, image, and price. Supports sorting by popularity or price, and filtering to only orderable items. Each page returns up to `limit` items; iterate pages to walk the full catalogue.

Input
ParamTypeDescription
pageintegerPage number (1-indexed).
sortstringSort order.
limitintegerItems per page (max 100).
can_orderbooleanFilter to only show orderable items.
category_idstringCategory ID to filter by. '29' returns all plants.
Response
{
  "type": "object",
  "fields": {
    "page": "integer current page number",
    "items": "array of plant summary objects with name, url, image_url, and price",
    "limit": "integer items per page",
    "total": "integer total count of matching plants"
  },
  "sample": {
    "data": {
      "page": 1,
      "items": [
        {
          "url": "https://www.rhsplants.co.uk/plants/_/agastache-blue-fortune/classid.208/",
          "name": "Agastache Blue Fortune",
          "price": "From £8.99",
          "image_url": "https://img.crocdn.co.uk/images/products2/pl/00/00/00/02/pl0000000208.jpg?width=440&height=440"
        }
      ],
      "limit": 5,
      "total": 0
    },
    "status": "success"
  }
}

About the RHS Plants API

Browsing and Filtering the Catalogue

The list_plants endpoint returns paginated plant items — each with name, url, image_url, and price — from the main catalogue. You can supply a category_id (e.g. '29' for all plants), sort by popularity ('7') or price descending ('6'), and filter to orderable items only using can_order. The limit parameter supports up to 100 items per page, and total in the response tells you how many matching plants exist across all pages.

Category-Based Listing and Search

list_plants_by_category accepts a category_slug string — such as 'perennials', 'shrubs', or 'seeds' — matching the URL path used on the site, and returns the same paginated item structure. search_plants takes a free-text query and returns matched plant objects alongside categories (an array of category name strings) and category_links (full URLs to those category pages), making it straightforward to combine keyword discovery with category-level browsing.

Plant Detail Data

get_plant_detail accepts a full plant URL and returns the richest payload. The attributes object maps horticultural properties — such as flowering period, position, and hardiness — to their values. options is an array of purchasing variants, each carrying sku, description, price, was_price, stock_status, and full_text. The response also includes an images array of image URLs, a full description string, and a companion_plants array with names and URLs for related plants.

Reliability & maintenanceVerified

The RHS Plants API is a managed, monitored endpoint for rhsplants.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rhsplants.co.uk 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 rhsplants.co.uk 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
1d ago
Latest check
4/4 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 plant finder tool that filters rhsplants.co.uk results by hardiness, position, or flowering period from attributes.
  • Track price changes across plant variants using the price and was_price fields from get_plant_detail options.
  • Populate a gardening app's category browser using list_plants_by_category with slugs like 'shrubs' or 'seeds'.
  • Power autocomplete search using search_plants results and the returned category_links for navigation.
  • Monitor stock availability for specific plant SKUs by checking stock_status in the purchasing options.
  • Generate companion planting suggestions by reading the companion_plants array from any plant detail page.
  • Build a catalogue index of orderable plants only by setting can_order: true in list_plants.
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 RHS Plants have an official developer API?+
RHS Plants (rhsplants.co.uk) does not publish a public developer API. This Parse API is the way to access structured plant data from that catalogue programmatically.
What does `get_plant_detail` return in the `attributes` field?+
The attributes field is an object whose keys are horticultural property names — such as 'Flowering period', 'Position', and 'Hardiness' — mapped to their corresponding values as they appear on the plant's detail page. The exact set of attributes varies by plant.
Does `search_plants` support filtering by category or price range?+
The search_plants endpoint accepts only a query keyword. It returns matched plants and related category names and links, but does not accept category or price filter parameters. For category-scoped results, use list_plants_by_category with the relevant category_slug. You can fork this API on Parse and revise it to add filtering parameters if your use case requires them.
Are user reviews or RHS Award of Garden Merit (AGM) ratings included in the plant detail response?+
Not currently. The get_plant_detail endpoint returns horticultural attributes, purchasing options, images, description, and companion plants. AGM status and user review data are not exposed in the current response fields. You can fork this API on Parse and revise it to add the missing endpoint or fields.
Is there a way to retrieve all category slugs programmatically?+
Not currently. Category slugs must be known in advance to use list_plants_by_category — examples include 'perennials', 'shrubs', and 'seeds'. There is no dedicated endpoint that lists all available categories and their slugs. You can fork this API on Parse and revise it to add a category listing endpoint.
Page content last updated . Spec covers 4 endpoints from rhsplants.co.uk.
Related APIs in EcommerceSee all →
plantsforafuture.org API
Search for edible and medicinal plants to discover their culinary and health uses, cultivation tips, and physical characteristics. Browse the comprehensive plant database alphabetically or look up detailed information about specific plants' benefits and growing requirements.
rh.com API
Browse Restoration Hardware's furniture and home décor catalog by exploring categories, searching for specific products, and viewing detailed information including images and related items. Get comprehensive product details, pricing, and recommendations to find exactly what you're looking for across RH's entire collection.
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.
argos.co.uk API
argos.co.uk API
sainsburys.co.uk API
Access Sainsbury's grocery catalogue: search products by keyword, browse the full category hierarchy, retrieve detailed product information, and discover trending searches.
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.
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.
folksy.com API
Search and browse handmade products on Folksy by category, subcategory, or shop, and access detailed product information including pricing and availability. Discover sales and special offers while exploring artisan shops and their complete listings.
RHS Plants API – Search & Browse Plant Catalogue · Parse