Discover/Ocado API
live

Ocado APIocado.com

Search Ocado UK's grocery catalog, get full product details with nutrition and allergens, fetch cart contents, and retrieve related products via one API.

Endpoint health
verified 6d ago
get_product_details
get_related_products
search_products
get_search_suggestions
get_cart
5/5 passing latest checkself-healing
Endpoints
5
Updated
22d ago

What is the Ocado API?

The Ocado API gives developers access to 5 endpoints covering Ocado UK's grocery catalog, from keyword search to full product detail pages. search_products returns prices, promotions, availability, and images for up to 300 results per query. get_product_details adds nutrition tables, allergen strings, storage instructions, and star ratings. Together, these endpoints expose enough structured data to build price trackers, dietary filters, and product recommendation tools.

Try it
Search term (e.g. 'milk', 'bread', 'chicken breast')
Maximum number of results to return (1-300)
api.parse.bot/scraper/44d2a146-f43b-415b-8494-308caaef06cf/<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/44d2a146-f43b-415b-8494-308caaef06cf/search_products?query=milk&max_results=5' \
  -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 ocado-com-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.ocado_grocery_api import Ocado, ProductSummary, Product, ProductRelations

ocado = Ocado()

# Search for products and iterate results
for item in ocado.productsummaries.search(query="chicken breast", max_results=5):
    print(item.name, item.price.amount, item.price.currency, item.available)

    # Navigate from summary to full detail
    detail = item.details()
    print(detail.name, detail.brand, detail.allergens, detail.storage)

    if detail.nutrition:
        for nutrient in detail.nutrition:
            print(nutrient.name, nutrient.value)

    if detail.rating:
        print(detail.rating.overall, detail.rating.count)

    # Get related products for this item
    relations = ocado.product(retailer_product_id=item.retailer_product_id).related()
    print(relations.total_related, relations.total_similar)

# Get autocomplete suggestions
suggestions = ocado.suggestions.get(query="chick", limit=5)
print(suggestions.query, suggestions.total)
for s in suggestions.suggestions:
    print(s)

# Check the current cart
cart = ocado.carts.get_active()
print(cart.cart_id, cart.status, cart.item_count)
print(cart.totals.items_retail_price.amount, cart.totals.savings.amount)
print(cart.checkout_info.can_checkout, cart.checkout_info.minimum_threshold.amount)
All endpoints · 5 totalmissing one? ·

Full-text search over Ocado's grocery catalog. Returns decorated product listings with current prices, promotions, availability, and images. Results are grouped by type (featured, cluster). Pagination is not exposed — use max_results to control volume (up to 300).

Input
ParamTypeDescription
queryrequiredstringSearch term (e.g. 'milk', 'bread', 'chicken breast')
max_resultsintegerMaximum number of results to return (1-300)
Response
{
  "type": "object",
  "fields": {
    "query": "string - the search term used",
    "products": "array of product summary objects with product_id, retailer_product_id, name, brand, type, pack_size, price, unit_price, available, image_url, promotions, group_type, quantity_in_basket",
    "total_products": "integer - number of products returned"
  },
  "sample": {
    "data": {
      "query": "milk",
      "products": [
        {
          "name": "Cravendale Filtered Fresh Whole Milk Fresher for Longer",
          "type": "REGULAR",
          "brand": "Cravendale",
          "price": {
            "amount": "2.65",
            "currency": "GBP"
          },
          "available": true,
          "image_url": "https://www.ocado.com/images-v3/eafa5127-d256-497b-9609-4869092accd6/3ce12050-c083-4d31-b754-0f99c90e2d6b/300x300.jpg",
          "pack_size": "2L",
          "group_type": "featured",
          "product_id": "8161bfc9-792f-45a1-a50a-6dec88888d6f",
          "promotions": [
            {
              "id": "f3df6824-52e4-4919-b8cd-490db425d230",
              "type": "OFFER",
              "description": "Buy any 2 for £4"
            }
          ],
          "unit_price": {
            "unit": "fop.price.per.litre",
            "amount": "1.33"
          },
          "quantity_in_basket": 0,
          "retailer_product_id": "24577011"
        }
      ],
      "total_products": 5
    },
    "status": "success"
  }
}

About the Ocado API

Product Search and Discovery

search_products accepts a query string and an optional max_results parameter (1–300) and returns an array of product objects. Each object includes product_id, retailer_product_id, name, brand, pack_size, price, unit_price, available, and an image_url. The unit_price field makes per-unit cost comparisons straightforward without additional calculation. The available boolean lets you filter out out-of-stock items before displaying results.

Product Detail and Nutrition

get_product_details takes a numeric product_id (from search results) and returns the full product record: a description, structured nutrition as an array of {name, value} pairs, an allergens string, storage instructions, an images array with alt text, and a rating object containing an overall score and review count. Fields like allergens and nutrition may return null when the source has no data for a given item, so null-checking is necessary.

Autocomplete and Related Products

get_search_suggestions returns autocomplete strings for a given prefix, or popular/trending terms when query is omitted. This is useful for building typeahead search UIs without managing a local term index. get_related_products returns separate arrays of related_product_ids and similar_product_ids (as UUID strings), plus counts (total_related, total_similar). These IDs can then be passed to get_product_details to retrieve full product records for each suggestion.

Cart State

get_cart requires no inputs and returns the current anonymous cart, including an items array, a totals object with items_retail_price, price_after_promos, and savings, plus a checkout_info block that exposes can_checkout, above_threshold, and minimum_threshold. This is useful for monitoring basket state or verifying minimum order thresholds during checkout flow testing.

Reliability & maintenanceVerified

The Ocado API is a managed, monitored endpoint for ocado.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ocado.com 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 ocado.com 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
6d ago
Latest check
5/5 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 grocery price tracker that monitors price and unit_price changes for specific products over time.
  • Create a dietary filter tool that queries nutrition and allergens fields to flag products matching user restrictions.
  • Power a typeahead search bar using get_search_suggestions with a short query prefix.
  • Generate a product recommendation widget by fetching related_product_ids from get_related_products and resolving each with get_product_details.
  • Audit promotional savings by comparing items_retail_price and price_after_promos from get_cart totals.
  • Aggregate Ocado brand data using the brand field across search results to analyze product range by manufacturer.
  • Check delivery threshold eligibility by reading minimum_threshold and above_threshold from checkout_info in the cart response.
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 Ocado have an official public developer API?+
Ocado does operate a technology and logistics platform (Ocado Technology) aimed at retail partners, but there is no public developer API available to independent developers for catalog or cart data.
What does get_product_details return beyond basic price and name?+
It returns a nutrition array of name/value pairs, an allergens string, storage instructions, a description, an images array with descriptions, and a rating object with an overall score and review count. Any of these fields may be null if the source has no data for that product.
Does the API cover multiple Ocado regions or countries?+
The API covers Ocado UK only. Ocado operates exclusively in the UK market for its grocery offering, so the catalog, prices, and promotions returned reflect UK availability and GBP pricing.
Can I add items to the cart or place orders through this API?+
The API currently supports read-only cart access via get_cart, which returns current contents and totals for an anonymous cart. Write operations such as adding items, updating quantities, or initiating checkout are not covered. You can fork this API on Parse and revise it to add the missing endpoints.
Does search_products support filtering by category, brand, or dietary attribute?+
The search_products endpoint accepts a query string and an optional max_results count. There are no built-in filter parameters for category, brand, price range, or dietary flags. You can fork this API on Parse and revise it to add filter-based browsing endpoints.
Page content last updated . Spec covers 5 endpoints from ocado.com.
Related APIs in Food DiningSee all →
tesco.com API
Search and browse Tesco's complete grocery catalog to find products with detailed nutritional information, ingredient lists, and customer reviews. Explore product suggestions via autocomplete and browse items organized by category to make informed shopping decisions.
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.
coop.it API
Search and browse Coop Italy's product catalog across categories and subcategories to find detailed information about items, prices, and current offers. Discover product recommendations and get comprehensive details including availability and promotional deals to help you shop more efficiently.
morrisons.com API
Search and browse Morrisons grocery products, view detailed information like reviews and pricing, discover active promotions, and get personalized product recommendations. Find exactly what you're looking for with category browsing, search suggestions, and similar product recommendations.
asda.com API
Access data from asda.com.
coop.ch API
Search and browse Coop.ch's entire product catalog, including detailed pricing, product information, and category organization. Find specific groceries, compare items across categories, and access up-to-date pricing data from Switzerland's Coop supermarket.
carrefour.eu API
Search and browse Carrefour's European online product catalog to access pricing, promotions, availability, and detailed product information including nutritional data. Retrieve comprehensive product details across categories to compare prices and find current deals in real-time.
instacart.com API
Search for grocery products across multiple retailers, view store locations and availability, and access detailed product information including prices and descriptions. Find the best deals and nearest stores offering the items you need.