> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Kameleoon.API.Products: Recommendations and search

> Referenz der Methoden von Kameleoon.API.Products, mit denen empfohlene Produkte, Suchergebnisse, Produktinteraktionen, Produktdaten und empfohlene Kollektionen abgerufen werden.

Verwenden Sie diese Methoden, um empfohlene Produkte, Suchergebnisse, Produktinteraktionen, Produktdaten und empfohlene Kollektionen abzurufen.

> [!NOTE]
>
> Dieses Modul ist verfügbar, wenn Sie das Modul "Produktempfehlung" oder das Zusatzmodul "Produkt-Targeting" abonniert haben.

Empfehlungen benötigen korrektes Produkt-Tracking, um aussagekräftige Ergebnisse zu liefern. Siehe [Kameleoon.API.Products: Tracking](https://docs.kameleoon.com/de/developer-docs/apis/activation-api-js/api-reference/modules/products-tracking.md).

## obtainRecommendedProducts

Die Methode `obtainRecommendedProducts()` ruft empfohlene Produkte ab, die vom angegebenen Algorithmus durch einen asynchronen Serveraufruf berechnet werden.

```javascript theme={null}
Kameleoon.API.Products.obtainRecommendedProducts(
  "1a2b3c4d",
  {
    item: 123500,
    exclude: [3, 14, 159, 26535],
    category: 146,
    search_query: "To be or not to be",
    limit: 15,
    brands: ["Alas", "poor", "Yorick", 'kameleooner'],
    categories: [1, 146, 123500]
  },
  function (response) {
    // die Funktionalität des Renderns eines Blocks mit Produktempfehlungen
  },
  function (error) {
    // when something went wrong
  }
);
```

> [!WARNING]
>
> Diese Methode erfordert korrektes Produkttracking, wie `trackProductView()` oder `trackCategoryView()`, um aussagekräftige Ergebnisse zu liefern.

**Arguments**

| Name | Type | Description |
| - | - | - |
| code | String | Eindeutiger Code des Empfehlungsblocks. |
| params | Object | [Parameter zur Steuerung der von der Empfehlungsplattform zurückgegebenen Daten.](#parameter-zur-steuerung-der-von-der-empfehlungsplattform-zurückgegebenen-daten) |
| successCallback | Function | Rückruffunktion, die das API-Antwortobjekt empfängt. Dieses Feld ist erforderlich. |
| errorCallback | Function | Rückruffunktion, die ausgeführt wird, wenn ein Fehler auftritt. Dieses Feld ist optional. |

### Parameter zur Steuerung der von der Empfehlungsplattform zurückgegebenen Daten

| Name | Type | Description |
| - | - | - |
| item | String | ID des aktuellen Produkts. Erforderlich für die Algorithmen "Ähnlich" und "Sie haben dieses Produkt auch gekauft". |
| exclude | Array | Durch Kommas getrennte Liste der Produktkennungen für den Ausschluss. |
| extended | Number | Wenn "1", gibt die Methode vollständige Produktdetails zurück. Wenn weggelassen, gibt die Methode nur Produkt-IDs zurück. |
| category | Number | Erforderlich für Algorithmen auf Kategorieseiten. Begrenzt Empfehlungen auf die angegebene Kategorie. |
| categories | Array | Dieses Feld ist optional. Bei Verwendung gibt es nur empfohlene Produkte aus den angegebenen Kategorien zurück (eine kommagetrennte Liste von Kategorie-IDs). |
| brands | Array | Dieses Feld ist optional. Bei Verwendung gibt es nur empfohlene Produkte aus angegebenen Marken zurück (eine kommagetrennte Liste von Marken). |
| locations | Array | Dieses Feld ist optional. Bei Verwendung gibt es nur empfohlene Produkte zurück, die an den aufgelisteten Standorten verfügbar sind (eine kommagetrennte Liste von Standort-IDs). |
| limit | Number | Dieses Feld ist optional. Maximale Anzahl empfohlener Produkte. |
| exclude\_brands | Number | Dieses Feld ist optional. Eine durch Kommas getrennte Liste von Marken, die aus der Empfehlung ausgeschlossen werden sollen. |

**API response**

Die Rückruffunktion empfängt das API-Antwortobjekt mit den folgenden Werten.

| Name | Type | Description |
| - | - | - |
| html | String | Der HTML-Code des Blocks. Passen Sie die HTML-Vorlage in Ihrem Kameleoon-Benutzerkonto an. |
| title | String | Der Titel des Blocks. Entspricht dem Wert des Elements "Action" in den Blockregeln. |
| products | Array | Liste von Produkt-IDs. |
| id | Number | Eindeutige Blockkennung. Entspricht der Block-ID in der Liste der Blöcke in Ihrem Kameleoon-Benutzerkonto |

## obtainInstantSearchProducts

Die Methode `obtainInstantSearchProducts()` ruft personalisierte Suchergebnisse aus der Kameleoon-Suche durch einen asynchronen Serveraufruf ab.

```javascript theme={null}
Kameleoon.API.Products.obtainInstantSearchProducts(
 {
  search_query: "To be or not to be"
 },
 function (response) {
  // die Funktionalität zum Rendern eines Blocks aus sofortiger Suche
 },
 function (error) {
  // to handle when something goes wrong
 }
);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| search\_query | String | Suchabfrage des Benutzers. Dieses Feld ist erforderlich. |
| successCallback | Function | Rückruffunktion, die das API-Antwortobjekt empfängt. Dieses Feld ist erforderlich. |
| errorCallback | Function | Rückruffunktion, die ausgeführt wird, wenn ein Fehler auftritt. Dieses Feld ist optional. |

**API response**

Die Callback-Funktion erhält das API-Antwortobjekt mit den folgenden Werten. In der Tabelle kennzeichnet `[]` ein Array von Objekten, sodass `products[].name` der Name jedes Produkts ist.

| Name | Type | Description |
| - | - | - |
| search\_query | String | Suchanfrage. |
| categories | Array | Array mit Informationen zu Kategorien. |
| categories\[].id | String | Kategorie-ID. |
| categories\[].name | String | Kategoriename. |
| categories\[].url | String | Kategorie-URL. |
| categories\[].count | Number | Anzahl der Produkte in der Kategorie. |
| filters | Array | Array mit Informationen zu Filtern. |
| filters\[].filter.count | Number | Gesamtanzahl der Produkte mit diesen Parametern. |
| filters\[].filter.values\[].value | String | Bezeichnung des Werts. |
| filters\[].filter.values\[].count | Number | Anzahl der Produkte mit diesem Parameter. |
| html | String | HTML-Code des Blocks mit Produkten. Sie passen die Vorlage in Ihrem Kameleoon-Konto an. |
| price\_range | Object | Minimaler und maximaler Preis der Produkte. |
| price\_range.min | Number | Mindestpreis. |
| price\_range.max | Number | Höchstpreis. |
| products | Array | Array mit Informationen zu Produkten. |
| products\[].description | String | Produktbeschreibung. |
| products\[].url | String | Absolute Produkt-URL. |
| products\[].url\_handle | String | Relative Produkt-URL. |
| products\[].picture | String | URL des Produktbilds im Kameleoon-Speicher. |
| products\[].name | String | Produktname. |
| products\[].price | Number / int | Produktpreis. |
| products\[].price\_full | Number / float | Produktpreis. |
| products\[].price\_formatted | String | Produktpreis mit Währung. |
| products\[].price\_full\_formatted | String | Produktpreis mit Währung. |
| products\[].image\_url | String | Absolute URL des Produktbilds im Kameleoon-Speicher. |
| products\[].image\_url\_handle | String | Relative URL des Produktbilds im Kameleoon-Speicher. |
| products\[].image\_url\_resized | Array | URLs der skalierten Produktbilder. |
| products\[].currency | String | Produktwährung. Entspricht der Währung Ihres Kameleoon-Kontos oder einem benutzerdefinierten Wert, der in den Shop-Einstellungen des Kontos festgelegt ist. |
| products\[].id | String | Produkt-ID. |
| products\[].old\_price | Number / int | Alter Produktpreis. Der Standardwert ist 0. |
| products\[].old\_price\_full | Number / float | Alter Produktpreis. |
| products\[].old\_price\_formatted | String | Alter Produktpreis mit Währung. |
| products\[].old\_price\_full\_formatted | String | Alter Produktpreis mit Währung. |
| products\[].categories | Array | Produktkategorien. Nur enthalten, wenn die Anfrage den Parameter `extended` übergibt. |
| products\[].categories\[].id | String | Kategorie-ID. |
| products\[].categories\[].name | String | Kategoriename. |
| products\[].categories\[].parent\_id | String | ID der übergeordneten Kategorie. |
| products\[].categories\[].url | String | Kategorie-URL. |
| products\[].categories\[].category\_ids | Array | Produktkategorie-IDs. |
| search\_query\_redirects | Array | Array mit Informationen zu Weiterleitungen. |
| search\_query\_redirects\[].query | String | Suchanfrage. |
| search\_query\_redirects\[].redirect\_link | String | URL der Weiterleitung. |
| search\_query\_redirects\[].deep\_link | String | URL für mobile Apps. |
| products\_total | Number | Gesamtanzahl der Produkte. |

## obtainFullSearchProducts

Verwenden Sie die `obtainFullSearchProducts()` Methode, um vollständige Suchergebnisse von der Kameleoon Search-Lösung mit Filteroptionen abzurufen.

```javascript theme={null}
Kameleoon.API.Products.obtainFullSearchProducts(
 {
  search_query: "To be or not to be",
  limit: 15,
  brands: ["Alas", "poor", "Yorick"],
  categories: [1, 146, 100500],
  filters: { key: ["value"], key: ["value"] },
  sort_by: "price",
  order: "asc"
 },
 function (response) {
  // die Funktionalität zum Rendern eines Blocks aus vollständiger Suche
 },
 function (error) {
  // when something went wrong
 }
);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| search\_query | Object | Suchabfrage des Benutzers und optionale Filterparameter. Überprüfen Sie die Filterparameter im nächsten Abschnitt. Dieses Feld ist erforderlich. |
| successCallback | Function | Rückruffunktion, die das API-Antwortobjekt empfängt. Dieses Feld ist erforderlich. |
| errorCallback | Function | Rückruffunktion, die ausgeführt wird, wenn ein Fehler auftritt. Dieses Feld ist optional. |

### Parameter zum Filtern der Ergebnisse

| Name | Type | Description |
| - | - | - |
| search\_query | String | Suchabfrage. Dieses Feld ist erforderlich. |
| limit | Number | Ergebnisbegrenzung. Dieses Feld ist optional. |
| offset | Number | Ergebnis-Offset. Dieses Feld ist optional. |
| category\_limit | Number | Wie viele Kategorien für den Sidebar-Filter zurückgegeben werden. Dieses Feld ist optional. |
| categories | Array | Durch Kommas getrennte Liste der Kategorien zum Filtern. Dieses Feld ist optional. |
| extended | Number | Auf `true` setzen für vollständige Suchergebnisse. |
| sort\_by | String | Sortierparameter: `popular`, `price`, `discount`, `sales_rate`, `date`. Dieses Feld ist optional. |
| order | String | Sortierrichtung: asc oder desc (Standard). Dieses Feld ist optional. |
| locations | Array | Durch Kommas getrennte Liste der Standort-IDs. Dieses Feld ist optional. |
| brands | Array | Durch Kommas getrennte Liste der zu filternden Marken. Dieses Feld ist optional. |
| filters | String | Optionale escaped JSON-Zeichenkette mit Filterparametern. Beispielsweise: `{"bluetooth":["yes"],"offers":["15% cashback"],"weight":["1.6"]}`. Dieses Feld ist optional. |
| price\_min | Number | Mindestpreis. Dieses Feld ist optional. |
| price\_max | Number | Höchstpreis. Dieses Feld ist optional. |
| colors  false | Array | Durch Kommas getrennte Liste der Farben. Dieses Feld ist optional. |
| fashion\_sizes | Array | Durch Kommas getrennte Liste der Größen. Dieses Feld ist optional. |
| exclude | Array | Durch Kommas getrennte Liste der Produkt-IDs, die von den Suchergebnissen ausgeschlossen werden sollen. Dieses Feld ist optional. |
| email | String | Nur für S2S-Integration, wenn der Service die Sitzung des Benutzers nicht hat. Mobile SDK nutzt dies nicht. Dieses Feld ist optional. |
| no\_clarification | Boolean | Deaktiviert die präzisierte Suche. Der Standardwert ist **false**. Verwenden Sie diesen Parameter nur, wenn der Kameleoon-Support Sie dazu anweist. |
| merchants | Array | Durch Kommas getrennte Liste der Händler. Dieses Feld ist optional. |
| filters\_search\_by | String | Verfügbare Optionen für Filter: `name`, `quantity`, `popularity`. Dieses Feld ist optional. |

**API response**

Die Callback-Funktion erhält das API-Antwortobjekt mit den folgenden Werten. In der Tabelle kennzeichnet `[]` ein Array von Objekten, sodass `products[].name` der Name jedes Produkts ist.

| Name | Type | Description |
| - | - | - |
| search\_query | String | Suchabfrage, die der Benutzer eingegeben hat. |
| brands | Array | Array mit Informationen zu Marken. |
| brands\[].name | String | Markenname. |
| brands\[].picture | String | Markenbild. |
| categories | Array | Array mit Informationen zu Kategorien. |
| categories\[].alias | String | Kategorie-Alias. |
| categories\[].id | String | Kategorie-ID. |
| categories\[].name | String | Kategoriename. |
| categories\[].parent | String | ID der übergeordneten Kategorie. |
| categories\[].url | String | Kategorie-URL. |
| filters | Array | Array mit Informationen zu Filtern. |
| filters\[].filter.count | Number | Gesamtanzahl der Produkte mit diesen Parametern. |
| filters\[].filter.values\[].value | String | Bezeichnung des Werts. |
| filters\[].filter.values\[].count | Number | Anzahl der Produkte mit diesem Parameter. |
| html | String | HTML-Code des Blocks mit Produkten. Sie passen die Vorlage in Ihrem Kameleoon-Konto an. |
| price\_range | Object | Minimaler und maximaler Preis der Produkte. |
| price\_range.min | Number | Mindestpreis. |
| price\_range.max | Number | Höchstpreis. |
| products | Array | Array mit Informationen zu Produkten. |
| products\[].brand | String | Produktmarke. |
| products\[].currency | String | Produktwährung. Entspricht der Währung Ihres Kameleoon-Kontos oder einem benutzerdefinierten Wert, der in den Shop-Einstellungen des Kontos festgelegt ist. |
| products\[].id | String | Produkt-ID. |
| products\[].is\_new | Boolean | Produkteigenschaft. Der Standardwert ist null. |
| products\[].name | String | Produktname. |
| products\[].old\_price | String | Alter Produktpreis. Der Standardwert ist 0. |
| products\[].picture | String | URL des Produktbilds im Kameleoon-Speicher. |
| products\[].price | Number | Produktpreis. |
| products\[].price\_formatted | String | Produktpreis mit Währung. |
| products\[].url | String | Produkt-URL. |
| products\[].barcode | String | Produkt-Barcode. Nur enthalten, wenn die Anfrage den Parameter `extended` übergibt. |
| products\[].categories | Array | Produktkategorien. |
| products\[].categories\[].id | String | Kategorie-ID. |
| products\[].categories\[].name | String | Kategoriename. |
| products\[].categories\[].parent | String | ID der übergeordneten Kategorie. |
| products\[].params | Array | Informationen zu Produktparametern. |
| products\[].params\[].key | String | Parametername. |
| products\[].params\[].values | Array | Parameterwerte. |
| products\_total | Number | Gesamtanzahl der Produkte. |

## obtainProductInteractions

Die Methode `obtainProductInteractions()` ruft Interaktionsmetriken für Produkte ab, die über `trackProductView()`, `trackTransaction()` oder `trackAddToCart()` verfolgt werden.

```javascript theme={null}
Kameleoon.API.Products.obtainProductInteractions("123456", product => {
  console.log("product", product); // {123456: {views: 1, cartQuantities: 0, boughtQuantities: 0}}
});
Kameleoon.API.Products.obtainProductInteractions(["123456", "654321"], products => {
  console.log("products", products);
});
Kameleoon.API.Products.obtainProductInteractions(
  "123456",
  callback,
  new Date().getTime() - 1000 * 60 * 60 * 24, // timeBegin
  new Date().getTime() // timeEnd
);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| eans | Array | Produkt-IDs (als Zeichenketten). Dieses Feld ist erforderlich. |
| callback | Function | Rückruffunktion, die die Produktdaten empfängt. Dieses Feld ist erforderlich. |
| timeBegin | Number | Anfang des Datumsbereichs (UNIX-Millisekunden-Zeitstempel). |
| timeEnd | Number | Ende des Datumsbereichs (UNIX-Millisekunden-Zeitstempel). |

**API response**

| Name | Type | Description |
| - | - | - |
| eans | Array | Eindeutige Kennung des Produkts. Jede Produkt-ID ist einer Objektzuordnung zugeordnet, die Interaktionsmetriken enthält. |
| views | integer | Anzahl der Aufrufe des Produkts durch Besucher. |
| cartQuantities | integer | Gesamtanzahl der Male, die Besucher das Produkt in ihren Warenkorb gelegt haben. |
| boughtQuantities | integer | Gesamtanzahl der Male, die Besucher das Produkt gekauft haben. |

## obtainProductData

Die Methode `obtainProductData()` ruft Produktinformationen für Elemente ab, die über `trackProductView()` gesendet wurden.

```javascript theme={null}
Kameleoon.API.Products.obtainProductData("123456", product => {
  console.log("product", product);
});
Kameleoon.API.Products.obtainProductData(["123456", "654321"], products => {
  console.log("products", products);
});
Kameleoon.API.Products.obtainProductData("123456", callback, {
  name: true,
  categoryId: true
}); // {123456: {name: '', categoryId: '' }}
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| eans | Array | Produkt-IDs (als Zeichenketten). Dieses Feld ist erforderlich. |
| callback | Function | Rückruffunktion, die die Produktdaten empfängt. Dieses Feld ist erforderlich. |
| parameters | Object | Optionale Parameter zum Abrufen bestimmter Felder. Standard: `{ all: true }`. |

**API response**

| Name | Type | Description |
| - | - | - |
| eans | Array | Eindeutige Kennung des Produkts. Jede Produkt-ID ist einer Objektzuordnung zugeordnet, die Interaktionsmetriken enthält. |
| productData | Object | [Product-Objekt](https://docs.kameleoon.com/de/developer-docs/apis/activation-api-js/api-reference/objects/goal-segment-trigger-and-product.md#product). Dieses Feld erhält dasselbe Objekt, das `trackProductView` sendet. |

## obtainRecommendedCollections

The `obtainRecommendedCollections()` method retrieves products von der specified collection.

```javascript theme={null}
Kameleoon.API.Products.obtainRecommendedCollections("123456", collections => {
    /* Die Funktionalität des Renderns eines Produktkollektion-Blocks */
    console.log("collections", collections);
}, error => {
    /* Error handling logic if something goes wrong */
});
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| collectionId | String | ID der Produktkollektion, verfügbar im Bereich Product Collections des Dashboards. |
| successCallback | Function | Rückruffunktion, die das API-Antwortobjekt empfängt. Dieses Feld ist erforderlich. |
| errorCallback | Function | Rückruffunktion, die ausgeführt wird, wenn ein Fehler auftritt. Dieses Feld ist optional. |

**API response**

**Products**

Die API gibt ein Array von Objekten zurück. Jedes Objekt im `products`-Array enthält das Folgende:

| **Parameter** | **Type** | **Description** |
| - | - | - |
| name | String | Name des product |
| url | String (URL) | URL der Produktseite |
| description | String | Beschreibung des Produkts |
| category\_ids | Array von Strings | Liste von Kategorie-IDs, zu denen das Produkt gehört |
| brand | String | Marke des Produkts |
| fashion\_feature | String | Fashion feature (e.g., `"adult"`) |
| fashion\_gender | String | Beabsichtigtes Geschlecht für das Produkt |
| sales\_rate | Integer | Product's sales rate |
| relative\_sales\_rate | Float | Verkaufsrate im Verhältnis zu anderen Produkten |
| picture | String (URL) | URL des Hauptproduktbildes |
| categories | Array von Objects | Liste von category objects (system-defined structure) |
| price\_formatted | String | Formatted product price (e.g., `$29.99`) |
| price\_full\_formatted | String | Formatted full/original price |
| price | Float | Current product price |
| price\_full | Float | Ursprünglicher Preis (Vollpreis) vor Rabatten |
| image\_url | String (URL) | URL des in der Größe angepassten Produktbildes |
| image\_url\_handle | String (URL) | Processed image URL (handle-based) |
| image\_url\_resized | String (URL) | Resized image URL |
| url\_handle | String | URL-Griff für den Zugriff auf das Produkt in der Kollektion |
| currency | String | Währungscode, der für den Produktpreis verwendet wird (z. B. `USD`, `EUR`) |
| id | String | Produkt-ID (numerisch oder String je nach System) |
| html | String (HTML) | Die HTML-Vorlage, die Sie bei der Erstellung der Kollektion ausgewählt haben |
