Open EAN/GTIN Database
EAN/GTIN Barcodenummern online abfragen
API/Datenbankzugriff | FAQ - häufige Fragen

Daten abfragen

Es ist ebenfalls möglich, auf die Open EAN Datenbank aus eigenen Applikationen heraus zuzugreifen um eine EAN-Abfrage durchzuführen. Das geschieht mit einem simplen HTTP-GET-Request, der folgendes Format aufweisen sollte:
http://opengtindb.org/?ean=[ean]&cmd=query&queryid=[userid]
[ean] ist hier die acht- oder dreizehnstellige EAN die abgefragt werden soll.
Die [userid] für das Feld "queryid" ist nur über eine spezielle Zugriffsvereinbarung erhältlich (ausschließlich für gewerbliche Kunden, nicht für Privatanwender). Diese Vereinbarung beinhaltet eine 6-monatige Zahlweise im voraus für ein festzulegendes tägliches Zugriffslimit (mindestens 10000 Zugriffe pro Tag). Die Vereinbarung kann jeweils rechtzeitig vor Beginn der folgenden 6-Monats-Periode gekündigt werden. Kleinere Abrechnungszeiten, andere Zeiträume für das Zugriffslimit oder geringere Zugriffslimits sind nicht verfügbar. Zur groben Orientierung: bei einem Limit von 10000 Abfragen pro Tag liegt der Preis für eine 6-monatige Abrechnungsperiode bei ca. 150 Euro zuzüglich Mehrwertsteuer. Anfragen für einen API-Zugang zur OpenGTIN-DB sind über das Kontaktformular möglich.
War die Abfrage erfolgreich, so erhalten Sie Daten im Textformat (MIME-Typ text/plain) zurück, die beispielsweise so aussehen können:
error=0
---
name=Natürliches Mineralwasser
detailname=Bad Vilbeler RIED Quelle
vendor=H. Kroner GmbH & CO. KG
maincat=Getränke, Alkohol
subcat=
contents=19
descr=Natürliches Mineralwasser mit Kohlensäure versetzt
origin=Deutschland
validated=25 %
---
Eine Abfrage kann auch mehrere Datensätze zurückliefern, diese werden dann nach dem "---" fortlaufend angehängt. In diesem Fall sind die zurückgelieferten Datensätze bereits nach Relevanz sortiert, d.h. die Datensätze weiter oben in der Auflistung passen auch am besten zur abgefragten EAN und/oder sind schon validiert worden.
Die Reihenfolge der einzelnen Felder ist nicht festgelegt, ebenso kann es sein, das zukünftig noch neue Felder hinzukommen, es ist also wichtig, das der Wert vor dem "=" in jedem fall geparst wird.
Der Wert hinter "contents" gibt bei Lebensmitteln möglicherweise (nicht) vorhandene Inhaltsstoffe an, die Zahl besteht dabei aus logisch ODER-verkünpften Flags, welche für verschiedene Inhaltsstoffe stehen:
  • 1 (binär 000000001) - laktosefrei
  • 2 (binär 000000010) - koffeeinfrei
  • 4 (binär 000000100) - diätetisches Lebensmittel
  • 8 (binär 000001000) - glutenfrei
  • 16 (binär 000010000) - fruktosefrei
  • 32 (binär 000100000) - BIO-Lebensmittel nach EU-Ökoverordnung
  • 64 (binär 001000000) - fair gehandeltes Produkt nach FAIRTRADE™-Standard
  • 128 (binär 010000000) - vegetarisch
  • 256 (binär 100000000) - vegan
So steht im obigen Beispiel die Zahl 19 für fruktosefrei (16), koffeeinfrei (2) und laktosefrei (1).

Daten übermitteln

In ähnlicher Weise können neue Datensätze hinzugefügt werden. Hier kann sowohl ein HTTP-GET-Request (welcher Nachteile in Bezug auf die zu übermittelnde Datenmenge haben kann) als auch eine HTTP-POST-Anfrage verwendet werden:
http://opengtindb.org/submit.php?...
In beiden Fällen müssen mindestens folgende Daten enthalten sein:
  • ean=[ean]
    die EAN, für die ein neuer Datensatz angelegt werden soll
  • cmd=submit
    das Kommando "submit", welches festlegt, dass neue Daten übertragen werden
  • queryid=[userid]
    die individuell zugeteilte User-ID
  • name=[produktname]
    der generische, beschreibende Name des Produktes (also z.B. "Tee", "Milch", "Kaffee", nicht aber "Tee, schwarz, aromatisiert" oder "Milch, 1L" oder "Rondo-Kaffee")
  • fcat1=[hauptkategorie]
    die Hauptkategorie, zu der das Produkt gehört; hierbei handelt es sich um eine 1-basierte, fortlaufende Nummer entsprechend der unten aufgeführten Unterteilung
  • fcat2=[unterkategorie]
    die Unterkategorie, zu der das Produkt gehört; hierbei handelt es sich um eine 1-basierte, fortlaufende Nummer entsprechend der zugehörigen Hauptkategorie und der unten aufgeführten Unterteilung
Optional können ebenfalls die folgenden Werte mit übertragen werden:
  • fullname=[vollständiger name]
    der vollständige Name des Produktes (also z.B. "Club Cola, 1L", oder "Fruchtbonbons mit Schokoladenüberzug")
  • descr=[beschreibung]
    detaillierte Beschreibung des Produktes, der Eigenschaften/Inhaltsstofe/Wirkung/Anwendung etc.
  • vendor=[hersteller]
    vollständiger Name des Herstellers
  • contflag1=[inhaltsstoffe]
    dieses Feld beschreibt mit Hilfe eines Bitmusters, ob bestimmte Inhaltsstoffe enthalten sind oder explizit fehlen. Dabei können mehrere Werte gleichzeitig übertragen werden, in dem diese Flags ODER-verknüpft werden. Erlaubt sind: 0x01 - laktosefrei, 0x02 - koffeeinfrei, 0x04 - diätetisches Lebensmittel, 0x08 - glutenfrei; ein Wert von 10 (=0x0A) würde also bedeuten, dass das ensprechende Produkt frei von Koffeein und Gluten ist. Diese Flags sind nur bei Lebensmitteln zu setzen.
Für eine korrekte Zuordnung der Haupt- und Unterkategorien zu den jeweiligen Nummern wird an dieser Stelle der PHP-Code zur Verfügung gestellt, der die entsprechenden Arrays initialisiert. Dieser Code kann frei in eigenen Applikationen verwendet werden, es werden allerdings keinerlei Gewährleistungen in Bezug auf Richtigkeit, Vollständigkeit und Tauglichkeit übernommmen:
$cat1=array("Baby, Kind", "Backwaren", "Brotaufstriche", "Dessert, Nachtisch",
            "Eier", "Elektrisch", "Elektronische Artikel", "Fertiggerichte",
            "Fleisch, Fisch", "Früchte, Obst", "Gemüse", "Getränke, Alkohol",
            "Haushalt, Büro", "Kochzutaten", "Konditorei, Zuckerwaren",
            "Kosmetische Mittel", "Milchprodukte", "Präparate", "Raucherwaren",
            "Sojaprodukte", "Süsswaren, Snacks", "Teigwaren, Getreideprodukte",
            "Tierbedarf", "Waschen, Reinigen", "Zusatzstoffe","Haus, Hof und Freizeit");

$cat2=Array(
       Array("Ausstattung","Babygetränke","Babynahrung","Gesundheit, Pflege","Kleider, Textilien","Spiele Lernen","Wickel"),
       Array("Backmischungen","Backzutaten","Brotarten","Dauerbackwaren, Zwieback","Frischbackwaren","Gebäck, Panettone",
             "Hefe","Kuchen, Cakes","Teig"),
       Array("Honig","Konfitüren, Marmeladen","verschiedene"),
       Array("Creme","Pudding","Speiseeis"),
       Array("Eier"),
       Array("Anschluss-und Verbrauchsmaterial","Batterien","Licht","Netzteile, Ladegeräte"),
       Array("Computer","Fotografie","HIFI","Massenspeichermedien","PDA","TV, Fernsehen","Telefon","Uhren","Video","DVD","BD (Blu-ray)"),
       Array("Andere","Asia Gerichte","Bouillon, Brühe","Fleischerzeugnisse","Gericht, Menü","Kartoffelprodukte","Pasta",
             "Pizza","Salat","Sandwich","Saucen","Suppen","Tiefgekühltes, Tiefkühlkost"),
       Array("Fisch","Fischkonserven","Fleischkonserven","Frischfleisch","Geflügel","Meeresfrüchte","Trockenfleisch, Salami",
             "Wurstwaren"),
       Array("Exotische Früchte","Früchte, Obst","Nüsse","Obstkonserven","Trockenfrüchte","kandierte Früchte"),
       Array("Antipasti","Essigkonserven","Gemüse","Gemüsekonserven","Salat","Trockengemüse"),
       Array("Alcopops","Bier","Energy Drinks","Frucht-und Gemüsesäfte","Instantgetränke","Kaffee","Kakao,Schokoladen",
             "Limonaden","Mineralwasser","Sirup","Spirituosen","Tee","Wein/Sekt/Champagner"),
       Array("Bücher allgemein","Fachbücher","Literatur","Bügeln, Textilpflege","Dekoration","Essen","Garten",
             "Kleider, Textilien","Küche","Küchen-, Haushaltgeräte","Mercerie","Papeterie",
             "Zeitungen, Zeitschriften allgemein","Fachzeitungen, -zeitschriften","Schreib- und Zeichengeräte"),
       Array("Backpulver","Essig","Frische Gewürze","Gelatine","Gewürze","Mehl","Öl, Fette","Salz",
             "Senf, Mayonnaise, Püree, Cremen","Stärkearten"),
       Array("Kuchendekoration","Marzipan","Süßstoffe","Zucker"),
       Array("Badezusätze","Gesichtspflege","Haarpflege","Körperpflege","Make-up Artikel","Monatshygiene","Nagel, Fusspflege",
             "Parfüm","Pflaster, Watte","Rasierprodukte","Schwangerschaftstest","Sonnen-, Insektenschutz","Toilettenartikel",
             "Verhütung","Zahnpflege"),
       Array("Butter, Margarine","Joghurt","Käse","Milch","Milchgetränke","Quark","Rahm, Rahmprodukte"),
       Array("Calcium","Magnesium","Medikamente","Sonstige","Vitamine","kombinierte Präparate"),
       Array("Tabak","Zigaretten","Zigarren","Zubehör"),
       Array("Sojamilch","Sojasaucen","Tofu","sonstiges"),
       Array("Bisquits, Kekse, Konfekt","Bonbons","Chips","Energiespender","Fruchtgummi","Getreide, Schokoriegel, Waffeln","Kaugummi",
             "Schokolade","salzige Snacks"),
       Array("Frühstücksflocken","Getreide","Teigwaren"),
       Array("Hunde","Katzen","Nager","Sonstige"),
       Array("Abwaschen","Boden-und Teppichreiniger","Entkalker","Entsorgen","Fleckenreiniger","Glas-und Festerreiniger",
             "Küchenreiniger","Lufterfrischer","Putzgeräte und Zubehör","Putzmittel","Schuhpflege","Spezialreiniger",
             "WC- und Bad Reiniger","Waschmittel","Wohnzimmerreiniger"),
       Array("Zusatzstoffe"),
       Array("Baumaterialien","Farbe","Werkzeuge","Pflanzenmittel","Pflanzen","Modellbau","Sportgeräte","Sonstige","Spielzeug/Spiele"));
Die zu übertragenen Kategorie-Indizes sind dabei 1-basiert, d.h. eine Hauptkategorie mit dem Wert "3" und ein Unterkategorieindex "2" stehen hier für die Kategorien "Brotaufstriche" / "Konfitüren".

Fehlercodes

Die oben beschriebenen Operationen können aus unterschiedlichen Gründen fehlschlagen. In diesem Fall wird mit "error"= ein Code zurückgeliefert, der den aufgetretenen Fehler näher spezifiziert:
  • 0 - OK - Operation war erfolgreich
  • 1 - not found - die EAN konnte nicht gefunden werden
  • 2 - checksum - die EAN war fehlerhaft (Checksummenfehler)
  • 3 - EAN-format - die EAN war fehlerhaft (ungültiges Format / fehlerhafte Ziffernanzahl)
  • 4 - not a global, unique EAN - es wurde eine für interne Anwendungen reservierte EAN eingegeben (In-Store, Coupon etc.)
  • 5 - access limit exceeded - Zugriffslimit auf die Datenbank wurde überschritten
  • 6 - no product name - es wurde kein Produktname angegeben
  • 7 - product name too long - der Produktname ist zu lang (max. 20 Zeichen)
  • 8 - no or wrong main category id - die Nummer für die Hauptkategorie fehlt oder liegt außerhalb des erlaubten Bereiches
  • 9 - no or wrong sub category id - die Nummer für die zugehörige Unterkategorie fehlt oder liegt außerhalb des erlaubten Bereiches
  • 10 - illegal data in vendor field - unerlaubte Daten im Herstellerfeld
  • 11 - illegal data in description field - unerlaubte Daten im Beschreibungsfeld
  • 12 - data already submitted - Daten wurden bereits übertragen

Impressum | Datenschutz | Kontakt | Links