M1 Search & Data

Find any ingredient — in any language.

Multilingual hybrid search (keyword + semantic) across thousands of curated ingredients, typo-tolerant autocomplete for your input fields, and the full ingredient profile as a data product: allergens, flavor, physics, relationships — behind stable canonical IDs.

Thousands
of curated ingredients
DE · EN · ES
languages — search & data
24
flavor axes per ingredient

Hybrid search.

Keyword matches and semantic similarity in one request. Hits are resolved to full ingredients — you get usable objects right away, not loose IDs.

Typo-tolerant autocomplete.

A lightweight suggestion list (ID + name only) for search fields — forgives typos and stays smooth even with fast typing.

The full data product.

One lookup, everything included: allergen profile across 14 domains, 24 flavor axes, physical data and the food-graph relationships. Stable canonical IDs keep results referenceable forever.

Master data included.

Categories, localized units and supported languages as dedicated meta endpoints — for filters, forms and clean data handling in your app.

Endpoints in this module.

GET /v1/ingredients/search

Ingredient search — hybrid of keyword + semantic

GET /v1/ingredients/autocomplete

Typo-tolerant suggestions for input fields

GET /v1/ingredients/{id}

Full ingredient profile (allergens, flavor, physics, relationships)

GET /v1/ingredients/count

Number of entries in the library

GET /v1/meta/categories · units · languages

Categories, units (localized) and language codes

What it looks like.

curl "https://api.foodoracle.app/v1/ingredients/search?q=tomate&lang=de" \
  -H "X-API-Key: fo_live_..."
{
  "query": "tomate",
  "language": "de",
  "results": [
    { "ingredient": { "id": "tomato", "name": "Tomate" } }
  ]
}

Responses shown abbreviated — full schemas in the API reference.

Deterministic. No LLM.

Every answer comes from a curated ingredient library and fixed rules — reproducible, explainable, in milliseconds. Same request, same result. No hallucinations.

1
Credits per call