Preisreferenz

Das Verzeichnis Lieferbarer Bücher (VLB) ist die allgemein gültige Referenzdatenbank für die gebundenen Ladenpreise aller lieferbaren deutschen Bücher. Das ist seit Juni 2011 in der Verkehrsordnung für den Buchhandel des Börsenvereins des Deutschen Buchhandels geregelt, die um eine entsprechende Bestimmung erweitert wurde.

Mit der Änderung der Verkehrsordnung sind die von den Verlagen im VLB angegebenen Preise die allgemein gültigen.

Mit dem Preisreferenzexport stellen wir Ihnen somit immer die Preise zur Verfügung, die nach den Regeln der Buchpreisbindung verbindlich sind.

Inhalt und Format

Ein Datensatz ist Teil der VLB-Preisreferenz, wenn:

  • ein Titel neu gemeldet wird (INSERT)
  • eine Preiskorrektur an den Währungen EUR-DE, EUR-AT oder CHF vorliegt (UPDATE)
  • ein Titel gelöscht, zurückgezogen oder als vergriffen gemeldet wird (DELETE)

Die in der Preisreferenz enthaltenen Preisreferenzangaben sind ausschließlich für EUR-DE, EUR-AT und CHF.

Enthaltene Preisarten (jeweils gebunden und ungebunden):

  • Subskriptionspreise
  • Ladenpreise, bei denen es sich nicht um Subskriptionspreise handelt
  • Sonderpreise, wie z.B. reduzierte Preise mit zusätzlicher Abnahmeverpflichtung

Die konkreten Preistypen finden Sie in der Spezifikation der Felder.

Die VLB-Preisreferenz wird im XML-Format im UTF-8 Zeichensatz bereitgestellt.

Informationen zu einzelnen Produkten bzw. Datensätzen sind jeweils in product-Elementen abgelegt. Sämtliche Datensätze sind im Root-Knoten (products) gekapselt.

<products>
  <product>...</product>
  <product>...</product>
  ...
</products>

Der einzelne Datensatz (product) ist in drei Bereiche unterteilt. Diese finden sich direkt auf der Elementebene unter dem product-Element.

  1. Elemente zu allgemeinen Titelinformationen, wie ausgeführte Aktion, ISBN-13, VLB Record ID, Datum der letzten Preiskorrektur
  2. Informationen zur Preisbindung EUR-DE und EUR-AT
  3. Preisangabe für D-A-CH-Preise eines Produktes
<product>
  <action>...<action>
  <isbn>...<isbn>
  ...
  <fixed_retailprice>...</fixed_retailprice>
  <last_price_mod>...</last_price_mod>
  <price>
    ...
    <tax_component>...</tax_component>
    ...
  </price>
</product>

Typische Anwendungsfälle

  1. Angabe eines zukünftigen Preises
  2. Änderung des aktuell gültigen Preises
  3. Ausweisung der Ladenpreisaufhebung
  4. Mehrteiliges Produkt mit MwSt-Splitting
  5. Produkte ohne Preisangabe

Anwendungsfall 1: Angabe eines zukünftigen Preises

Wenn für ein Land ein Preis angegeben wurde, der erst zu einem gewissen Datum in Kraft tritt, ist für dieses Land der aktuelle sowie der zukünftige Preis im Preisreferenz-Datensatz zum Zeitpunkt der Preisbekanntmachung zu finden. Die Gültigkeitsdauer der Preise wird mittels price_effective_from und price_effective_until definiert.

Bitte beachten Sie: An dem Tag, an dem der zukünftige Preis gültig wird, wird das Produkt erneut in der Preisreferenz sein. Zu diesem Zeitpunkt wird nur der gültige Preis darin zu finden sein, insofern keine weiteren zukünftigen Preise bekannt gemacht wurden.

Anwendungsfall 2: Änderung des aktuell gültigen Preises

Dieser Fall tritt ein, wenn wie im letzten Absatz beschrieben, ein zuvor gemeldeter zukünftiger Preis sein gültig-ab-Datum erreicht.

Des Weiteren kann es sich um Korrekturen fälschlich eingetragener Preise handeln. Dies ist kein Regelfall, da er gegen die Empfehlungen zu Vorlaufzeiten für Preisänderungen verstößt.

In diesen Fällen wird lediglich der Preis ohne die Angabe zukünftiger Preise im Datensatz ausgegeben, insofern keine weiteren zukünftigen Preise bekannt gemacht wurden.

Anwendungsfall 3: Ausweisung der Ladenpreisaufhebung

In jedem Datensatz ist festgehalten, ob für das Produkt in Deutschland (fixedprice_de) bzw. in Österreich (fixedprice_at) aktuell eine Ladenpreisbindung besteht.

Des Weiteren wird ausgewiesen, wenn das Produkt zu einem feststehendem Termin von der deutschen Ladenpreisbindung befreit werden soll (price_de_effective_until). Die Aufhebung der Ladenpreisbindung ist immer mit der Umstellung von einem gebundenem zu einem ungebundenem Ladenpreis (UVP-Preis) verbunden.

Anwendungsfall 4: Mehrteiliges Produkt mit MwSt-Splitting

Für mehrteilige Produkte wird neben der Angabe zum Paketpreis immer Auskunft zu den enthaltenen Teilprodukten gegeben. Hierfür wird im price das Element tax_component für jedes enthaltene Teilprodukt angegeben. Zu beachten ist, dass für zweiteilige Bundles proprietäre IDs als Identifier der Teilprodukte component_id_prop angegeben werden können. Dies ist in mehrteiligen Bundles nicht möglich, da hier immer eine GTIN component_id_gtin angegeben sein muss

Anwendungsfall 5: Produkte ohne Preisangabe

Produkte, die eine gültige Preisangabe haben und danach auf “Produkt ohne Preisangabe” (in ONIX: j192 bzw. UnpricedItemType) gesetzt werden, gelangen derzeit nicht in die VLB-Preisreferenz. Hintergrund ist, dass bei einer Kennzeichnung von “Produkt ohne Preisangabe” nicht definiert ist, ob das Produkt der Preisbindung unterliegt. Verlagen wird empfohlen, Produkte die kostenlos erworben werden sollen, daher auf 0.00 € zu setzen.

Spezifikation der Felder

Element Kardinalität Beschreibung
products 1 Root-Knoten
.product 1..n einzelner Produkt-Datensatz
..action 1 Aktion, die auf dem Produkt ausgeführt wurde
  • INSERT (Neuzugang)
  • UPDATE (Korrektur)
  • DELETE (Löschung, vergriffen)
.isbn 0..1 ISBN-13
  • wird angezeigt, wenn eine ISBN-13 für das Produkt existiert
.ean 0..1 GTIN-13
  • wird angezeigt, wenn keine ISBN-13 für das Produkt existiert
.vlb_record 1 VLB-Record-ID
.is_digital 1 Produkt digital, abhängig von Produktform *TRUE *FALSE
..productform 1 Produktform, gemäß ONIX-Codeliste 7
..title 1 Produkttitel ohne Untertitel
..fixed_retailprice 1 allgemeine Informationen zur Preisbindung für EUR-DE und EUR-AT
.fixedprice_de 0..1 Produkt hat gebundenen Ladenpreis für EUR-DE
  • TRUE
  • FALSE
price_de_effective_until Datum der Ladenpreisaufhebung EUR-DE (existiert nicht für EUR-AT, da es in Österreich keine Ladenpreisaufhebung gibt)
.fixedprice_at 0..1 Produkt hat gebundenen Ladenpreis für EUR-AT
  • TRUE
  • FALSE
..last_price_mod 1 Datum der letzten Preiskorrektur.
..price 1..n enthält alle Informationen zu einer Preisangabe des Produktes
…market 1 Länderkennzeichen (nur für die D-A-CH Währungen)
  • DE
  • AT
  • CH
…pricetype 1 Preistyp
  • 10 gebundener Ladenpreis
  • 11 gebundener Subskriptionspreis // erfordert das price_effective_until-Tag
  • 20 unverbindliche Preis-Empfehlung
  • 21 unverbindlicher Subskriptionspreis
  • 31 gebundener Sonderpreis bei Abnahme des Gesamtwerks, mit zusätzlicher Information im pricetext, sofern vom Verlag gemeldet
  • 32 gebundener Mengenpreis erfordert das no_of_pieces-Tag
  • 33 gebundener Mitgliedspreis, mit zusätzlicher Information im pricetext, sofern vom Verlag gemeldet
  • 34 gebundener sonst. Sonderpreis, mit zusätzlicher Information im pricetext, sofern vom Verlag gemeldet
  • 41 unverbindlicher Sonderpreis bei Abnahme des Gesamtwerks, mit zusätzlicher Information im pricetext, sofern vom Verlag gemeldet
  • 42 unverbindlicher Mengenpreis // erfordert das no_of_pieces-Tag
  • 43 unverbindlicher Mitgliedspreis, mit zusätzlicher Information im pricetext, sofern vom Verlag gemeldet
  • 44 unverbindlicher sonst. Sonderpreis, mit zusätzlicher Information im pricetext, sofern vom Verlag gemeldet is_calculated
…no_of_pieces 0..1 Mindestbestellmenge
  • bei pricetype 32 und 42 > 1
…pricetext 0..1 Preistext (nur bei Sonderpreisen und wenn Verlag von Ust befreit ist)
…price_effective_from 0..1 gültig-ab-Datum (JJJJMMTT)
…price_effective_until 0..1 gültig-bis-Datum (JJJJMMTT)
…is_calculated 1 Preis wurde errechnet
  • TRUE
  • FALSE
…is_provisional 1 es liegt ein Ca.-Preis vor
  • TRUE
  • FALSE
…amount 1 Betrag (Brutto)
…currency 1 Währung
  • EUR
  • CHF
…tax_component 1..n Steuerinformationen, bei mehrteiligen Produkten (Bundle mit MwSt-Splitting) wird pro enthaltenes Teilprodukt ein tax_component-Knoten angegeben
….component_id_gtin 0..1
  • im Bundle: GTIN-13 des Teilproduktes
  • im Nicht-Bundle: ISBN-13 oder GTIN-13 des Produktes selbst
  • entweder Angabe der GTIN-13 oder der proprietären ID notwendig
….component_id_prop 0..1
  • im Bundle: proprietäre ID des Teilproduktes (tritt nur auf falls ein enthaltenes Teilprodukt keine GTIN besitzt)
  • entweder Angabe der GTIN-13 oder der proprietären ID notwendig
….component_title 1
  • im Bundle: Titel des Teilproduktes
  • im Nicht-Bundle: identisch mit Titel des Produktes
….component_productform 1
  • im Bundle: Produktform des Teilprodukts
  • in Nicht-Bundle: identisch mit Produktform des Produktes
….percent 1 MwSt Satz in Prozent
….type 1 Produkttyp
  • physisches Produkt=1
  • elektronische Dienstleistung=2
….share 1
  • im Bundle: Brutto-Preis des Teilproduktes
  • im Nicht-Bundle: identisch mit Betrag
….taxable_amount 0..1
  • im Bundle: Netto-Preis des Teilproduktes
  • im Nicht-Bundle: wird nicht angegeben
….tax_amount 0..1
  • im Bundle: Steuerbetrag des Teilproduktes
  • im Nicht-Bundle: wird nicht angegeben

Bereitstellung

Die VLB-Preisreferenz steht VLB-Kunden zum Download auf unserem FTP-Server zur Verfügung.

Bereitstellung der Preisreferenzexporte:

  • Initialexporte werden zu jedem Quartal bereitgestellt.
  • Tagesexporte werden täglich ab ca. 03:00 Uhr bereitgestellt.

Aus Umfangsgründen stehen zwei separate Preisreferenzen zur Verfügung:

  1. für Printprodukte
  2. für E-Books

Zu finden sind die Exportdateien in den nachfolgenden Ordnern.

Bereitstellung FTP-Ablage
Gesamtabzug Printprodukte quartalsweise public/preisreferenz_neu/Initialbestand_neu_all/VLBPreisRef_Neu_initial_jjjjmmtt.zip
  • VLBPreisRef_Neu_initial_jjjjmmtt.xml
Tagesupdate Printprodukte täglich public/preisreferenz_neu/tagesexport_all/VLBPreisRef_Neu_jjjjmmtt.zip
  • jjjjmmtt_PreisRef_Neu.xml
Gesamtabzug E-Books quartalsweise public/preisreferenz_neu_ebooks/initialbestand_neu_ebooks/VLBPreisRef_Neu_initial_ebooks_ jjjjmmtt.zip
  • VLBPreisRef_Neu_Initial_Ebooks_ jjjjmmtt.xml
Tagesupdate E-Books täglich public/preisreferenz_neu_ebooks/tagesexport_ebooks/VLBPreisRef_Neu_Ebooks_ jjjjmmtt.zip
  • jjjjmmtt_PreisRef_Neu_Ebooks.xml

Beispiele

Beispiel: Zukünftiger Preis

...
<price>
  <market>DE</market>
  <pricetype>10</pricetype>
  <price_effective_until>20161015</price_effective_until> <!-- gültig bis Datum – bisheriger Preis -->
  <is_calculated>FALSE</is_calculated>
  <is_provisional>FALSE</is_provisional>
  <amount>9.80</amount>
  <currency>EUR</currency>
  <tax_component>
    <component_id_gtin>9783765790034</component_id_gtin>
    <component_productform>BC</component_productform>
    <component_title>Produkttitel</component_title>
    <percent>7.00</percent>
    <type>1</type>
    <share>9.80</share>
  </tax_component>
  </price>
  <price>
  <market>DE</market>
  <pricetype>10</pricetype>
  <price_effective_from>20161016</price_effective_from> <!-- gültig ab Datum zukünftiger Preis -->
  <is_calculated>FALSE</is_calculated>
  <is_provisional>FALSE</is_provisional>
  <amount>10.80</amount>
  <currency>EUR</currency>
  <tax_component>
    <component_id_gtin>9783765790034</component_id_gtin>
    <component_productform>BC</component_productform>
    <component_title>Produkttitel</component_title>
    <percent>7.00</percent>
    <type>1</type>
    <share>10.80</share>
  </tax_component>
</price>
...

Beispiel: Aktuell gültiger Preis

...
<price>
  <market>DE</market>
  <pricetype>20</pricetype>
  <is_calculated>FALSE</is_calculated>
  <is_provisional>FALSE</is_provisional>
  <amount>9.80</amount>
  <currency>EUR</currency>
  <tax_component>
    <component_id_gtin>9783765790034</component_id_gtin>
    <component_productform>BC</component_productform>
    <component_title>Produkttitel</component_title>
    <percent>7.00</percent>
    <type>1</type>
    <share>9.80</share>
  </tax_component>
  </price>
...

Beispiel: Ladenpreisaufhebung

...
<fixed_retailprice>
  <fixedprice_de>TRUE</fixedprice_de>
  <price_de_effective_until>20161016</price_de_effective_until>
</fixed_retailprice>
...
<price>
  <market>DE</market>
  <pricetype>10</pricetype>
  <price_effective_until>20161015</price_effective_until> <!-- gültig bis Datum – bisheriger Preis -->
  ...
  </price>
  <price>
  <market>DE</market>
  <pricetype>20</pricetype>
  <price_effective_from>20161016</price_effective_from> <!-- gültig ab Datum zukünftiger Preis -->
  ...
</price>
...

Beispiel: zweiteiliges Bundle mit proprietären IIDs

...
<price>
  <market>DE</market>
  <pricetype>10</pricetype>
  <no_of_pieces>1</no_of_pieces>
  <is_calculated>FALSE</is_calculated>
  <is_provisional>FALSE</is_provisional>
  <amount>22.99</amount> <!-- Summe von <share> der Teilprodukte -->
  <currency>EUR</currency>
  <tax_component> <!-- Teil1 des Bundles -->
    <component_id_prop>9783765781322-1</component_id_prop>
    <component_productform>BC</component_productform>
    <component_title>gedrucktes Buch im zweiteiligem Bundle</component_title>
    <percent>7.00</percent>
    <type>1</type>
    <share>18.39</share> 
    <taxable_amount>17.19</taxable_amount>
    <tax_amount>1.2</tax_amount>
  </tax_component>
  <tax_component> <!-- Teil2 des Bundles -->
    <component_id_prop>9783765781322-2</component_id_prop>
    <component_productform>DG</component_productform>
    <component_title>E-Book im zweiteiligem Bundle</component_title>
    <percent>19.00</percent>
    <type>2</type>
    <share>4.60</share>
    <taxable_amount>3.87</taxable_amount>
    <tax_amount>0.73</tax_amount>
  </tax_component>
</price>
...

Beispiel: mehrteiliges Bundle

...
<price>
  <market>DE</market>
  <pricetype>10</pricetype>
  <no_of_pieces>1</no_of_pieces>
  <is_calculated>FALSE</is_calculated>
  <is_provisional>FALSE</is_provisional>
  <amount>32.99</amount> <!-- Summe von <share> der Teilprodukte -->
  <currency>EUR</currency>
  <tax_component> <!-- Teil1 des Bundles -->
    <component_id_gtin>9783765781322</component_id_gtin>
    <component_productform>BC</component_productform>
    <component_title>gedrucktes Buch</component_title>
    <percent>7.00</percent>
    <type>1</type>
    <share>18.39</share> 
    <taxable_amount>17.19</taxable_amount>
    <tax_amount>1.2</tax_amount>
  </tax_component>
  <tax_component> <!-- Teil2 des Bundles -->
    <component_id_gtin>9783765780998<component_id_gtin>
    <component_productform>DG</component_productform>
    <component_title>E-Book</component_title>
    <percent>19.00</percent>
    <type>2</type>
    <share>4.60</share>
    <taxable_amount>3.87</taxable_amount>
    <tax_amount>0.73</tax_amount>
  </tax_component>
  <tax_component> <!-- Teil3 des Bundles -->
    <component_id_gtin>9783765782015<component_id_gtin>
    <component_productform>DH</component_productform>
    <component_title>Online-Zugang</component_title>
    <percent>19.00</percent>
    <type>2</type>
    <share>10.00</share>
    <taxable_amount>8.40</taxable_amount>
    <tax_amount>1.60</tax_amount>
  </tax_component>
</price>
...