---
uuid: 969f59c6-0a37-4ef8-85ff-8789420294de
date_created: 2025-07-04T13:46:03.174Z
date_updated: 2026-04-07T09:48:40.789Z
seo_url: shopping-calendar
category: Shopping calendar
routes: 
  - GET /v2/products
---

# Shopping Calendar

This scenario explains how to retrieve product information used to power a shopping calendar or merchandising view. It fits interfaces that need to expose available offers with their main product signals.

The flow relies on product-catalog retrieval to display structured information according to market or locale.

## Flow

false

## Overview

This scenario helps expose product data for a calendar-driven shopping experience.

## Prerequisites

* A market or locale context consistent with the product query.
* The headers required by the catalog API.
* Any filters needed to narrow the search scope.

## Expected result

The application can retrieve a structured product base to feed a calendar view, an offer list, or a merchandising surface.

## 1 - Browse the product catalog for shopping events

Use `GET /v2/products` to list the products that will feed the shopping calendar. This route lets you filter the catalog, paginate the result set, and retrieve the minimal product data needed before loading calendar or pricing details.

#### Prerequisites

* Send `accept-language` and `x-api-key`.
* Optionally add `filter`, `limit`, and `page` to narrow the catalog.
* Keep the returned `product_id` values for later detail, calendar, or pricing calls.

#### Calling CURL

```bash
curl -X 'GET' \
  'https://api.clubmed.com/v2/products?limit=20&page=1' \
  -H 'accept: application/json' \
  -H 'accept-language: en-US' \
  -H 'x-api-key: YOUR_API_KEY'
```

#### Example answer

```json
[
  {
    "id": "CHAC_WINTER",
    "title": "Chamonix Mont-Blanc",
    "opening_status": "OPEN",
    "destination": {
      "geographical_area": {
        "label": "Alps"
      }
    },
    "price": {
      "currency": "EUR",
      "best_price": {
        "per_trip": 824
      }
    }
  }
]
```

> **info:** Reuse `id`, `title`, `opening_status`, and the first pricing block to build a shopping calendar page or a merchandising grid before loading full product details.

***

**Response codes**

* `200 OK`: returns the products matching the current filter.
* `206 Partial Content`: the response is paginated and more pages are available.
* `400 Bad Request`: a filter, pagination value, or parameter is invalid.
* `416 Requested Range Not Satisfiable`: the requested pagination range is inconsistent.

**Related route**: [GET https://api.clubmed.com//v2/products](https://api.clubmed.com/doc?search=GET%20%2Fv2%2Fproducts)
