GPSR Contacts

Overview

The Contacts API lets you manage GPSR (General Product Safety Regulation) contact information for your assortment: the manufacturer's contact details and, where applicable, the contact details of your selected EU responsible person / representative.

Contact hierarchy

Contacts live at two levels, from broadest to most specific:

Level Scope Base path
Manufacturer Applies to all of a manufacturer's items unless overridden /contacts/manufacturers/{manufacturer_name}
Product Overrides the manufacturer-level contact for a specific product /contacts/products/{ean}

Contact types

Each level supports two types (at most one of each per seller):

contact_type Meaning
manufacturer The manufacturer of the product
eu-responsible-person The selected EU responsible person / representative

How contacts are surfaced on the PDP

Each contact stored via this API is seller-scoped — it represents your contact data for a given manufacturer or product, independent of other sellers. How contacts are surfaced to end customers depends on the type:

Contact type PDP behaviour
manufacturer One contact is selected from all sellers' submissions using Kaufland's internal decision logic. Submitting a contact does not guarantee it will be displayed.
eu-responsible-person All sellers' submissions are shown on the PDP independently. Your contact will always appear if set.

Product Contacts

Product-level contacts are addressed by EAN and override the manufacturer-level contact for that product.

Listing a product's contacts

GET https://sellerapi.kaufland.com/v2/contacts/products/4006381333931

{
    "contacts": [
        {
            "contact_type": "manufacturer",
            "contact": {
                "name": "Musterbetrieb GmbH",
                "postal_address": {
                    "street": "Musterstraße",
                    "house_number": "1A",
                    "city": "Berlin",
                    "postal_code": "10115",
                    "country_code": "DE",
                    "address_additional": null
                },
                "contact_info": {
                    "email_address": "[email protected]",
                    "website_url": "https://musterbetrieb.example/gpsr",
                    "phone_number": null
                }
            },
            "created_at": "2024-03-15T09:00:00.000Z",
            "updated_at": null
        }
    ]
}

Returns an empty contacts array when no contacts have been set. Returns 404 when the EAN cannot be resolved to a product in your assortment.

Creating or replacing a product contact

PUT https://sellerapi.kaufland.com/v2/contacts/products/4006381333931/manufacturer

Idempotent — if a contact of the given type already exists for this product it is replaced in full.

{
    "name": "Musterbetrieb GmbH",
    "postal_address": {
        "street": "Musterstraße",
        "house_number": "1A",
        "city": "Berlin",
        "postal_code": "10115",
        "country_code": "DE"
    },
    "contact_info": {
        "email_address": "[email protected]",
        "website_url": "https://musterbetrieb.example/gpsr"
    }
}

contact_info must contain at least one of email_address or website_url. phone_number is always optional. website_url must be a valid URL with a hostname that has a top-level domain. The scheme (e.g. https://) is optional — bare domains like example.com are accepted.

postal_address.country_code is case-insensitive and normalized to uppercase. postal_address.postal_code is required whenever country_code is an EU member state (optional otherwise). When contact_type is eu-responsible-person, country_code itself must be an EU member state.

Removing a product contact

DELETE https://sellerapi.kaufland.com/v2/contacts/products/4006381333931/manufacturer

Idempotent — returns 204 on success even if no contact of that type was set for the product. Returns 404 only when the EAN cannot be resolved to a product.

Manufacturer Contacts

Manufacturer-level contacts are addressed by manufacturer_name, resolved server-side against the Kaufland product catalog — including configured synonyms, so alternate spellings and capitalisation variants (e.g. BOSCH, Bosch, bosch) are accepted and transparently mapped to the canonical entry. Names containing spaces or special characters must be percent-encoded (e.g. M%C3%BCller%20GmbH).

Listing a manufacturer's contacts

GET https://sellerapi.kaufland.com/v2/contacts/manufacturers/Bosch

{
    "manufacturer_name": "Robert Bosch GmbH",
    "contacts": []
}

The response includes the canonical manufacturer_name as stored in the catalog, so you can confirm which entry was matched when a synonym or alternate spelling was used. Returns 404 when the name cannot be resolved to any known manufacturer.

Creating or replacing a manufacturer contact

PUT https://sellerapi.kaufland.com/v2/contacts/manufacturers/Bosch/eu-responsible-person

Same request body shape and idempotency semantics as upserting a product contact.

Removing a manufacturer contact

DELETE https://sellerapi.kaufland.com/v2/contacts/manufacturers/Bosch/eu-responsible-person

Idempotent — returns 204 on success even if no contact of that type was set for the manufacturer. Returns 404 only when the name cannot be resolved to a known manufacturer.

Error responses

Errors follow the standard Problem Details format. See the Problem Types reference for the full list.

Most request-body validation failures — including all of the rules below — are reported as 400 /problems/validation-error, with the specific field and reason in the response's errors array:

  • contact_info must contain at least one of email_address or website_url
  • website_url must be a valid URL with a hostname that has a top-level domain; the scheme (e.g. https://) is optional — bare domains like example.com are accepted
  • postal_address.country_code must be a 2-letter ISO 3166-1 alpha-2 code (case-insensitive, normalized to uppercase)
  • postal_address.postal_code is required whenever country_code is an EU member state
  • postal_address.country_code must be an EU member state when contact_type is eu-responsible-person
  • name, street, city, and address_additional are limited to 255 characters; house_number and phone_number to 50; postal_code to 20; website_url to 2048

Not-found errors use dedicated types: 404 /problems/contacts/product-not-found when the EAN can't be resolved, and 404 /problems/contacts/manufacturer-not-found when the manufacturer name can't be resolved. See the Problem Types reference for the remaining, less common types.