BMEcat Viewer BMEcat 1.2 · 2005 · ETIM
To the tool

What is BMEcat?

BMEcat is an XML format that manufacturers and suppliers use to send their product catalogues electronically to wholesalers and buyers: product numbers, descriptions, prices, features and image references in a single file. This page explains how a BMEcat file is structured, which versions exist and what ETIM and eCl@ss have to do with it.

Where BMEcat comes from

BMEcat was created in 1999 on the initiative of BME, the German association for materials management, purchasing and logistics (Bundesverband Materialwirtschaft, Einkauf und Logistik), together with companies such as Bayer, BMW, SAP and Siemens. It was developed by Fraunhofer IAO and the University of Essen (now the University of Duisburg-Essen). The idea behind it: a buyer who receives catalogues from a hundred suppliers should not have to read a hundred file formats. BMEcat therefore defines what a catalogue looks like as XML — which elements exist, in which order they appear and which values are allowed. In German-speaking B2B trade it is still one of the most widely used formats for catalogue data, above all in technical wholesale: electrical, plumbing and heating, tools, industrial supplies.

How a BMEcat file is structured

Every file has two parts: a header with information about the whole catalogue and a transaction containing the products. The skeleton of a BMEcat 2005 file looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<BMECAT version="2005" xmlns="http://www.bmecat.org/bmecat/2005">
  <HEADER>
    <!-- language, catalogue ID, version, currency -->
    <CATALOG>…</CATALOG>
    <!-- buyer, optional -->
    <BUYER>…</BUYER>
    <!-- supplier -->
    <SUPPLIER>…</SUPPLIER>
  </HEADER>
  <T_NEW_CATALOG>
    <PRODUCT mode="new">
      <!-- product number -->
      <SUPPLIER_PID>…</SUPPLIER_PID>
      <!-- texts, GTIN, manufacturer -->
      <PRODUCT_DETAILS>…</PRODUCT_DETAILS>
      <!-- classification, features -->
      <PRODUCT_FEATURES>…</PRODUCT_FEATURES>
      <!-- units, quantities -->
      <PRODUCT_ORDER_DETAILS>…</PRODUCT_ORDER_DETAILS>
      <!-- prices -->
      <PRODUCT_PRICE_DETAILS>…</PRODUCT_PRICE_DETAILS>
      <!-- images, data sheets -->
      <MIME_INFO>…</MIME_INFO>
      <!-- extensions -->
      <USER_DEFINED_EXTENSIONS>…</USER_DEFINED_EXTENSIONS>
      <!-- accessories, successors -->
      <PRODUCT_REFERENCE>…</PRODUCT_REFERENCE>
      <!-- customs, origin, dimensions -->
      <PRODUCT_LOGISTIC_DETAILS>…</PRODUCT_LOGISTIC_DETAILS>
    </PRODUCT>
    <!-- … any number of further products … -->
  </T_NEW_CATALOG>
</BMECAT>

Three peculiarities are worth knowing. The order is prescribed: writing PRODUCT_PRICE_DETAILS before PRODUCT_ORDER_DETAILS makes the file invalid, even if every value is correct. Each product is largely self-contained: unlike in a database, its data is not spread across linked tables, and almost everything sits inside the PRODUCT element. Many things may repeat: several prices with quantity breaks, several feature blocks, several images. That is exactly what makes BMEcat hard to fit into a table with one row per product. A complete, valid example with all the usual details can be found on the BMEcat example file page.

What is mandatory and what is not

The schema demands surprisingly little. Per product, only four things are required:

ElementContentRequired by the schema
SUPPLIER_PIDthe supplier's product number, at most 32 charactersyes
DESCRIPTION_SHORTshort description, inside PRODUCT_DETAILSyes
ORDER_UNITorder unit, for example C62 for pieceyes
PRODUCT_PRICEat least one price block with a price type (price_type)yes
DESCRIPTION_LONGlong descriptionno
INTERNATIONAL_PIDGTIN, formerly called EANno
MANUFACTURER_PID, MANUFACTURER_NAMEmanufacturer's part number and manufacturerno
PRODUCT_FEATURESclassification and featuresno
MIME_INFOimages and documentsno

In the header, language (LANGUAGE), catalogue ID (CATALOG_ID), catalogue version (CATALOG_VERSION) and the supplier are required. Everything else is decided not by BMEcat but by the recipient. That is exactly what industry rules such as the ETIM guideline are for: they turn many optional fields into mandatory ones.

The three transactions

Below the header there is exactly one of three transactions. It tells the recipient what to do with the products:

  • T_NEW_CATALOG — a complete catalogue. It replaces the recipient's previous version.
  • T_UPDATE_PRODUCTS — changes to an existing catalogue. Each product then carries mode="new", "update" or "delete", and the attribute prev_version names the catalogue version the change refers to.
  • T_UPDATE_PRICES — new prices only. A product then consists essentially of its number and its price blocks.

Many suppliers simply send the complete catalogue at regular intervals. That is more robust: if an update package gets lost, only a recipient that checks prev_version notices straight away. Everyone else notices only when prices are wrong or products are missing.

The versions: 1.2, 2005, 2005.1 and 2005.2

VersionReleasedWhat sets it apart
1.0 and 1.01from 1999The first versions, described as a DTD rather than an XML schema.
1.22001Classification systems such as eCl@ss and ETIM can be transferred. Products are called ARTICLE, the product number SUPPLIER_AID.
2005November 2005Thoroughly revised: ARTICLE becomes PRODUCT. New features include multilingual catalogues, logistics data, configurable products, price formulas and catalogues from several suppliers in one file.
2005.1after 2005Feature groups (FEATURE_GROUP), nested features and LOCALE for a language-and-country combination.
2005.2after 2005An updated currency list and freely chosen MIME types. The latest version.

In practice, BMEcat 2005 is the version that counts: the ETIM guideline builds on it, and most recipients expect it. Catalogues in the older 1.2 format still turn up, mostly from older ERP systems. Which version a file uses is stated in the version attribute of the root element.

1.2 and 2005 compared

If you read an old catalogue or build an import for both versions, this mapping is what you need most:

BMEcat 1.2BMEcat 2005
ARTICLEPRODUCT
SUPPLIER_AIDSUPPLIER_PID
ARTICLE_DETAILSPRODUCT_DETAILS
EANINTERNATIONAL_PID type="gtin"
MANUFACTURER_AIDMANUFACTURER_PID
ARTICLE_FEATURESPRODUCT_FEATURES
ARTICLE_ORDER_DETAILSPRODUCT_ORDER_DETAILS
ARTICLE_PRICE_DETAILS, ARTICLE_PRICEPRODUCT_PRICE_DETAILS, PRODUCT_PRICE
ARTICLE_REFERENCE, ART_ID_TOPRODUCT_REFERENCE, PROD_ID_TO
—PRODUCT_LOGISTIC_DETAILS

Renaming alone does not turn a 1.2 catalogue into a good 2005 catalogue, because BMEcat 2005 added a fair amount. Incidentally, the 2005 schema still accepts the old ARTICLE elements for backward compatibility.

Classification: ETIM and eCl@ss

BMEcat itself is industry-neutral and has no product classes of its own. What kind of product an item is and which technical features it has comes from a classification system. The file only holds the reference, in the PRODUCT_FEATURES block:

<PRODUCT_FEATURES>
  <REFERENCE_FEATURE_SYSTEM_NAME>ETIM-9.0</REFERENCE_FEATURE_SYSTEM_NAME>
  <REFERENCE_FEATURE_GROUP_ID>EC000042</REFERENCE_FEATURE_GROUP_ID>
  <FEATURE>
    <FNAME>EF000227</FNAME>
    <FVALUE>16</FVALUE>
  </FEATURE>
</PRODUCT_FEATURES>

That means: class EC000042 (miniature circuit breaker) under ETIM 9.0, feature EF000227 (rated current) with the value 16. The unit, ampere, follows from the feature itself. The plain-text names of the codes are not in the file. They belong to the classification model.

ETIM is the classification model of electrical, plumbing and heating wholesale, now also covering tools, building materials and shipbuilding. ETIM International publishes the ETIM BMEcat Guideline for it, currently version 5.0. It defines which fields are mandatory beyond the schema, differently per country in 23 country columns, and adds the extension block UDX.EDXF for packing units, discount groups, REACH data and product images. eCl@ss, now written ECLASS, is the cross-industry counterpart, widespread in manufacturing and procurement, with its own rules for BMEcat. A catalogue may carry both, with one PRODUCT_FEATURES block per system.

Alongside BMEcat, ETIM now also offers an exchange format of its own based on JSON, ETIM xChange. BMEcat has not been replaced by it: ETIM maintains both formats side by side.

Opening and validating a BMEcat file

A BMEcat file is plain text, and any editor will open it. That does not make it readable: a supplier catalogue quickly runs to tens of thousands of products and several hundred megabytes. For an overview, open the file in this tool: it shows key figures and every field that occurs, validates against the official schema and the ETIM guideline, and converts to Excel or CSV. The file stays on your computer.

What is BMEcat?

BMEcat is an XML-based standard format for exchanging electronic product catalogues between companies, created in 1999 on the initiative of the German association BME. A BMEcat file contains a header with catalogue information and a transaction with the products, each with its number, texts, prices, units, features and image references.

Which BMEcat version is current?

The latest version is BMEcat 2005.2. In practice BMEcat 2005 is the one that counts, and the ETIM BMEcat Guideline 5.0 builds on it as well. Older catalogues still arrive in the 1.2 format.

What is the difference between BMEcat 1.2 and 2005?

In BMEcat 2005 a product is called PRODUCT instead of ARTICLE and the product number SUPPLIER_PID instead of SUPPLIER_AID. New additions include multilingual catalogues, logistics data, configurable products and price formulas.

Open a catalogue file now

Free, no account, no upload — the file stays on your computer.