BETTERMENU
Ingredients search

Search US ingredients

Search for ingredients — find matches for multiple queries.

② of 8 | Next: ⑤ updateRecipeIngredients (if all gram_weights present) or ③ computeConversions (if gram_weight is null) Stateless — no recipe needed yet.

Use this to answer: "search for these ingredients", "find matches for my ingredient list"

Accepts multiple queries and returns ranked candidate matches per query. Each candidate includes ingredient_id, name, and type-specific fields (category/preparation for ingredients, brand info for products).

Use filters.item_type to narrow results to ingredients or products. Use include to request optional data like food_portions or nutrients.

POST
/ingredients/us/ingredients/search

Authorization

BearerAuth
AuthorizationBearer <token>

JWT Bearer token authentication

In: header

Request Body

application/json

queries*array<>

Ingredient queries to search

Items1 <= items <= 20
limit?integer

Max candidates per query

Default5
Range1 <= value <= 20
filters?

Filters applied to all queries

include?array<>

Optional data to include with each result

Response Body

application/json

application/json

curl -X POST "https://loading/ingredients/us/ingredients/search" \  -H "Content-Type: application/json" \  -d '{    "queries": [      {        "position": 0,        "query": "string"      }    ]  }'
[
  {
    "position": 0,
    "query": "string",
    "candidates": [
      {
        "ingredient_id": "string",
        "name": "string",
        "item_type": "ingredient",
        "category": "string",
        "preparation": "string",
        "food_form": "string",
        "confidence": 0,
        "nutrient_count": 0,
        "portion_count": 0,
        "food_portions": [
          {
            "id": "string",
            "amount": "string",
            "unit_name": "string",
            "modifier": "string",
            "gram_weight": "string"
          }
        ],
        "nutrients": [
          {
            "id": "n_qr2jbh18w4hmo",
            "name": "protein",
            "amount": "string",
            "unit": "g"
          }
        ]
      }
    ]
  }
]
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}