McDonald's API: Get menu item nutrition
Looks up a McDonald's menu item by name on the US, UK or Canada site and returns its nutrition, allergens, ingredients and photo link.
Unofficial. Not affiliated with or endorsed by McDonald's.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Item, required
item Menu item name, for example Big Mac or Medium French Fries.
Big Mac
- Country optional
country Country name or two-letter code, for example United Kingdom or GB. Supports United States, United Kingdom and Canada. Defaults to United States.
United States (default)
Input as JSON
{ "item": "Big Mac"}Output
{ "salt_g": null, "country": "United States", "calories": 580, "sugars_g": 7, "allergens": [ "Egg", "Milk", "Sesame" ], "energy_kj": 2430, "item_name": "Big Mac", "protein_g": 25, "sodium_mg": 1060, "photo_link": "https://s7d1.scene7.com/is/image/mcdonalds/DC_202302_0005-999_BigMac_1564x1564-1" , "ingredients": "Ingredients: Enriched Flour (wheat Flour, Malted Barley Flour, Niacin, Reduced Iron, Thiamine Mononitrate, Riboflavin, Folic Acid), Water, Sugar, Yeast, Soybean Oil, Contains 2% Or Less: Sesame Seeds, Potato Starch, Salt, Dextrose, Corn Starch, Modified Food Starch, Vinegar, Vegetable Proteins (pea,…", "total_fat_g": 34, "serving_size": "1 item", "item_page_link": "https://www.mcdonalds.com/us/en-us/product/big-mac.html" , "carbohydrates_g": 45, "saturated_fat_g": 11}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"mcdonalds.com/get_menu_item_nutrition","input":{"item":"Big Mac"}}' # 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": "mcdonalds.com/get_menu_item_nutrition" , "input": { "item": "Big Mac" }})# 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": "mcdonalds.com/get_menu_item_nutrition" , "input": { "item": "Big Mac" } }), 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 mcdonalds.com/get_menu_item_nutrition# with {"item":"Big Mac"}"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 Big Mac or Medium French Fries." }, "country": { "type": "string", "default": "United States", "description": "Country name or two-letter code, for example United Kingdom or GB. Supports United States, United Kingdom and Canada. Defaults to United States." } }}Output schema
{ "type": "object", "required": [ "item_name", "country", "serving_size", "calories", "energy_kj", "total_fat_g", "saturated_fat_g", "carbohydrates_g", "sugars_g", "protein_g", "sodium_mg", "salt_g", "allergens", "ingredients", "photo_link", "item_page_link" ], "properties": { "salt_g": { "type": [ "number", "null" ] }, "country": { "type": "string" }, "calories": { "type": [ "number", "null" ] }, "sugars_g": { "type": [ "number", "null" ] }, "allergens": { "type": "array", "items": { "type": "string" } }, "energy_kj": { "type": [ "number", "null" ] }, "item_name": { "type": "string" }, "protein_g": { "type": [ "number", "null" ] }, "sodium_mg": { "type": [ "number", "null" ] }, "photo_link": { "type": [ "string", "null" ] }, "ingredients": { "type": [ "string", "null" ] }, "total_fat_g": { "type": [ "number", "null" ] }, "serving_size": { "type": [ "string", "null" ] }, "item_page_link": { "type": "string" }, "carbohydrates_g": { "type": [ "number", "null" ] }, "saturated_fat_g": { "type": [ "number", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
mcdonalds.com/get_menu_item_nutrition- Returns
- item name, serving size, calories, energy, fat, carbs, sugars, protein, sodium, salt, allergens, ingredients, photo and 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 mcdonalds.com/get_menu_item_nutrition with the inputs above.
Ask your agent
- How many calories and how much sugar are in a Big Mac in the US?
- What allergens does the Medium French Fries contain on the UK McDonald's site?
- Look up the Quarter Pounder with Cheese nutrition facts for Canada, including sodium and protein.
- I need the ingredients list and serving size for a McFlurry with Oreo cookies in the United Kingdom.
- Can you show me the photo and page link for the Chicken McNuggets 10 piece nutrition info in Canada?
See more
All McDonald's methodsFinds McDonald's restaurants within 50 miles of a US city, address or ZIP code, nearest first. Each result includes today's hours, services and directions. Open-now status follows the listed hours.
mcdonalds.com/search_restaurantsLooks up a Starbucks menu item by name. Returns its description, standard recipe, size-specific nutrition, ingredients, allergens and photo.
starbucks.com/get_menu_itemLooks up a food in USDA FoodData Central and returns its nutrients per 100 g and for a chosen amount (grams, ounces, or a listed household portion).
fdc.nal.usda.gov/get_nutrition_factsGets 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_menuSearches USDA FoodData Central foods and branded products by food or brand name, ranked by relevance. Calories and serving sizes are null when not supplied.
fdc.nal.usda.gov/search_foodsLooks 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 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 a Nike product's details by name or product link for a chosen country. Returns its colourways, size availability, price and reviews.
nike.com/get_product