Starbucks API: Get menu item
Looks up a Starbucks menu item by name. Returns its description, standard recipe, size-specific nutrition, ingredients, allergens and photo.
Unofficial. Not affiliated with or endorsed by Starbucks.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Item, required
item Menu item name, for example Caffe Latte, Pumpkin Spice Latte, or Butter Croissant.
Butter Croissant
- Size optional
size Drink size, for example tall; food ignores this choice.
tall
One of
short,tall,grande,venti,trenta. Defaultgrande.
Input as JSON
{ "item": "Butter Croissant", "size": "tall"}Output
{ "calories": 250, "allergens": "Egg, Milk, Wheat", "item_name": "Butter Croissant", "protein_g": 5, "size_used": "1 Serving", "sodium_mg": 300, "photo_link": "https://cloudassets.starbucks.com/is/image/sbuxcorp/SBX20210915_Croissant-onGreen" , "caffeine_mg": null, "description": "Classic butter croissant with soft, flaky layers and a golden-brown crust.\n\n–VEGETARIAN", "ingredients": "Enriched Wheat Flour (Wheat Flour, Niacin, Reduced Iron, Ascorbic Acid, Thiamine Mononitrate, Riboflavin, Folic Acid, Enzyme), Butter (Cream (Milk), Natural Flavor), Water, Sugar, Eggs, Whole Milk Powder, Yeast, Sea Salt, Sourdough (Water, Fermented Wheat Flour), Dough Conditioner (Wheat Gluten, Asc…", "total_fat_g": 14, "fluid_ounces": null, "sizes_offered": [ "1 Serving" ], "item_page_link": "https://www.starbucks.com/menu/product/1033/single" , "total_sugars_g": 4, "standard_recipe": null}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"starbucks.com/get_menu_item","input":{"item":"Butter Croissant","size":"tall"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "starbucks.com/get_menu_item" , "input": { "item": "Butter Croissant", "size": "tall" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "starbucks.com/get_menu_item" , "input": { "item": "Butter Croissant", "size": "tall" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run starbucks.com/get_menu_item# with {"item":"Butter Croissant","size":"tall"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "item" ], "properties": { "item": { "type": "string", "description": "Menu item name, for example Caffe Latte, Pumpkin Spice Latte, or Butter Croissant." }, "size": { "enum": [ "short", "tall", "grande", "venti", "trenta" ], "type": "string", "default": "grande", "description": "Drink size, for example tall; food ignores this choice." } }}Output schema
{ "type": "object", "required": [ "item_name", "sizes_offered", "item_page_link" ], "properties": { "calories": { "type": [ "number", "null" ] }, "allergens": { "type": [ "string", "null" ] }, "item_name": { "type": "string" }, "protein_g": { "type": [ "number", "null" ] }, "size_used": { "type": [ "string", "null" ] }, "sodium_mg": { "type": [ "number", "null" ] }, "photo_link": { "type": [ "string", "null" ] }, "caffeine_mg": { "type": [ "number", "null" ] }, "description": { "type": [ "string", "null" ] }, "ingredients": { "type": [ "string", "null" ] }, "total_fat_g": { "type": [ "number", "null" ] }, "fluid_ounces": { "type": [ "number", "null" ] }, "sizes_offered": { "type": "array", "items": { "type": "string" } }, "item_page_link": { "type": "string" }, "total_sugars_g": { "type": [ "number", "null" ] }, "standard_recipe": { "type": [ "string", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
starbucks.com/get_menu_item- Returns
- name, description, size, nutrition, recipe, ingredients, allergens, photo, page link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method starbucks.com/get_menu_item with the inputs above.
Ask your agent
- What are the calories and sugar in a venti Caffe Latte at Starbucks?
- Can you tell me what allergens are in the Butter Croissant and what it's made of?
- I'm looking for a photo and description of the Pumpkin Spice Latte in a tall size.
- Give me the nutrition facts for a grande Caffe Latte, including protein and caffeine.
- What ingredients go into a trenta-sized drink from Starbucks, like the Caramel Macchiato, and does it contain dairy?
See more
All Starbucks methodsFinds Starbucks cafés near a city, address or ZIP code, nearest first, with whether each is open now, today's local hours and amenities; optionally only cafés open now.
starbucks.com/search_storesLooks up a McDonald's menu item by name on the US, UK or Canada site and returns its nutrition, allergens, ingredients and photo link.
mcdonalds.com/get_menu_item_nutritionGets a Zara item's price, colours, sizes with availability, materials and images by item name or Zara item link in a chosen country. A name returns the closest match from Zara's search.
zara.com/get_productGets the delivery menu, prices, rating and delivery details of the nearest matching Uber Eats restaurant at a city or address. For a city, a central listed address is used; delivery fees may reflect guest promotions, and rating counts may be rounded.
ubereats.com/get_restaurant_menuLooks up a packaged food by barcode or by product name and brand, returning ingredients, allergens, Nutri-Score, NOVA processing level and nutrition from Open Food Facts.
openfoodfacts.org/get_productGets a Sephora US product's full details from its name (optionally narrowed by brand) or its Sephora product link: price, sizes and shades with stock, highlights, description, ingredients, usage, ratings and images.
sephora.com/get_productGets a Food Network recipe by dish name or recipe page link. It returns ingredients, directions, ratings and cooking times; page details that are missing come back as null.
foodnetwork.com/get_recipeGets a full Allrecipes recipe by its name or page link, including ingredients, directions, times, ratings and nutrition. Names select the most-rated close match.
allrecipes.com/get_recipe