Skip to main content

Ingredients

List Ingredients

GET /api/v1/ingredients

Returns a paginated list of ingredients. Supports search and filtering by category.

Query Parameters

ParameterTypeDescription
langstringResponse language (en, fr, es). Defaults to en.
searchstringSearch ingredients by name (case-insensitive). Searches in the requested language with English fallback.
categorystringFilter by category
per_pageintegerItems per page (default: 10, max depends on your plan)
pageintegerPage number (default: 1)

Category Values

vegetable, fruit, meat, poultry, fish, seafood, dairy, egg, grain, legume, herb, spice, oil, condiment, sweetener, nut, beverage, other

Example Request

curl "https://recipeapi.io/api/v1/ingredients?category=vegetable&per_page=5" \
-H "Authorization: Bearer sk_live_..."

Example Response

{
"data": [
{
"id": 799,
"name": "Dark chocolate",
"category": "dairy"
},
{
"id": 6,
"name": "Salt",
"category": "condiment"
},
{
"id": 10,
"name": "Tomato",
"category": "fruit"
}
],
"links": {
"first": "https://recipeapi.io/api/v1/ingredients?page=1&per_page=3",
"last": "https://recipeapi.io/api/v1/ingredients?page=10&per_page=3",
"prev": null,
"next": "https://recipeapi.io/api/v1/ingredients?page=2&per_page=3"
},
"meta": {
"current_page": 1,
"last_page": 10,
"path": "https://recipeapi.io/api/v1/ingredients",
"per_page": 3,
"total": 30,
"language": "en"
}
}

Localization

Ingredient names are translatable. Use the lang parameter to get translated names:

curl "https://recipeapi.io/api/v1/ingredients?lang=fr&search=tomate" \
-H "Authorization: Bearer sk_live_..."
{
"data": [
{
"id": 10,
"name": "Tomate",
"category": "fruit"
}
],
"links": {
"first": "https://recipeapi.io/api/v1/ingredients?lang=fr&page=1",
"last": "https://recipeapi.io/api/v1/ingredients?lang=fr&page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"last_page": 1,
"path": "https://recipeapi.io/api/v1/ingredients",
"per_page": 10,
"total": 1,
"language": "fr"
}
}
Paid feature

Languages other than English require a paid plan. Free plan users who pass lang with a value other than en will receive a 402 error with code PLAN_FEATURE_UNAVAILABLE. Upgrade to unlock translations →


Get Ingredient

GET /api/v1/ingredients/{id}

Returns a single ingredient.

Path Parameters

ParameterTypeDescription
idintegerIngredient ID

Query Parameters

ParameterTypeDescription
langstringResponse language (en, fr, es). Defaults to en.

Example Request

curl "https://recipeapi.io/api/v1/ingredients/10" \
-H "Authorization: Bearer sk_live_..."

Example Response

{
"data": {
"id": 10,
"name": "Tomato",
"category": "fruit"
},
"meta": {
"language": "en"
}
}

Error Response (404)

{
"error": {
"code": "NOT_FOUND",
"message": "The requested resource was not found."
}
}