---
title: Food Ingredient Information API
slug: food-ingredient-information-api
url: https://apyhub.com/skycraft/service/food-ingredient-information-api
provider: Skycraft
tags: [ingredient-search, nutrition-data, food-substitutes, recipe-ingredients, grocery-mapping]
auth: api_key
version: 2.0.2
service_type: sync
endpoints: 8
atoms: 20
mcp: true
---

# Food Ingredient Information API

Search ingredients, fetch nutrition details, find substitutes, and map recipe ingredients to products. Useful for food apps, meal planning, and recipe tools.

## Endpoints

| Method | URL | Description | Atoms |
| --- | --- | --- | --- |
| GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/search` | What it does Searches for food ingredients by a query string and returns a paginated JSON object co… | 20 |
| GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/information` | What it does Retrieves information for a specific ingredient by its id. You can optionally supply u… | 20 |
| GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/substitutes` | What it does Retrieves substitute ingredients for a specific ingredient ID. The response returns a… | 20 |
| GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/recipes/:id/ingredientWidget.png` | What it does Returns the ingredient widget image for a recipe identified by its numeric id. You can… | 20 |
| POST | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/map` | What it does Maps a list of ingredient names to grocery products. You send the ingredients and serv… | 20 |
| GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/substitutes` | What it does Returns ingredient substitute information for a given ingredient name. You provide the… | 20 |
| GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/amount` | What it does Computes the amount of the ingredient identified by id for a requested nutrient and ta… | 20 |
| GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/autocomplete` | What it does Returns a JSON array of ingredient suggestions matching the query search term. Each it… | 20 |

## Endpoint reference

### Ingredient Search

`GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/search` · 20 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `sort` | query | string | no | Example: `calories`. |
| `query` | query | string | yes | Example: `burger`. |
| `number` | query | integer | no | Default: `10`. Example: `10`. |
| `offset` | query | integer | no |  |
| `language` | query | string | no | One of: en, de. Example: `en`. |
| `addChildren` | query | boolean | no | Example: `true`. |
| `intolerances` | query | string | no | Example: `egg`. |
| `maxFatPercent` | query | number | no | Example: `90`. |
| `minFatPercent` | query | number | no | Example: `10`. |
| `sortDirection` | query | string | no | Example: `asc`. |
| `maxCarbsPercent` | query | number | no | Example: `90`. |
| `metaInformation` | query | boolean | no | Example: `false`. |
| `minCarbsPercent` | query | number | no | Example: `10`. |
| `maxProteinPercent` | query | number | no | Example: `90`. |
| `minProteinPercent` | query | number | no | Example: `10`. |

#### Quickstart

Search for ingredients by a keyword query and return the first page of matching results.

```bash
curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/search?query=burger" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `results`, `offset`, `number`, and `totalResults` fields. `results` is an array of ingredient objects, each with `id`, `name`, and `image`; `offset` and `number` describe the page, and `totalResults` is the total number of matches.

```json
{
  "number": 10,
  "offset": 0,
  "results": [
    {
      "id": 123,
      "name": "Burger",
      "image": "burger.png"
    }
  ],
  "totalResults": 1
}
```

### Get Ingredient Information

`GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/information` · 20 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | Example: `9266`. |
| `unit` | query | string | no | Example: `grams`. |
| `amount` | query | number | no | Example: `150`. |

#### Quickstart

Fetch ingredient information for a specific ingredient ID, with optional unit and amount query parameters.

```bash
curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/information?unit=grams&amount=150" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with fields such as `id`, `name`, `original`, `originalName`, `amount`, `unit`, `unitShort`, `unitLong`, `possibleUnits`, `estimatedCost`, `consistency`, `aisle`, `image`, and `meta`. It may also include a nested `nutrition` object with `nutrients`, `properties`, `caloricBreakdown`, and `weightPerServing`.

```json
{
  "id": 12135,
  "original": "nuts",
  "originalName": "nuts",
  "name": "nuts",
  "amount": 150,
  "unit": "grams",
  "unitShort": "g",
  "unitLong": "grams",
  "possibleUnits": ["handful", "g", "ounce", "oz", "cup", "serving", "tablespoon"],
  "estimatedCost": {
    "value": 182.14,
    "unit": "cents"
  },
  "consistency": "solid",
  "shoppingListUnits": ["ounces", "pounds"],
  "aisle": "Nuts",
  "image": "nuts-mixed.jpg",
  "meta": [],
  "nutrition": {
    "nutrients": [
      {"name": "Calories", "amount": 891, "unit": "kcal", "percentOfDailyNeeds": 44.55},
      {"name": "Protein", "amount": 25.95, "unit": "g", "percentOfDailyNeeds": 51.9},
      {"name": "Carbohydrates", "amount": 38.03, "unit": "g", "percentOfDailyNeeds": 12.68},
      {"name": "Fat", "amount": 77.18, "unit": "g", "percentOfDailyNeeds": 118.73},
      {"name": "Fiber", "amount": 13.5, "unit": "g", "percentOfDailyNeeds": 54}
    ],
    "properties": [
      {"name": "Glycemic Index", "amount": 29.67, "unit": ""},
      {"name": "Glycemic Load", "amount": 7.28, "unit": ""},
      {"name": "Nutrition Score", "amount": 27.72, "unit": "%"}
    ],
    "flavonoids": [],
    "caloricBreakdown": {
      "percentProtein": 10.92,
      "percentFat": 73.08,
      "percentCarbs": 16
    },
    "weightPerServing": {
      "amount": 150,
      "unit": "g"
    }
  },
  "categoryPath": ["snack"]
}
```

### Get Ingredient Substitutes by ID

`GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/substitutes` · 20 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | Example: `1001`. |

#### Quickstart

Fetch the substitutes for a food ingredient by ID.

```bash
curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/substitutes" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `ingredient` and `message` string fields, plus a `substitutes` array of strings.

```json
{
  "ingredient": "sugar",
  "substitutes": ["honey", "maple syrup"],
  "message": "Substitutes found"
}
```

### Ingredients by ID Image

`GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/recipes/:id/ingredientWidget.png` · 20 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | Example: `1082038`. |
| `measure` | query | string | no | One of: us, metric. Example: `metric`. |

#### Quickstart

Fetch the recipe ingredient widget image for a recipe ID.

```bash
curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/recipes/:id/ingredientWidget.png" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a binary image response (`string` with `format: binary`)

### Map Ingredients to Grocery Products

`POST https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/map` · 20 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `servings` | body | number | yes |  |
| `ingredients` | body | array of string | yes |  |

#### Quickstart

Map a list of ingredients to product matches by sending the required `ingredients` and `servings` fields.

```bash
curl -X POST "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/map" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ingredients": ["tomato", "mozzarella"],
    "servings": 2
  }'
```

#### What you'll get back

Returns a JSON array of objects. Each item includes `original`, `originalName`, `ingredientImage`, `meta` (an array of strings), and `products` (an array of product objects with `id`, `title`, and `upc`).

```json
[
  {
    "original": "tomato",
    "originalName": "Tomato",
    "ingredientImage": "https://example.com/tomato.png",
    "meta": ["fresh"],
    "products": [
      {
        "id": 123,
        "title": "Fresh Tomato",
        "upc": "012345678905"
      }
    ]
  }
]
```

### Get Ingredient Substitutes

`GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/substitutes` · 20 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ingredientName` | query | string | yes | Example: `butter`. |

#### Quickstart

Look up ingredient substitutes by passing the ingredient name as a query parameter.

```bash
curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/substitutes?ingredientName=butter" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `ingredient` and `message` string fields, plus a `substitutes` array of strings.

```json
{
  "ingredient": "butter",
  "substitutes": ["margarine", "ghee"],
  "message": "Substitutes found successfully"
}
```

### Compute Ingredient Amount

`GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/amount` · 20 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | Example: `9266`. |
| `unit` | query | string | no | Example: `oz`. |
| `target` | query | integer | yes | Example: `2`. |
| `nutrient` | query | string | yes | Example: `protein`. |

#### Quickstart

Get the amount for a food ingredient by ID, using the required nutrient and target query parameters.

```bash
curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/amount?target=2&nutrient=protein" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON object with `amount` as a number and `unit` as a string.

```json
{
  "amount": 0.7,
  "unit": "oz"
}
```

### Autocomplete Ingredient Search

`GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/autocomplete` · 20 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `query` | query | string | yes | Example: `burger`. |
| `number` | query | integer | no | Default: `10`. Example: `10`. |
| `language` | query | string | no | One of: en, de. Example: `en`. |
| `intolerances` | query | string | no | Example: `egg`. |
| `metaInformation` | query | boolean | no | Example: `false`. |

#### Quickstart

Search for matching ingredient names with the required `query` parameter.

```bash
curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/autocomplete?query=burger" \
  -H "apy-token: $APY_TOKEN"
```

#### What you'll get back

Returns a JSON array of ingredient objects. Each object includes the required `name` and `image` fields, and may also include `id`, `aisle`, and `possibleUnits`.

```json
[
  {
    "id": 1001,
    "name": "butter",
    "aisle": "Dairy",
    "image": "butter.jpg",
    "possibleUnits": ["stick", "tablespoon"]
  }
]
```

## About

## What it does
Ingredient Toolkit gives you ingredient lookup, search, substitution, mapping, and recipe-visualization endpoints in one place. Send ingredient IDs, names, or ingredient lists, and get structured ingredient data, matching suggestions, alternate ingredients, or rendered recipe widgets back.

Use `GET /food/ingredients/:id/information` when you need details for a single ingredient ID. It accepts an `id` path parameter, with optional `unit` and `amount` query parameters, and returns a structured ingredient object with fields such as `id`, `name`, `aisle`, `image`, `nutrition`, `estimatedCost`, `possibleUnits`, and other metadata from the schema.

For discovery, `GET /food/ingredients/search` and `GET /food/ingredients/autocomplete` both accept a `query` string. Search also supports filters like `number`, `offset`, `language`, `addChildren`, `intolerances`, and nutrient percentage bounds, and returns `results`, `offset`, `number`, and `totalResults`. Autocomplete returns a lightweight array of ingredient matches with `id`, `name`, `aisle`, `image`, and `possibleUnits`.

You can also compare and substitute ingredients. `GET /food/ingredients/:id/substitutes` returns the `ingredient`, `substitutes`, and `message` for an ingredient ID, while `GET /food/ingredients/substitutes` does the same for an `ingredientName`. `GET /food/ingredients/:id/amount` calculates an ingredient `amount` and `unit` for a target nutrient, and the recipe widget endpoints return binary or generated widget output for ingredient-list display.

## Usage

Base URL: `https://api.eu.apyhub.com` (default region — see
`GET https://apyhub.com/api/public/regions` for the rest).

Authenticate with an ApyHub API key in the `apy-token` header.
Full docs and a live playground: https://apyhub.com/skycraft/service/food-ingredient-information-api
