Similar Product Groups
This endpoint is for the same sellers as GET /similar-products/buybox — sellers whose products
compete with very similar products from other sellers rather than with identical ones, typically own-brand
(private label) products, and for repricers and technology partners. Use this endpoint to see all your
groups of similar products at once and decide where to act first.
Kaufland groups each of your products with closely comparable products from other sellers, items where shoppers decide mainly on price. This endpoint returns those groups for one storefront. For every group you get your own price position and sales position, how far your customer price is from the best offer in the group, and the competing offers ranked using the same calculation as the Seller Portal. Ranking considers the voucher-discounted price, shipping cost, and delivery time; the price gap compares the voucher-discounted price plus shipping. Use it to see where you are already competitive and where a price change would move you up.
What a group of similar products is
Many products compete for the customer's attention without sharing an EAN, so they never meet in the same Buy Box. A customer looking for a 10-metre garden hose compares a handful of very similar hoses from different sellers and usually picks the cheapest one that fits. Kaufland uses an AI-based process to find these very similar products and puts them into a group of similar products. Most products in such groups are own brands, but a product that also has a regular Buy Box can be part of a group. The grouping is automated and not perfect: sellers can remove or add competitors in the Seller Portal (Pricing Optimisation → Private label products), and those adjustments are reflected in this endpoint.
How this relates to /similar-products/buybox
GET /similar-products/buyboxis the competitor list for one product, in the/buyboxshape.GET /similar-products/groups(this endpoint) is every group you are in, with your position, the gap, the demand and the recommendation.
How to use the result
group_demand |
Start with groups where it is high and you are not rank 1. |
easy_win |
Marks the quickest improvements. |
number_of_competitors |
The true group size, while ladder is capped at 250. |
own_sales_rank |
null means it is not available, not that it is bad. |
is_excluded |
Competitors you excluded in the Seller Portal stay visible, with is_excluded: true. |
Related
- GET /similar-products/buybox
- Seller Portal: Pricing Optimisation → Private label products
Endpoint
HTTP method: GET
URL: https://sellerapi.kaufland.com/v2/similar-products/groups
Query parameters:
| Parameter | Required | Description |
|---|---|---|
storefront |
Yes | The storefront you want results for (e.g. de for Kaufland.de). |
offset |
No | How many groups to skip. Use it with limit to page through your groups. Defaults
to 0. |
limit |
No | How many groups to return per request, between 1 and 50. Defaults to 20. Each
group lists up to 250 offers. |
If none of your products are in a group of similar products yet, the response is { "data": [] }.
This is not an error.
Sample response
{
"data": [
{
"group_id": "a1b2c3",
"storefront": "de",
"currency": "EUR",
"group_demand": "high",
"own_price_rank": 1,
"own_sales_rank": 1,
"own_share": "high",
"gap_to_best_price": 149,
"number_of_competitors": 4,
"easy_win": true,
"recommendation": "focus",
"ladder": [
{
"price_rank": 1,
"seller": "Example Seller GmbH",
"id_product": 123456789,
"product_name": "Example product",
"ean": "1234567890123",
"price": 1999,
"shipping_cost": 299,
"delivery_time_min": 1,
"delivery_time_max": 3,
"ratings_count": 128,
"average_rating": 4.5,
"manufacturer_name": "Example Manufacturer",
"voucher": null,
"is_excluded": false,
"is_own_offer": false
}
]
}
],
"pagination": {
"offset": 0,
"limit": 20,
"total": 4
}
}
The complete response schema, including all field types, is available in the endpoint specification.
Response Fields
Group fields
| Field | Type | Description |
|---|---|---|
group_id |
String |
Identifier of the group of similar products. |
storefront |
String |
Storefront the group belongs to. |
currency |
String |
ISO 4217 currency of all monetary values in the group. |
group_demand |
String |
How much customers buy across the whole group compared with other groups: high or
low. |
own_price_rank |
Integer |
Your rank among the products in the group, using voucher-discounted price, shipping cost, and delivery time; your own other offers are not counted. Ranks can have gaps where unavailable offers were left out. |
own_sales_rank |
Integer or null |
The seller's sales rank within the group, or null if not available. |
own_share |
"high" | "low" |
Your share of the group's GMV: high or low. |
gap_to_best_price |
Integer |
Difference between your customer price and the best offer's customer price, in minor units of
currency. Customer price is the offer price after any voucher discount, plus
shipping. |
number_of_competitors |
Integer |
Total number of competing offers in the group before the ladder cap is applied. |
easy_win |
Boolean |
Your customer price (after voucher discount plus shipping) is very close to the best offer's customer price, so a small change could move you to rank 1. |
recommendation |
String or null |
One of focus (high demand, low share), defend (high demand, high
share), grow (low demand, low share), or maintain (low demand, high
share). null when demand or share cannot be determined for the group. |
ladder |
Array |
Personalised-rank-sorted competitor ladder for the group, limited to 250 available offers; see below. |
Ladder entry fields
| Field | Type | Description |
|---|---|---|
price_rank |
Integer |
Rank of this offer within the group, using voucher-discounted price, shipping cost, and delivery time; 1 = best. |
seller |
String |
Name of the competing seller. |
id_product |
Integer |
Kaufland's product ID of the competing product. |
product_name |
String |
Product title. |
ean |
String or null |
Main EAN of the product, or null when it is not available. |
price |
Integer |
Offer price, in minor units of the group currency, before voucher discount and
excluding shipping. |
shipping_cost |
Integer |
Shipping cost in minor units of currency. |
delivery_time_min |
Integer |
Minimum delivery time in days. |
delivery_time_max |
Integer |
Maximum delivery time in days. |
ratings_count |
Integer |
Number of ratings for the offer. |
average_rating |
Number |
Average review rating for the offer. |
manufacturer_name |
String or null |
Manufacturer name. |
voucher |
Object or null |
Applied voucher, including discount amount, type, and discounted price. |
is_excluded |
Boolean |
Whether the offer is excluded from configured competitor calculations. Excluded offers remain visible in the ladder. |
is_own_offer |
Boolean |
Whether the offer belongs to the authenticated seller. |
Voucher fields
| Field | Type | Description |
|---|---|---|
discount_amount |
Integer |
Discount amount; either a percentage or a minor-currency-unit amount depending on
discount_type. |
discount_type |
String |
One of percent or fixed. |
discounted_price |
Integer |
Price after the voucher discount is applied, in minor units of the group currency. |