
BesteKauf.de feed for Shopify
BesteKauf.de is the German storefront of Compare Group, the Zwolle-based operator whose thirteen comparison sites across twelve countries all read the same feed specification; its imprint names Compare International B.V. in Zwolle as the company behind it. It pairs your offer onto a product card by EAN and SKU, not by name, and it bills per click. Feedflock builds the XML file from your Shopify catalog on a template written against Compare Group's own schema, hosts it on a stable URL and regenerates it on your schedule, as often as every hour.

An old price in the feed becomes a deal on the listing.
Off sale, basePrice is the only price. The moment a sale runs in Shopify, basePrice drops to the discounted price and the old price moves to originalPrice, and BesteKauf.de automatically creates and displays a deal from that pair, no deal block needed. Feedflock derives both from Shopify's compare-at price, so the deal appears exactly while the sale runs.
Catch feed issues before BesteKauf.de does.
Before every generation Feedflock checks that every field the channel requires is filled, and, on templates verified against the channel's own spec, that the values fit its rules. Most problems are fixed with one click, without editing products in Shopify.
Setup
Live in five steps
From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.
Register with Compare Group
Sign up through business.comparegroup.eu. There is no German business portal; business.bestekauf.de redirects straight to the English one. Registration asks for your company details, VAT number, a SEPA direct-debit form, your domain and shop logo, and the feed URL. A fully prepared shop often goes live within 2–3 days; connecting a new feed can take up to 5.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.
Pick the BesteKauf.de template
One offer per variant, with shopReference, shopOfferId, name, brand, EAN and SKU identifier blocks, state and inStock mapped from the start. The shipping country code defaults to DE (the value Compare Group added to its schema for the German storefront), and your shop domain fills the mandatory shopReference.
Set delivery time and price
Shopify has no per-product delivery time or shipping price, and BesteKauf.de asks for both in every offer. Until you set them, no shippingOption is written, because 0.00 would advertise free delivery. Selling food, beverages or perfume? Map a metafield for units and unit too: they are mandatory in Germany for some categories.
Paste the feed URL
Copy the hosted URL into your registration. BesteKauf.de's crawler fetches it four times a day by default. If you ever move or restructure the feed, tell partner@bestekauf.de beforehand: the URL is the whole integration.
https://feedflock.appfleece.com/f/demo-bestekauf/bestekauf.xml
The feed
What the channel receives
<offer> <shopReference>shop.example</shopReference> <shopOfferId>SKU-2048</shopOfferId> <shopCategory>Men's shirts</shopCategory> <products> <product> <name>Linen shirt Sand M</name> <description>A breathable linen shirt in a regular cut.</description> <brand>Nordlin</brand> <identifiers> <identifier><type>EAN</type><value>8594000123453</value></identifier> <identifier><type>SKU</type><value>SKU-2048</value></identifier> </identifiers> <features> <feature><name>color</name><value>Sand</value></feature> <feature><name>size</name><value>M</value></feature> </features> <state>NEW</state> <variantGroup>8236409175213</variantGroup> </product> </products> <basePrice>49.00</basePrice> <deepLink>https://shop.example/products/linen-shirt-sand?variant=44718293450817</deepLink> <media> <medium><type>IMAGE</type><url>https://cdn.shop.example/img/linen-shirt-sand.jpg</url></medium> </media> <inStock>TRUE</inStock> <nrInStock>12</nrInStock> <shippingOptions> <shippingOption> <countryCode>DE</countryCode> <deliveryTime>1-3 days</deliveryTime> <method>DELIVERY</method> <price>4.95</price> </shippingOption> </shippingOptions> </offer>

Nordlin
Linen shirt Sand
49 €
Feed fields
shopReference
shop.example
shopOfferId
SKU-2048
shopCategory
Men's shirts
name
Linen shirt Sand M
description
A breathable linen shirt in a regular cut.
brand
Nordlin
type
EAN
value
8594000123453
type
SKU
value
SKU-2048
name
color
value
Sand
name
size
value
M
state
NEW
variantGroup
8236409175213
basePrice
49.00
deepLink
https://shop.example/products/linen-shirt-sand?variant=44718293450817
type
IMAGE
url
https://cdn.shop.example/img/linen-shirt-sand.jpg
inStock
TRUE
nrInStock
12
countryCode
DE
deliveryTime
1-3 days
method
DELIVERY
price
4.95
The channel
Compare Group's German storefront
BesteKauf.de is the German face of Compare Group, which reports some 41 million products, over 3,200 webshops and 4.3 million leads a month across its thirteen sites, with a live German rate card. One feed specification serves all of them.
You pay per click, with a low floor
Billing is cost per click (a click being a registered deeplink click, capped at five per visitor per day), with a minimum monthly invoice of €25 excluding VAT. There is no commission on sales.
German unit pricing built in
Send units and unit and Compare Group calculates the price per unit for you, which is mandatory for some German categories like food, beverages and perfume. And a compare-at price becomes a deal on the listing automatically, no deal block needed.
The feed
- A template written against Compare Group's own XSD: the nested element names (name, state, identifier type/value), the required set and the enums, not the flat CSV column names the manual's table prints
- One offer per variant, with variantGroup from the Shopify product id putting the sizes back together and a stable shopOfferId that survives renames
- shopReference, required by the schema even for a single shop, defaults to your shop domain, the value the Omnichannel manual documents
- The shipping country code defaults to DE, the value Compare Group added to its schema (v1.5) for the German storefront; the public v1.4 still accepts only NL, BE, FR and FI
- EAN accepts 13 or 14 digits, so a Shopify GTIN-14 with a leading zero goes out as it is
- No accidental free shipping: the shippingOption block is written only once you set a delivery time and price, because 0.00 is a free-delivery claim
- A stable hosted URL regenerated as often as every hour, with fetch tracking that shows when BesteKauf.de last pulled the file
Deep dive
How BesteKauf.de reads your feed
- One
XMLfile on aURLyou host: no upload, noAPI, no authentication - Fetched four times a day by default, at least once; more often on request
- Connecting a new feed can take up to 5 days
- Any structural change or new
URLhas to be reported to Compare Group upfront - One English manual serves every Compare Group site. There is no German handbook, and business.bestekauf.de redirects to business.comparegroup.eu
Technical details
BesteKauf.de's model is the simplest possible transport: the feed lives on your server at a public URL, and their crawler fetches it, four times a day on the default schedule, at least once. There is no upload form, no SFTP and no authentication anywhere in the manual; the example URL is plain http.
Feedflock hosts the file on a stable URL and regenerates it on your schedule, as often as every hour, so each of those four daily fetches sees current prices and stock. What the URL must never do is change silently: Compare Group asks to be informed upfront about any new location or structure, by e-mail to partner@bestekauf.de or your account manager.
Pairing runs on identifiers, not on the name
EANis the first pairing key,SKU(the manufacturer part number) plus brand the second- The product name is explicitly not a pairing key, and must not contain the brand or promotional text
- Every size or colour is its own offer; variantGroup groups them back together
- shopCategory is your own category path: specific, lowest-level, aimed at Compare Group's German tree
Technical details
BesteKauf.de links your offer to its product catalog by EAN first and by SKU with brand second. Compare Group's SKU means the manufacturer part number (MPN), not your internal code. The name is deliberately kept out of pairing: it should be unique, and it should contain neither the brand nor promotional text.
Because every variant is a separate offer, the variant belongs in the name so two sizes never collide, and variantGroup (the Shopify product id in Feedflock's default) ties them back together. Your category text is the fallback matcher: your own breadcrumb, as specific and as close to the BesteKauf.de tree as you can make it. Compare Group publishes a German tree of about 3,500 categories, roughly half the size of the Dutch and Finnish ones, purely as a target to aim at.
Euro prices, two decimals, deals included
- basePrice is the selling price including
VAT: a dot, two decimals, no thousands separator, no currency symbol. All prices are assumed to be in euro - A price of 0 fails the schema, and so does one decimal
- originalPrice is the old price; present, it becomes a deal on the listing automatically
- units and unit let Compare Group compute the price per unit, mandatory in Germany for some categories
Technical details
Every price in the feed is gross and in euro: “49.00”, never “49”, “49,00” or “€49.00”, however natural the German comma feels. The schema enforces the shape (a decimal greater than zero with exactly two decimals or none), and there is no net-price or VAT element anywhere in the format.
For promotions you rarely need more than Shopify's compare-at price: mapped to originalPrice, it makes BesteKauf.de create and display a deal automatically. And if you sell by weight or volume, units plus unit (from a closed list of fourteen, ml to kg) let Compare Group calculate the unit price itself, a pair Germany requires for categories like food, beverages and perfume.
Delivery is a mode, not a carrier
- Each offer can carry repeated shippingOption blocks, per country, per mode
- method is one of
DELIVERY,EXPRESSorPICKUP; there is no carrier vocabulary at all: noDHL, noDPD, no Hermes - The price is a total including
VAT, and 0.00 means free delivery - Empty by default: the block is written only once you set a delivery time and price
Technical details
Compare Group is unusual among comparison sites: delivery is described per offer, repeatable, and without a single carrier name. A shippingOption says where (a country code: DE for this storefront, legal since Compare Group widened its schema to the twelve countries it operates in), how fast (a free-text delivery time: “1 day”, and “2-3 days is better than 2-7 days”), which mode (delivery to door, same-day express or in-store pickup) and at what total price including VAT.
Because 0.00 is a claim of free delivery, Feedflock writes no shippingOption at all until you set a delivery time and price; Shopify has neither per product. Fill them in: Compare Group names delivery times among the factors that decide how many clicks your offers receive.
The takeaway
One URL, fetched four times a day, against a specification that pairs on identifiers and forgives nothing about price format. Feedflock keeps your BesteKauf.de feed on the schema, on your schedule, straight from Shopify.
Claude · ChatGPT
Or set up your BesteKauf.de feed in chat
Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to BesteKauf.de's own tree and tells you what is still missing. You approve every change.
Create a BesteKauf.de feed for my store and map my categories.
I'll create it as a draft and show you each change before I make it.
FAQ
Related feeds
Explore all 101 channelsGet on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.