# Open Food Facts in NormalFit – Auswahl und Aufbereitung Stand: 25.09.2026 Anbieter: Dilltree Apps, Daniel Dillbaum, An den Weihern 45, 51467 Bergisch Gladbach · hallo@normalfit.app Diese Datei beschreibt nach Ziffer 4.6 b der Open Database License (ODbL) 1.0, wie NormalFit Daten aus Open Food Facts auswählt und aufbereitet. Quelle: Open Food Facts, https://world.openfoodfacts.org – Urheber sind die Mitwirkenden von Open Food Facts. ## 1. Ausgangsdaten - Open Food Facts Such-API v2: https://world.openfoodfacts.org/api/v2/search - Abfrage je Land mit countries_tags = en:germany, en:austria, en:switzerland und states_tags = en:nutrition-facts-completed, 100 Produkte je Seite. - Abgerufene Felder: code, product_name, product_name_de, brands, brands_tags, countries_tags, languages_tags, lang, nutriments, serving_size, serving_quantity, states_tags. - Abrufrhythmus: wöchentlich. - Zusätzlich fragt die App bei einer Suche ohne Treffer und beim Barcode-Scan Open Food Facts direkt ab. Treffer aus der Produktsuche werden nach den Regeln in Abschnitt 5 zwischengespeichert. ## 2. Auswahl Ein Produkt wird nur übernommen, wenn alle Bedingungen erfüllt sind: 1. Name (product_name_de, sonst product_name) hat mindestens 3 Zeichen und ist keiner der Platzhalter „test“, „xxx“, „aaaa“, „asdf“, „tttt“. 2. countries_tags enthält en:germany, en:austria oder en:switzerland. 3. Energie je 100 g ist vorhanden (energy-kcal_100g oder energy-kj_100g), und proteins_100g, carbohydrates_100g und fat_100g sind Zahlen. 4. Ein Barcode (code) ist vorhanden. ## 3. Plausibilität 1. Wertebereich: Energie 1 bis 900 kcal je 100 g; Eiweiß, Kohlenhydrate und Fett je 0 bis 100 g je 100 g; Summe aus Eiweiß, Kohlenhydraten und Fett höchstens 100 g je 100 g. 2. Atwater-Prüfung: Die Energie muss zu den Makronährstoffen passen. Berechnet = 4 × Eiweiß + 4 × Kohlenhydrate + 9 × Fett. Zulässige Abweichung: höchstens 20 % des angegebenen kcal-Werts, mindestens aber 20 kcal. Produkte außerhalb dieser Grenze werden verworfen. ## 4. Umformung - Übernommene Felder: Barcode, Name, erste Marke aus brands, Sprach-Tags, Energie, Eiweiß, Kohlenhydrate und Fett je 100 g, Portionsgröße. - Energie: energy-kcal_100g, auf ganze kcal gerundet. Fehlt der Wert, wird energy-kj_100g durch 4,184 geteilt und gerundet. - Eiweiß, Kohlenhydrate, Fett: auf 0,01 g gerundet gespeichert. Die App zeigt Live-Treffer auf 0,1 g gerundet an. - Anzeigename: „Name (Marke)“, wenn eine Marke vorhanden ist. - Portionsgröße: serving_quantity, auf ganze Gramm gerundet, wenn größer als 0 und höchstens 2.000 g; sonst 100 g. - Kategorie: Beim wöchentlichen Import erhalten alle Produkte die Kategorie „fertig“. Treffer aus der Live-Suche der App erhalten eine Kategorie aus einer Stichwortliste im Produktnamen (z. B. „joghurt“, „quark“, „käse“ → Milchprodukte und Eier; „brot“, „reis“, „nudel“ → Getreide); ohne Treffer „fertig“. - Sortierwert (quality_score, nur für die Reihenfolge in der Suche): 0,55 + 0,15 bei vorhandener Marke + 0,10 bei vorhandenem Barcode, höchstens 0,85. ## 5. Zwischenspeicher aus der App Treffer aus der Live-Suche werden serverseitig nur gespeichert, wenn Name mindestens 3 Zeichen, Energie 1 bis 900 kcal, Makronährstoffe je 0 bis 100 g und die Atwater-Prüfung aus Abschnitt 3 erfüllt sind. Höchstens 50 Einträge je Aufruf. Einträge aus anderen Quellen werden dabei nicht überschrieben. ## 6. Ergänzte Inhalte - Standard-Portionsgröße 100 g, wenn Open Food Facts keine brauchbare Portionsgröße liefert (Abschnitt 4). - Kategorie und Sortierwert (Abschnitt 4). - Jeder Eintrag stammt aus genau einer Quelle. Open-Food-Facts-Einträge werden nicht mit Werten aus anderen Quellen ergänzt oder zusammengeführt. ## 7. Lizenz Diese Beschreibung und die nach ihr aufbereiteten Open-Food-Facts-Daten stehen unter der Open Database License (ODbL) 1.0: https://opendatacommons.org/licenses/odbl/1-0/ Einzelne Inhalte stehen unter der Database Contents License (DbCL) 1.0: https://opendatacommons.org/licenses/dbcl/1-0/ Übersicht aller Datenquellen: https://normalfit.app/datenquellen