---
title: "GET /api/v1/products"
method: GET
path: "/api/v1/products"
tags: ["products"]
---

# GET /api/v1/products

`GET /api/v1/products`

## Request

- Base URL: `https://prices.openfoodfacts.org` (the document declares no server; this is the origin it was published from)
- URL: `https://prices.openfoodfacts.org/api/v1/products`
- Auth: none required

## Query parameters

- `brands__like` string
- `brands_tags__contains` string
- `categories_tags__contains` string
- `code` string
- `creator` string
- `ecoscore_grade` string
- `labels_tags__contains` string
- `nova_group` integer
- `nutriscore_grade` string
- `order_by` string
- `page` integer
- `price_count` integer
- `price_count__gte` integer
- `price_count__lte` integer
- `product_name__like` string
- `size` integer
- `source` 'obf' | 'off' | 'opf' | 'opff', nullable
- `source__isnull` boolean
- `unique_scans_n__gte` integer

## Response `200`

- PaginatedProductFullList
  - `items` ProductFull[], required
    - `id` integer, required
    - `code` string, required
    - `source` union
      - 'off' | 'obf' | 'opff' | 'opf': * `off` - off * `obf` - obf * `opff` - opff * `opf` - opf
      - ''
      - unknown
    - `source_last_synced` string, date-time, nullable
    - `product_name` string, nullable
    - `image_url` string, nullable
    - `product_quantity` integer, nullable
    - `product_quantity_unit` string, nullable
    - `quantity` string, nullable
    - `categories_tags` string[]
    - `brands` string, nullable
    - `brands_tags` string[]
    - `labels_tags` string[]
    - `nutriscore_grade` string, nullable
    - `ecoscore_grade` string, nullable
    - `nova_group` integer, nullable
    - `creator` string, nullable
    - `unique_scans_n` integer, nullable
    - `price_count` integer
    - `price_currency_count` integer
    - `location_count` integer
    - `location_type_osm_country_count` integer
    - `user_count` integer
    - `proof_count` integer
    - `created` string, date-time
    - `updated` string, date-time, required
  - `page` integer, required: Current page number
  - `pages` integer, required: Total number of pages
  - `size` integer, required: Number of items per page
  - `total` integer, required: Total number of items

## Changes

- **2026-07-13** `f1bb01adae9b`: 1 breaking, 28 info
  - the `items/items/` response's property type changed from `array` to `object` for status `200`
  - added the new optional `query` request parameter `creator`
  - added the new optional `query` request parameter `source__isnull`
  - added the optional property `items/items/brands` to the response with the `200` status
  - …25 more
- **2025-05-13** `437b89964356`: 1 breaking, 1 info
  - removed the enum value `off_pro` from the `query` request parameter `source`
  - removed the `off_pro` enum value from the `items/items/items/source/oneOf[#/components/schemas/SourceEnum]/` response property for the response status `200`

[Operation history](https://skmtc.dev/openfoodfacts/apis/open-food-facts-open-prices-rest-api/changes/api/v1/products/get.md)

---

[API](https://skmtc.dev/openfoodfacts/apis/open-food-facts-open-prices-rest-api.md) - [All operations](https://skmtc.dev/openfoodfacts/apis/open-food-facts-open-prices-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/openfoodfacts/apis/open-food-facts-open-prices-rest-api/revisions/d7c5d8b4c32e?raw)
