Recipe API
FAQs
How do I request access to the API?
Follow the instructions on the Getting Started page of this portal.
What values can I input for "size" and "from" for recipes/grouping and recipes/search?
0 - 10000 however from + size must be less than or equal to 10000.
What will happen if "size" isn't specified for recipes/grouping and recipes/search?
The response will default to 10 recipes.
How can I access recipes with grouped ingredients and grouped instructions?
When requesting credentials via Kana please specify this requirement in the request. The credentials generated will then return recipes with the grouping element included.
What does a recipe with grouped ingredients and grouped instructions look like?
Example below:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.0,
"hits": [
{
"_index": "recipes-en-20201014150140",
"_type": "_doc",
"_id": "179256",
"_score": 0.0,
"_source": {
"header": {
"@context": "https://schema.org/",
"@type": "Recipe",
"name": "Asian Beef Skewers with Aioli Tempura Vegetables",
"image": [
"https://scm-assets.constant.co/scm/unilever/e9dc924f238fa6cc29465942875fe8f0/7d01f49c-dc3f-47e6-8184-5cc1e81fa1fd.jpg"
],
"author": {
"@type": "Organization",
"name": "Best Foods"
},
"description": "Recipe by Fire & Thyme",
"prepTime": "PT15M",
"cookTime": "PT30M",
"totalTime": "PT45M",
"keywords": "medium,Lunch, Dinner,",
"recipeYield": 4,
"recipeCategory": "side, entrée, finger food",
"recipeCuisine": "Asian",
"nutrition": {
"@type": "NutritionInformation",
"calories": "587.96kcal",
"carbohydrateContent": "40.14g",
"cholesterolContent": "118.39mg",
"fiberContent": "3.4g",
"proteinContent": "37.19g",
"sodiumContent": "1778.85mg",
"fatContent": "30.67g",
"saturatedFatContent": "9.39g",
"transFatContent": "0g",
"unsaturatedFatContent": "18.05g",
"sugarContent": "8.05g"
},
"recipeIngredient": [
"4 pieces 150 grams sirloin steak",
"1/3 cup soy sauce",
"2 tablespoons rice vinegar",
"1 tablespoon sesame oil",
"1 tablespoon brown sugar",
"1 teaspoon crushed garlic",
"1 teaspoon crushed ginger",
"1/4 cup Best Foods aioli",
"1 tablespoon soy sauce",
"100 grams plain flour",
"150 ml iced water",
"2 tablespoons Best Foods aioli",
"1 teaspoon baking powder",
"1 cup mixed capsciums sliced",
"1 cup broccoli cut into florets",
"1 cup courgette sliced",
"1 cup onions cut into rings",
"1 cup sweet potato sliced steamed"
],
"recipeInstructions": [
{
"@type": "HowToSection",
"name": "ungrouped",
"itemListElement": [
{
"type": "HowToStep",
"text": "Add all marinade ingredients to a bowl and mix well. Remove any hard fats on sirloin, cut into 1-2cm cubes, and add to marinade. Set aside for a few hours, or preferably overnight."
}
]
},
{
"@type": "HowToSection",
"name": "Skewers",
"itemListElement": [
{
"type": "HowToStep",
"text": "Heat pan over medium to high heat. Add the beef cubes to skewers, then place in heated pan, turning skewers every minute for four to five minutes. Baste with any remaining marinade, until cooked through and nicely seared. Cover and set aside to keep warm."
}
]
},
{
"@type": "HowToSection",
"name": "Tempura Vegies",
"itemListElement": [
{
"type": "HowToStep",
"text": "Prepare soy and garlic dip by mixing the soy sauce and aioli together in a small bowl. In a separate bowl, whisk together the flour, Best Foods Aioli, baking powder and ice water until you have a thin batter. You want a consistency a little thicker than pouring cream."
},
{
"type": "HowToStep",
"text": "Add 1-2 cm of oil in to a high sided pan, and heat to a high temperature. NOTE: The oil is hot enough when a small teaspoon of batter dropped in sizzles and turns golden brown."
},
{
"type": "HowToStep",
"text": "Cook the vegetables in batches. Dip them in the batter, letting the excess drip off so they are just thinly coated, then carefully place them into the hot oil."
},
{
"type": "HowToStep",
"text": "Allow the veggies to fry for 10-20 seconds, then turn them over, and cook for a further 10-20 seconds until lightly golden brown and crispy. Remove the cooked vegetables with a slotted spoon and place them on paper towels to drain excess oil."
},
{
"type": "HowToStep",
"text": "Continue working in batches until all the vegetables are cooked, then serve with the warm Asian beef skewers and dipping sauce."
}
]
}
]
},
"recipeData": {
"recipeID": 179256,
"name": "Asian Beef Skewers with Aioli Tempura Vegetables",
"createdDate": "2019-11-17T16:18:38Z",
"modifiedDate": "2019-12-02T03:47:49Z",
"image": [
{
"default": "https://scm-assets.constant.co/scm/unilever/e9dc924f238fa6cc29465942875fe8f0/7d01f49c-dc3f-47e6-8184-5cc1e81fa1fd.jpg"
},
{
"title": "Asian Beef Skewers with Aioli Tempura Vegetables"
}
],
"author": {
"@type": "Organization",
"name": "Best Foods"
},
"description": "Recipe by Fire & Thyme",
"prepTime": "PT15M",
"cookTime": "PT30M",
"totalTime": "PT45M",
"countries": [
"NZ"
],
"languages": [
"New Zealand English"
],
"brands": [
"Best Foods"
],
"difficulty": [
"medium"
],
"timesOfDay": [
"Lunch",
"Dinner"
],
"dishes": [
"sauce",
"steak"
],
"recipeYield": 4,
"recipeCategory": [
"side",
"entrée",
"finger food"
],
"recipeCuisine": [
"Asian"
],
"mainIngredient": [
"beef",
"vegetables"
],
"nutritionalInformation": {
"nutritionPerServing": {
"energyPerNutrientBasis": {
"value": 587.96,
"unitCode": "kcal",
"dailyValueIntakePercent": "29%",
"isCore": true
},
"calciumPerNutrientBasis": {
"value": 170.96,
"unitCode": "mg",
"dailyValueIntakePercent": "17%",
"isCore": false
},
"carbohydratesPerNutrientBasis": {
"value": 40.14,
"unitCode": "g",
"dailyValueIntakePercent": "13%",
"isCore": false
},
"cholesterolPerNutrientBasis": {
"value": 118.39,
"unitCode": "mg",
"dailyValueIntakePercent": "39%",
"isCore": false
},
"fatPerNutrientBasis": {
"value": 30.67,
"unitCode": "g",
"dailyValueIntakePercent": "47%",
"isCore": true
},
"fibrePerNutrientBasis": {
"value": 3.4,
"unitCode": "g",
"dailyValueIntakePercent": "14%",
"isCore": true
},
"ironPerNutrientBasis": {
"value": 3.63,
"unitCode": "mg",
"dailyValueIntakePercent": "20%",
"isCore": false
},
"monounsaturatedFatPerNutrientBasis": {
"value": 11.6,
"unitCode": "g",
"isCore": false
},
"potassiumPerNutrientBasis": {
"value": 927.78,
"unitCode": "mg",
"dailyValueIntakePercent": "27%",
"isCore": false
},
"proteinPerNutrientBasis": {
"value": 37.19,
"unitCode": "g",
"dailyValueIntakePercent": "74%",
"isCore": true
},
"saltPerNutrientBasis": {
"value": 4.45,
"unitCode": "g",
"dailyValueIntakePercent": "74%",
"isCore": false
},
"saturatedFatPerNutrientBasis": {
"value": 9.39,
"unitCode": "g",
"dailyValueIntakePercent": "47%",
"isCore": true
},
"sodiumPerNutrientBasis": {
"value": 1778.85,
"unitCode": "mg",
"dailyValueIntakePercent": "74%",
"isCore": true
},
"sugarsPerNutrientBasis": {
"value": 8.05,
"unitCode": "g",
"isCore": true
},
"transFatPerNutrientBasis": {
"value": 0,
"unitCode": "g",
"isCore": false
},
"vitaminAPerNutrientBasis": {
"value": 3832.45,
"unitCode": "IU",
"dailyValueIntakePercent": "77%",
"isCore": false
},
"vitaminCPerNutrientBasis": {
"value": 42.42,
"unitCode": "mg",
"dailyValueIntakePercent": "71%",
"isCore": false
}
},
"nutritionPerRecipe": {
"energyPerNutrientBasis": {
"value": 2351.86,
"unitCode": "kcal",
"isCore": true
},
"calciumPerNutrientBasis": {
"value": 683.83,
"unitCode": "mg",
"isCore": false
},
"carbohydratesPerNutrientBasis": {
"value": 160.55,
"unitCode": "g",
"isCore": false
},
"cholesterolPerNutrientBasis": {
"value": 473.57,
"unitCode": "mg",
"isCore": false
},
"fatPerNutrientBasis": {
"value": 122.7,
"unitCode": "g",
"isCore": true
},
"fibrePerNutrientBasis": {
"value": 13.6,
"unitCode": "g",
"isCore": true
},
"ironPerNutrientBasis": {
"value": 14.51,
"unitCode": "mg",
"isCore": false
},
"monounsaturatedFatPerNutrientBasis": {
"value": 46.41,
"unitCode": "g",
"isCore": false
},
"potassiumPerNutrientBasis": {
"value": 3711.11,
"unitCode": "mg",
"isCore": false
},
"proteinPerNutrientBasis": {
"value": 148.74,
"unitCode": "g",
"isCore": true
},
"saltPerNutrientBasis": {
"value": 17.8,
"unitCode": "g",
"isCore": false
},
"saturatedFatPerNutrientBasis": {
"value": 37.55,
"unitCode": "g",
"isCore": true
},
"sodiumPerNutrientBasis": {
"value": 7115.39,
"unitCode": "mg",
"isCore": true
},
"sugarsPerNutrientBasis": {
"value": 32.2,
"unitCode": "g",
"isCore": true
},
"transFatPerNutrientBasis": {
"value": 0,
"unitCode": "g",
"isCore": false
},
"vitaminAPerNutrientBasis": {
"value": 15329.78,
"unitCode": "IU",
"isCore": false
},
"vitaminCPerNutrientBasis": {
"value": 169.69,
"unitCode": "mg",
"isCore": false
}
}
},
"recipeIngredient": [
{
"@type": "RecipeIngredientGroup",
"name": "Beef",
"itemListElement": [
"4 pieces 150 grams sirloin steak"
]
},
{
"@type": "RecipeIngredientGroup",
"name": "Marinade",
"itemListElement": [
"1/3 cup soy sauce",
"2 tablespoons rice vinegar",
"1 tablespoon sesame oil",
"1 tablespoon brown sugar",
"1 teaspoon crushed garlic",
"1 teaspoon crushed ginger"
]
},
{
"@type": "RecipeIngredientGroup",
"name": "Soy and Garlic Dipping Sauce",
"itemListElement": [
"1/4 cup Best Foods aioli",
"1 tablespoon soy sauce"
]
},
{
"@type": "RecipeIngredientGroup",
"name": "Aioli Tempura Vegies",
"itemListElement": [
"100 grams plain flour",
"150 ml iced water",
"2 tablespoons Best Foods aioli",
"1 teaspoon baking powder",
"1 cup mixed capsciums sliced",
"1 cup broccoli cut into florets",
"1 cup courgette sliced",
"1 cup onions cut into rings",
"1 cup sweet potato sliced steamed"
]
}
],
"recipeInstructions": [
{
"@type": "HowToSection",
"name": "ungrouped",
"itemListElement": [
{
"type": "HowToStep",
"text": "Add all marinade ingredients to a bowl and mix well. Remove any hard fats on sirloin, cut into 1-2cm cubes, and add to marinade. Set aside for a few hours, or preferably overnight."
}
]
},
{
"@type": "HowToSection",
"name": "Skewers",
"itemListElement": [
{
"type": "HowToStep",
"text": "Heat pan over medium to high heat. Add the beef cubes to skewers, then place in heated pan, turning skewers every minute for four to five minutes. Baste with any remaining marinade, until cooked through and nicely seared. Cover and set aside to keep warm."
}
]
},
{
"@type": "HowToSection",
"name": "Tempura Vegies",
"itemListElement": [
{
"type": "HowToStep",
"text": "Prepare soy and garlic dip by mixing the soy sauce and aioli together in a small bowl. In a separate bowl, whisk together the flour, Best Foods Aioli, baking powder and ice water until you have a thin batter. You want a consistency a little thicker than pouring cream."
},
{
"type": "HowToStep",
"text": "Add 1-2 cm of oil in to a high sided pan, and heat to a high temperature. NOTE: The oil is hot enough when a small teaspoon of batter dropped in sizzles and turns golden brown."
},
{
"type": "HowToStep",
"text": "Cook the vegetables in batches. Dip them in the batter, letting the excess drip off so they are just thinly coated, then carefully place them into the hot oil."
},
{
"type": "HowToStep",
"text": "Allow the veggies to fry for 10-20 seconds, then turn them over, and cook for a further 10-20 seconds until lightly golden brown and crispy. Remove the cooked vegetables with a slotted spoon and place them on paper towels to drain excess oil."
},
{
"type": "HowToStep",
"text": "Continue working in batches until all the vegetables are cooked, then serve with the warm Asian beef skewers and dipping sauce."
}
]
}
],
"validServingSizes": 4,
"locale": "en-NZ",
"nutritions_core_completed": true,
"nutritions_all_completed": false,
"business_group": "Unilever Global",
"unileverDataQualityErrors": [
{
"description": "Description less than or equal to 30 characters"
}
]
}
}
}
]
}
}
How do I fetch more than 10000 recipes from /allrecipes?
- Please provide the parameters (no parameters for all recipes of RMS 2.0), from 0 and size 10000 on basis of which you require a dump and get a response.
- Please look for the "relation" attribute in the recipe response. If the value is "gte" then there are more than 10000 recipes for the parameters passed. For the recipes on the next page to be retrieved, the parameter "search_after" will be required.
- Pass the parameter "search_after" to advance to the next page keeping all the other parameters same. The last recipe ID from the previous page, which can be found in the "sort" attribute at the end of the response, will be the value of "search_after".
- Repeat the procedure until the response at the page's end shows "sort" as "null."
NOTE: Use "search_after" only for more than 10000 recipes.