Introduction

In response to the dynamic landscape of the retail and grocery sectors, Deliveroo is proud to introduce the Catalogue API, a purpose-built integration solution tailored for non-restaurant partners. This initiative arises from the evolving demands of our Grocery and Retail partners, highlighting the need for a versatile platform that seamlessly adapts to their unique requirements.

What is the Catalogue API?

The Catalogue API is designed to empower non-restaurant partners, such as Grocery, Specialist and Retail businesses, to effortlessly integrate with the Deliveroo platform. Unlike the Menu API, which originated with a focus on restaurants, the Catalogue API is crafted to meet the diverse needs of the non-restaurant sector, providing a streamlined solution for uploading and managing extensive item catalogues.

Benefits for Grocery and Retail Partners

Future-Proof Integration

One of the key advantages of the Catalogue API is the commitment to providing partners with all new and future releases. This ensures that our Grocery and Retail partners will always have access to the latest features and enhancements, allowing them to stay at the forefront of the evolving digital landscape. Please note that the features and enhancements released as part of the Catalogue API will not be available on the Menu API.

Support for Larger SKU Counts

The Catalogue API is designed to handle large-scale item catalogues, supporting larger SKU counts fit for purpose for partners. This scalability is crucial for partners in the Grocery and Retail sectors, accommodating their diverse array of products and ensuring a seamless integration experience.

Retail and Grocery-Specific Data Attributes

Recognizing the unique attributes and terminology in the Retail and Grocery domains, the Catalogue API includes tailored features. This allows partners to manage their catalogues with precision, incorporating industry-specific data attributes such as barcodes, substitution control flags, and legal classifications for items like medicines.

Catalogue API vs. Menu API

While the Menu API was initially developed for restaurant partners and later adapted for Grocery, the Catalogue API is purposefully designed for non-restaurant partners. It addresses the specific needs of the Grocery and Retail sectors, providing a dedicated integration path for partners outside the restaurant domain.

The Catalogue API aims to bridge the existing gap by offering a comprehensive solution for non-restaurant partners. It accommodates extensive catalogues, and non-restaurant-specific data attributes, and allows for independent evolution over time, distinct from the restaurant-focused Menu API.

Details of the Menu API offering can be found here.

Features Matrix of Catalogue APIs

FeatureDescriptionAvailableUpcoming Releases
Create CatalogueAbility to create catalogues & allow customization for each site with a tailored product assortment
Detailed Items InformationAbility to store comprehensive item and category details, including modifiers and classification data
Real-time UpdatesAbility to get instant successful or unsuccessful updates to the catalogue with rate limiting for optimal system usage
Item SKU Range Up to 10KAbility to create a catalogue up to 10K SKUs
BarcodesAbility to assign multiple GTINs/Barcodes per item
Next Generation Menu (NGM) SupportAbility to publish the catalogue in NGM format, along with the default non-NGM format
Update Stock CatalogueAbility to set Items stock to 'available' and 'unavailable' statuses
Item SKU Range Up to 30KAbility to create a catalogue up to 30K SKUs
Catalogue Delta UpdatesAbility to make delta updates to the catalogue when adding/removing items
Catalogue API via Developer portalAbility to self-service Catalogue API in the Developer Portal
Variable WeightAbility to capture item and order data used for products sold by weight (or by other units of measurement)

Examples

{
   "version": "catalogue-upload-v1",
   "items": [
     {
     "id": "789",
     "plu" : "789-plu",
     "barcodes"  : ["5000169153666"],
     "name": {
     "en": "Deliveroo Bananas 5 per Pack"
     },
     "description": {
     "en": "Deliveroo Bananas 5 per Pack"
     },
     "media": [
       {
      "media_type":"main_image", 
      "media_url": "https://xxx/FRUITS-APPLES_BANANAS.jpg"
       }
     ],
     "price_info": { 
       "price": 150 
     },
     "tax_rate": "20.0",
     "is_eligible_as_replacement": true,
     "is_eligible_for_substitution": true,
     "is_returnable": false,
     "classifications": [],
     "allergies": ["no_allergens"],
     "diets": [],
     "max_quantity": null,
     "nutritional_info": {
      "energy_kcal": {
          "low": 89,
          "high": 100
        }
     },
     "highlights": ["in_store_price"],
     "modifier_ids": [],
     "operational_name": "Deliveroo Bananas 5 per Pack"
     }
   ],
   "sites": [{
     "external_id": "5000",
     "site_ids": ["5000"],
     "item_ids": ["789"],
     "hero_image": { "url": "https://xxx/Store_hero_image.jpg" },
     "experience": "aisles",
     "merchandise_collections": {
       "item_categories": [
        {
         "id": "beer",
         "name": {"en": "Yummy Fruits"},
         "description": {"en": "Hot Summers - Chilled Beers"},
         "item_ids": ["789"]
       }
     ]
     },
     "categories": {
       "item_categories": [
       {
         "id": "fruit",
         "name": {"en": "Fruits"},
         "description": {"en": "Fruits"},
         "item_ids": ["789"]
       }]
     },
     "modifiers": []
   }]
 }
{
  "brand_id": "partner-brand",
  "created_at": "2024-04-18T15:54:01.202080484Z",
  "error_messages": [
    "items: (4: (barcodes: the length must be no more than 1.).)."
  ],
  "event": "catalogue_upload",
  "status": "error",
  "updated_at": "2024-04-18T15:54:07.60131891Z",
  "upload_id": "eda51ef1-deda-4951-86f9-61d8aface7b1"
}
{
  "brand_id": "partner-brand",
  "created_at": "2024-04-18T15:55:07.633822806Z",
  "event": "catalogue_upload",
  "status": "success",
  "updated_at": "2024-04-18T15:55:14.644485829Z",
  "upload_id": "73f06b39-3c1d-4d4a-8e27-88c1666981da"
}

📘

Unchanged Catalogue

In the case of the catalogue details to be uploaded are the same as the existing details, then an error response is returned with the additional information of the result. The result will contain the error message File already uploaded.

{
  "brand_id": "partner-brand",
  "created_at": "2024-04-18T15:52:14.49683622Z",
  "error_messages": [
    "file already uploaded"
  ],
  "event": "catalogue_upload",
  "status": "error",
  "updated_at": "2024-04-18T15:52:23.001059154Z",
  "upload_id": "ae8dd9b6-4d2d-4c53-a9a2-afd433229500"
}