---
title: "Get one Shake Shack location's full menu"
method: GET
path: "/shakeshack/menu"
tags: ["Shake Shack"]
---

# Get one Shake Shack location's full menu

`GET /shakeshack/menu`

## Request

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

Returns one Shake Shack location's full menu as a category tree: every category and its products, with name, description, base calories, allergens, a promotional/dietary badge when published (e.g. "LIMITED TIME ONLY", "VEGETARIAN"), image, and a full customization tree (size, additions, removals, allergen flags), each choice carrying its own price and calorie delta. location_id comes from GET /shakeshack/nearby. Many items, most notably burgers, price entirely through a required size selection rather than a base price, so price is commonly 0 for those items -- the real price lives on the size modifier's own choices.

## Query parameters

- `location_id` integer, required

## Headers

- `x-api-key` string, required

## Response `200`

OK

- ShakeshackMenuResponseDoc
  - `code` integer: Code is the HTTP status code or a custom code used to indicate the result of the request @example 200
  - `data` ShakeshackMenuResponse
    - `categories` ShakeshackMenuCategory[]
      - `name` string
      - `products` ShakeshackMenuProduct[]
        - `allergens` string: Allergens is upstream's own comma-separated free text, passed through as published rather than split into a fixed list.
        - `badge` string: Badge is a short promotional/dietary label Shake Shack publishes for some items, e.g. "LIMITED TIME ONLY", "VEGETARIAN".
        - `base_calories` integer: BaseCalories is 0 when upstream reports none.
        - `chain_product_id` integer
        - `description` string
        - `image_url` string
        - `modifiers` ShakeshackModifierGroup[]
          - `chain_modifier_id` integer
          - `choices` ShakeshackModifierChoice[]
            - `calorie_delta` integer
            - `chain_option_id` integer
            - `groups` ShakeshackModifierGroup[]
            - `is_default` boolean
            - `name` string
            - `option_id` integer
            - `price` number
          - `group_id` integer
          - `name` string
          - `type` string
        - `name` string
        - `price` number: Price is this item's base price. Many items price entirely through a required size/flavor modifier rather than a base price, so 0 is common here -- not a parsing gap (same shape as this repo's other Olo-backed menus, e.g. Jimmy John's).
    - `category_count` integer
    - `fetched_at` string
    - `location_id` integer
    - `product_count` integer
    - `source_url` 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/0497899e2016?raw)
