Skip to content

openfoodfacts/openfoodfacts-apirestpython

Repository files navigation

Open Food Facts API Rest Python

OFF API provides programmatic access to Open Food Facts functionality and content.

Deploy

To try the API : https://openfoodfacts-api.herokuapp.com/
Or if you want to try in localhost, see below.

The API is REST API. Currently, return format for all endpoints is JSON.

Status

Project Status Build Status Average time to resolve an issue Percentage of issues still open

What is this repository for?

This piece of software’s main goals are:

  • To make it easy to retrieve data using HTTP requests
  • To provide filters in the API
  • To provide custom filters

Setup for localhost

  • Install python 3
  • Install mongodb
  • Install pip
  • Install requirements: $ pip install -r requirements.txt
  • Download the database from : https://world.openfoodfacts.org/data/openfoodfacts-mongodbdump.tar.gz
  • Import to local mongodb: $ mongorestore -d off -c products /foldertobsonfile/products.bson
  • Launch api: $ python3 runApiRESTServer.py
  • That's all!

Documentation

How to use it?

Simple filter: /products?origins=United Kingdom
Complex filter: /products?nutrition_grade_fr=a&origins=United Kingdom
For arrays, a “.” will be used as a separator like so: /products?nutrient_levels.salt=low Searchs can be inexact like :/products?ingredients_text=beef
It will retrieve tags like “beef braising steak”, “beef steak”...

/!\ By default the objects will be sorted by created_t in order to have the most important objects first

URL to query Description
GET /product/<barcode> Get a product by barcode eg. /product/737628064502
GET /products/brands Return a list of Brands. If you want to query brands, to do for example an autocomplete field in ajax, query the API like: /products/brands?query=Auch or /products/brands?query=Sains.
GET /products/categories Return a list of Categories. If you want to query categories, to do for example an autocomplete field in ajax, query the API like: /products/categories?query=Ric or /products/categories?query=plant.
GET /products/countries Return a list of Countries. If you want to query countries, to do for example an autocomplete field in ajax, query the API like: /products/countries?query=Fra or /products/countries?query=Aus.
GET /products/additives Return a list of Additives. If you want to query additives, to do for example an autocomplete field in ajax, query the API like: /products/additives?query=Citric or /products/additives?query=acid.
GET /products/allergens Return a list of Allergens. If you want to query allergens, to do for example an autocomplete field in ajax, query the API like: /products/allergens?query=milk or /products/allergens?query=oil.

Options

Field Value by default Value type
limit= 50 limit the number of products returned
skip= 0 skips the specified number of products returned
count= 0 if 1 then returns the number of rows
short= 0 Filters rows retrieved, make it faster for lists for example, if 1 columns projection on code, lang and product_name
q= none search text on indexed fields

Indexed fields

Some fields are described here: https://world.openfoodfacts.org/data/data-fields.txt

Example

Request

GET /product/737628064502

Return

{
   "status_verbose":"product found",
   "status":1,
   "product":{
      "last_edit_dates_tags":[
         "2012-12-11",
         "2012-12",
         "2012"
      ],
      "labels_hierarchy":[
         "en:gluten-free"
      ],
      "_id":"737628064502",
      "categories_hierarchy":[
         "en:Rice Noodles"
      ],
      "pnns_groups_1":"unknown",
      "states_tags":[
         "en:to-be-checked",
         "en:complete",
         "en:nutrition-facts-completed",
         "en:ingredients-completed",
         "en:expiration-date-to-be-completed",
         "en:characteristics-completed",
         "en:photos-validated",
         "en:photos-uploaded"
      ],
      "checkers_tags":[
      ],
      "labels_tags":[
         "en:gluten-free"
      ],
      "image_small_url":"https://world.openfoodfacts.org/images/products/737/628/064/502/front.6.200.jpg",
      "code":"737628064502",
      "additives_tags_n":null,
      "traces_tags":[
         "peanuts"
      ],
      "lang":"en",
      "photographers":[
         "andre"
      ],
      "generic_name":"Rice Noodles",
      "ingredients_that_may_be_from_palm_oil_tags":[
      ],
      "old_additives_tags":[
         "en:e330"
      ],
      "_keywords":[
         "thailand",
         "stir-fry",
         "kitchen",
         "thai",
         "free",
         "gluten",
         "rice",
         "noodle"
      ],
      "rev":15,
      "editors":[
         "",
         "thierrym",
         "manu1400",
         "andre"
      ],
      "interface_version_created":"20120622",
      "emb_codes":"",
      "max_imgid":"5",
      "additives_tags":[
         "en:e330"
      ],
      "emb_codes_orig":"",
      "informers_tags":[
         "andre",
         "manu1400",
         "thierrym"
      ],
      "nutrient_levels_tags":[
         "脂肪-in-moderate-quantity",
         "饱和脂肪-in-low-quantity",
         "糖-in-high-quantity",
         "食盐-in-high-quantity"
      ],
      "photographers_tags":[
         "andre"
      ],
      "additives_n":1,
      "pnns_groups_2_tags":[
         "unknown"
      ],
      "unknown_nutrients_tags":[
      ],
      "packaging_tags":[
         "cellophane",
         "carton"
      ],
      "nutriments":{
         "sodium":"0.629",
         "sugars":10,
         "carbohydrates_unit":"g",
         "fat_unit":"g",
         "proteins_unit":"g",
         "nutrition-score-fr_100g":15,
         "fat":7,
         "proteins_serving":7,
         "sodium_serving":0.629,
         "salt":1.59766,
         "proteins":7,
         "nutrition-score-fr":15,
         "sugars_unit":"g",
         "fat_serving":7,
         "sodium_unit":"mg",
         "sugars_100g":"12.8",
         "saturated-fat_unit":"g",
         "sodium_100g":0.806,
         "saturated-fat_serving":1,
         "fiber_unit":"g",
         "energy":1297,
         "energy_unit":"kcal",
         "sugars_serving":10,
         "carbohydrates_100g":70.5,
         "nutrition-score-uk":15,
         "proteins_100g":8.97,
         "fiber_serving":0,
         "carbohydrates_serving":55,
         "energy_serving":1297,
         "fat_100g":"8.97",
         "saturated-fat_100g":"1.28",
         "nutrition-score-uk_100g":15,
         "fiber":0,
         "salt_serving":1.59766,
         "salt_100g":"2.05",
         "carbohydrates":55,
         "fiber_100g":0,
         "energy_100g":1660,
         "saturated-fat":1
      },
      "countries_tags":[
         "en:france"
      ],
      "ingredients_from_palm_oil_tags":[
      ],
      "emb_codes_tags":[
      ],
      "brands_tags":[
         "thai-kitchen"
      ],
      "purchase_places":"",
      "pnns_groups_2":"unknown",
      "countries_hierarchy":[
         "en:france"
      ],
      "traces":"Peanuts",
      "categories":"Rice Noodles",
      "ingredients_text":"RICE NOODLES (RICE, WATER), SEASONING PACKET (PEANUT, SUGAR, SALT, CORN STARCH, SPICES [CHILI, CINNAMON, PEPPER, CUMIN, CLOVE], HYDRDLYZED SOY PROTEIN, GREEN ONIONS, CITRIC ACID, PEANUT OIL, SESAME OIL, NATURAL FLAVOR).  ",
      "created_t":1345799269,
      "product_name":"Stir-Fry Rice Noodles",
      "ingredients_from_or_that_may_be_from_palm_oil_n":0,
      "creator":"andre",
      "no_nutrition_data":null,
      "serving_size":"78 g",
      "completed_t":1355184837,
      "last_modified_by":"thierrym",
      "new_additives_n":1,
      "origins":"Thailand",
      "stores":"",
      "nutrition_grade_fr":"d",
      "nutrient_levels":{
         "salt":"high",
         "fat":"moderate",
         "sugars":"high",
         "saturated-fat":"low"
      },
      "stores_tags":[
      ],
      "id":"737628064502",
      "countries":"France",
      "purchase_places_tags":[
      ],
      "interface_version_modified":"20120622",
      "fruits-vegetables-nuts_100g_estimate":0,
      "sortkey":1355184837,
      "last_modified_t":1355184837,
      "nutrition_score_debug":" -- energy 4 + sat-fat 1 + fr-sat-fat-for-fats 0 + sugars 2 + sodium 8 - fruits 0% 0 - fiber 0 - proteins 5 -- fsa 15 -- fr 15",
      "countries.20131227":null,
      "correctors_tags":[
         "andre",
         "thierrym"
      ],
      "correctors":[
         "andre",
         "thierrym"
      ],
      "new_additives_debug":"lc: en -  [ rice-noodles -> en:rice-noodles  ]  [ rice -> en:rice  ]  [ water -> en:water  ]  [ seasoning-packet -> en:seasoning-packet  ]  [ peanut -> en:peanut  ]  [ sugar -> en:sugar  ]  [ salt -> en:salt  ]  [ corn-starch -> en:corn-starch  ]  [ spices-chili -> en:spices-chili  ]  [ cinnamon -> en:cinnamon  ]  [ pepper -> en:pepper  ]  [ cumin -> en:cumin  ]  [ clove -> en:clove  ]  [ hydrdlyzed-soy-protein -> en:hydrdlyzed-soy-protein  ]  [ green-onions -> en:green-onions  ]  [ citric-acid -> en:e330  -> exists  ]  [ peanut-oil -> en:peanut-oil  ]  [ sesame-oil -> en:sesame-oil  ]  [ natural-flavor -> en:natural-flavor  ] ",
      "brands":"Thai Kitchen",
      "ingredients_tags":[
         "rice-noodles",
         "seasoning-packet",
         "",
         "rice",
         "water",
         "peanut",
         "sugar",
         "salt",
         "corn-starch",
         "spices",
         "chili",
         "cinnamon",
         "pepper",
         "cumin",
         "clove",
         "hydrdlyzed-soy-protein",
         "green-onions",
         "citric-acid",
         "peanut-oil",
         "sesame-oil",
         "natural-flavor"
      ],
      "new_additives_tags":[
         "en:e330"
      ],
      "states":"en:to-be-checked, en:complete, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-to-be-completed, en:characteristics-completed, en:photos-validated, en:photos-uploaded",
      "informers":[
         "andre",
         "manu1400",
         "thierrym"
      ],
      "entry_dates_tags":[
         "2012-08-24",
         "2012-08",
         "2012"
      ],
      "nutrition_grades_tags":[
         "d"
      ],
      "packaging":"Cellophane,Carton",
      "serving_quantity":78,
      "origins_tags":[
         "thailand"
      ],
      "nutrition_data_per":"serving",
      "labels":"gluten free",
      "cities_tags":[
      ],
      "emb_codes_20141016":"",
      "categories_tags":[
         "en:rice-noodles"
      ],
      "quantity":"155 g",
      "expiration_date":"",
      "states_hierarchy":[
         "en:to-be-checked",
         "en:complete",
         "en:nutrition-facts-completed",
         "en:ingredients-completed",
         "en:expiration-date-to-be-completed",
         "en:characteristics-completed",
         "en:photos-validated",
         "en:photos-uploaded"
      ],
      "ingredients_that_may_be_from_palm_oil_n":0,
      "ingredients_from_palm_oil_n":0,
      "image_url":"https://world.openfoodfacts.org/images/products/737/628/064/502/front.6.400.jpg",
      "ingredients":[
         {
            "text":"RICE NOODLES",
            "id":"rice-noodles",
            "rank":1
         },
         {
            "text":"SEASONING PACKET",
            "id":"seasoning-packet",
            "rank":2
         },
         {
            "text":".",
            "id":"",
            "rank":3
         },
         {
            "text":"RICE",
            "id":"rice"
         },
         {
            "text":"WATER",
            "id":"water"
         },
         {
            "text":"PEANUT",
            "id":"peanut"
         },
         {
            "text":"SUGAR",
            "id":"sugar"
         },
         {
            "text":"SALT",
            "id":"salt"
         },
         {
            "text":"CORN STARCH",
            "id":"corn-starch"
         },
         {
            "text":"SPICES",
            "id":"spices"
         },
         {
            "text":"CHILI",
            "id":"chili"
         },
         {
            "text":"CINNAMON",
            "id":"cinnamon"
         },
         {
            "text":"PEPPER",
            "id":"pepper"
         },
         {
            "text":"CUMIN",
            "id":"cumin"
         },
         {
            "text":"CLOVE",
            "id":"clove"
         },
         {
            "text":"HYDRDLYZED SOY PROTEIN",
            "id":"hydrdlyzed-soy-protein"
         },
         {
            "text":"GREEN ONIONS",
            "id":"green-onions"
         },
         {
            "text":"CITRIC ACID",
            "id":"citric-acid"
         },
         {
            "text":"PEANUT OIL",
            "id":"peanut-oil"
         },
         {
            "text":"SESAME OIL",
            "id":"sesame-oil"
         },
         {
            "text":"NATURAL FLAVOR",
            "id":"natural-flavor"
         }
      ],
      "lc":"en",
      "pnns_groups_1_tags":[
         "unknown"
      ],
      "checkers":[
      ],
      "complete":1
   },
   "code":"737628064502"
}

Creators

Scot Scriven

Copyright and license

Copyright 2015 Scriven Scot

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.