mcdonalds.com APIwww.mcdonalds.com ↗
Access McDonald's full menu via API. Get nutrition facts, allergens, ingredients, and item details for every menu item across all categories.
curl -X GET 'https://api.parse.bot/scraper/bce67488-088f-4406-8479-7be16bad6801/get_menu?category=Beef' \ -H 'X-API-Key: $PARSE_API_KEY'
Get all McDonald's menu items with basic nutrition data, grouped by category. Optionally filter by category name. Returns items with summary nutrition, allergens, and image URLs.
| Param | Type | Description |
|---|---|---|
| category | string | Filter by category name. Case-insensitive partial match. Verified categories include: 'Beef', 'Breakfast', 'Chicken', 'Beverages', 'McCafé & Bakery', 'Happy Meal', 'Snacks & Sides', 'Sandwiches & Wraps'. Omitting returns all items across all categories. |
{
"type": "object",
"fields": {
"items": "array of item summary objects with item_id, name, description, category, slug, allergens, nutrition, and image_url",
"categories": "array of distinct category name strings present in results",
"total_items": "integer count of items returned"
},
"sample": {
"data": {
"items": [
{
"name": "Double Quarter Pounder BLT",
"slug": "double-quarter-pounder-blt",
"item_id": 201002,
"category": "Beef",
"allergens": "Contains Egg, Milk, Mustard, Sesame Seeds, Soy, Wheat.",
"image_url": "https://s7d1.scene7.com/is/image/mcdonalds/en/mcdonalds-double-quarter-pounder-nocheese-blt.jpg",
"nutrition": {
"fat": "52 g",
"protein": "49 g",
"calories": "830 Cals",
"primary_serving_size": "309 g"
},
"description": "Two quarter pound* 100% Canadian beef patties..."
}
],
"categories": [
"Beef"
],
"total_items": 7
},
"status": "success"
}
}About the mcdonalds.com API
The McDonald's API provides access to the full McDonald's menu across 2 endpoints, returning nutrition data, allergens, ingredient statements, and item imagery. The get_menu endpoint returns all menu items grouped by category with summary nutrition, while get_item_details delivers per-item breakdowns including daily value percentages, component-level ingredient statements, and time-of-day availability.
Menu Browsing with get_menu
The get_menu endpoint returns an array of item summary objects, each containing item_id, name, description, category, slug, allergens, a nutrition summary, and image_url. Results include a categories array of distinct category strings present in the response and a total_items count. The optional category parameter accepts a case-insensitive partial match, letting you filter to segments like 'Beef', 'Breakfast', or 'Chicken' without needing an exact string.
Item-Level Detail with get_item_details
Passing a numeric item_id to get_item_details returns the full nutrition object keyed by nutrient ID, where each entry carries name, value, unit, and daily_value_percent. The components array breaks the item into its constituent parts — each component includes a name, an ingredient_statement, and optional allergens. The allergens field at the top level is a flat array of individual allergen strings, making it straightforward to filter items for common dietary needs. time_of_day indicates when the item is available (e.g., breakfast-only items).
Practical Data Shape
Item IDs returned by get_menu are the required input for get_item_details, so the typical workflow is to call get_menu once (optionally filtered by category) to collect item_id values, then call get_item_details for any items requiring full nutrition or ingredient data. Images are returned as direct URLs and may be null for some items.
- Build a calorie-tracking app that pulls
daily_value_percentand nutrient values for every McDonald's menu item - Filter menu items by allergen strings to generate safe-to-eat lists for users with dietary restrictions
- Display ingredient statements from the
componentsarray to support transparency or food-labeling tools - Create a breakfast-specific menu view using the
categoryfilter parameter onget_menu - Compare sodium or fat content across Beef and Chicken categories using the nutrition summaries returned by
get_menu - Build a time-of-day availability checker using the
time_of_dayfield fromget_item_details - Populate a restaurant menu display with item names, descriptions, and
image_urlvalues across all categories
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does McDonald's have an official public developer API?+
What does get_item_details return beyond what get_menu provides?+
nutrition object with daily_value_percent for each nutrient, the components array with per-component ingredient_statement and allergens, and the time_of_day availability indicator. get_menu returns only summary nutrition and top-level allergens without component breakdowns or daily value percentages.