---
title: "Get one McDonald's restaurant's priced menu"
method: GET
path: "/mcdonalds/restaurant-menu"
tags: ["McDonalds"]
---

# Get one McDonald's restaurant's priced menu

`GET /mcdonalds/restaurant-menu`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/mcdonalds/restaurant-menu`
- Auth: API key in header `x-api-key`

Returns one restaurant's full menu with real prices: item name, image and independently-priced eat-in, pickup and delivery listings, since a McDonald's restaurant genuinely sells a different catalog (and different prices) per channel -- delivery is typically marked up over eat-in/pickup, and some items are channel-exclusive. Where McDonald's publishes a curated substitute or add-on list for an item (a meal's drink upgrade, a dip-able item's sauce choices), each real alternative is included with its own eat-in/pickup price delta -- plain entree or side substitution is not covered, since McDonald's does not publish a curated candidate list for it. This is the only endpoint in this family that publishes prices; every other McDonald's endpoint's source never does. US restaurants only. The store id comes from GET /mcdonalds/restaurants' store_id field.

## Query parameters

- `store_id` string, required

## Headers

- `x-api-key` string, required

## Response `200`

OK

- McdonaldsRestaurantMenuResponseDoc
  - `code` integer: Code is the HTTP status code or a custom code used to indicate the result of the request @example 200
  - `data` McdonaldsRestaurantMenuResponse
    - `count` integer
    - `currency` string
    - `fetched_at` string
    - `items` McdonaldsRestaurantMenuItem[]
      - `choices` McdonaldsRestaurantMenuChoice[]: Choices lists this item's customizable components McDonald's publishes a curated substitute/add-on list for -- e.g. a meal's drink upgrade options, or a dip-able item's sauce choices -- with the live eat-in/pickup price delta for each real alternative. Present only when the upstream payload exposed at least one such choice for this item; see the package doc comment for how these are derived and the deliberate fail-closed rule behind what gets left out (in particular, plain entree/side substitution is not exposed at all -- McDonald's does not publish a curated candidate list for it, only for upgrade/add-on style choices).
        - `options` McdonaldsRestaurantMenuChoiceOption[]
          - `item_id` string
          - `name` string
          - `price_delta` number: PriceDelta is the additional eat-in/pickup cost of choosing this option instead of what's already included: 0 for a same-priced swap, negative for a cheaper one, and equal to the option's own full price for an add-on choice (nothing is included to offset against).
      - `delivery_price` number
      - `eat_in_price` number
      - `family_group` string: FamilyGroup is McDonald's own internal product classification (e.g. REGULAR_ENTREE, DESSERT) -- not the same category list /mcdonalds/categories returns, and not always present.
      - `image_url` string
      - `item_id` string
      - `name` string
      - `pickup_price` number
    - `source_url` string
    - `store_id` string
  - `msg` unknown

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `429`: Too Many Requests
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/afac9b012a27?raw)
