openfoodfacts/openfoodfacts-php

Open Food Facts API Wrapper, the open database about food.

v0.4.0 2025-07-29 10:18 UTC

README

PHP API Wrapper for Open Food Facts, the open database about food.

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

Current features

Installation

With Composer:

composer require openfoodfacts/openfoodfacts-php

Usage

This is the most basic way of creating the API:

$api = new OpenFoodFacts\Api('food','fr');
$product = $api->getProduct('3057640385148');

In the example above you access the "food" database, limited to the French language/country scope. The first parameter is either

  • "food"
  • "beauty" or
  • "pet"

to decide which product database you want to use.

The second parameter decides the language/country scope of the chosen database: f.e. "world" or "de" or "fr".

For more details on this topic: see the API Documentation

These are all the parameters you really need for basic usage.

As return types for $api->getProduct you get an Document::class Object. This may also be an Object of Type FoodProduct::class,PetProduct::class, BeautyProduct::class depending on which API you are creating. These objects inherit from the more generic Document::class

In the example above, we use the 'food' API and there will get a FoodProduct::class

For getting a first overview the Document::class has a function to return an array representation(sorted) for a first start.

$product = $api->getProduct('3057640385148');
$productDataAsArray = $product->getData();

Optional Parameters

The other parameters are optional and for a more sophisticated use of the api (from a software development point of view):

An example in code is found here: cached_example.php

LoggerInterface: A logger which decieds where to log errors to (file, console , etc)

see: PSR-3 Loggerinterface

ClientInterface: The HTTP Client - to adjust the connection configs to your needs and more

see: Guzzle HTTP Client

CacheInterface: To temporarily save the results of API request to improve the performance and to reduce the load on the API- Server

see: PSR-16 Simple Cache

Development

Contributing

  1. Fork it ( https://github.com/openfoodfacts/openfoodfacts-php/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Launch test vendor/bin/phpunit && cs-fixer vendor/bin/php-cs-fixer fix
  4. Commit your changes (git commit -am 'Add some feature')
  5. Push to the branch (git push origin my-new-feature)
  6. Create a new Pull Request

Using this SDK and Third party applications

  • If you use this SDK, feel free to open a PR to add your application in the list in REUSERS.md
  • Make sure you comply with the OdBL licence, mentioning the Source of your data, and ensuring to avoid combining non free data you can't release legally as open data. Another requirement is contributing back any product you add using this SDK.
  • Please get in touch at reuse@openfoodfacts.org
  • We are very interested in learning what the Open Food Facts data is used for. It is not mandatory, but we would very much appreciate it if you tell us about your re-uses (https://forms.gle/hwaeqBfs8ywwhbTg8) so that we can share them with the Open Food Facts community. You can also fill this form to get a chance to get your app featured: https://forms.gle/hwaeqBfs8ywwhbTg8

Authors