---
title: "Get one Pizza Hut restaurant's full priced menu"
method: GET
path: "/pizzahut/menu"
tags: ["Pizza Hut"]
---

# Get one Pizza Hut restaurant's full priced menu

`GET /pizzahut/menu`

## Request

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

Returns one restaurant's full menu grouped into categories (e.g. "Pizza", "Wings", "Deals"). Every entry is a product, a bundle (a deal or combo), or a standalone priced variant -- type tells callers which -- and carries a price in USD cents plus a decimal dollar value, and an image when the upstream publishes one. A product item also lists variants: every other priced size/crust/style option beyond its default (e.g. a pizza's Personal Pan through Large Original Stuffed Crust). Prices reflect this specific restaurant and order channel, not a national default. channel selects which order channel the menu is priced for (web ordering by default); prices can genuinely differ by channel (e.g. a delivery-marketplace channel vs. web). Some restaurants also carry products with no category at all (e.g. individual dip cup flavors); these are returned separately as uncategorized_items rather than silently dropped.

## Query parameters

- `store_number` string, required
- `channel` 'WEB' | 'MOBILE' | 'POS' | 'KIOSK' | 'DOORDASH' | 'UBEREATS' | 'GRUBHUB' | 'IOS' | 'ANDROID' | 'DELIVEROO' | 'JUST_EAT' | 'CALL_CENTER'

## Headers

- `x-api-key` string, required

## Response `200`

OK

- PizzahutMenuResponseDoc
  - `code` integer: Code is the HTTP status code or a custom code used to indicate the result of the request @example 200
  - `data` PizzahutMenuResponse
    - `categories` PizzahutMenuCategory[]
      - `category_code` string
      - `description` string
      - `items` PizzahutMenuItem[]
        - `available` boolean: Available is false when this item (or, for a product, every one of its variants at once) is currently blacked out -- a real, live-confirmed "temporarily unavailable"/"sold out" signal (a dessert item was found blacked out at a real store, 2026-09-06), distinct from an item genuinely being removed from the menu (which simply would not appear here at all). Check a product's own Variants[].Available too -- a product itself can be orderable while one specific size/style variant is blacked out, and vice versa.
        - `code` string
        - `description` string
        - `image_url` string
        - `name` string
        - `price` PizzahutMoney
          - `amount` number
          - `amount_cents` integer
          - `currency_code` string
        - `type` string
        - `variant_code` string: VariantCode is the specific priced variant this item's Price reflects (present for type=product, whose price comes from its default variant).
        - `variants` PizzahutMenuVariant[]: Variants lists every other priced size/crust/style variant this product item offers beyond its default (type=product only). Empty when the product has no additional variants beyond the default, or for bundle/variant items.
          - `available` boolean: Available is false when this specific variant is currently blacked out (temporarily unavailable) -- confirmed live 2026-09-06 that this genuinely varies independently per variant, not just per product.
          - `name` string
          - `price` PizzahutMoney
            - `amount` number
            - `amount_cents` integer
            - `currency_code` string
          - `variant_code` string
      - `name` string
    - `channel` string
    - `currency` string
    - `fetched_at` string
    - `item_count` integer: ItemCount counts only items reachable through Categories, matching this field's original meaning -- it does not include UncategorizedItems.
    - `menu_id` string
    - `source_url` string
    - `store_number` string
    - `uncategorized_items` PizzahutMenuItem[]: UncategorizedItems lists real, separately-priced products and bundles this restaurant's menu carries that are not linked to any category -- confirmed live 2026-09-06 (coverage-expansion round 2): Pizza Hut's `Menu.products`/`Menu.bundles` support a `categorized: false` filter, and at least one store sampled had 9 such products (e.g. a $0.99 "Ranch Dip Cup", "Garlic Dip Cup") that Categories' own category walk never surfaces at all -- a real gap in the prior category-walk-only approach, not a parser omission. A platform-wide placeholder product named "Reserved" (price $0.00) appears in this list at every store sampled; it is included as upstream returns it rather than filtered, since this repo does not invent filtering heuristics without a confirmed upstream signal to key on. Empty when every product/bundle is reachable through Categories (no uncategorized bundle has been observed on any store sampled).
      - `available` boolean: Available is false when this item (or, for a product, every one of its variants at once) is currently blacked out -- a real, live-confirmed "temporarily unavailable"/"sold out" signal (a dessert item was found blacked out at a real store, 2026-09-06), distinct from an item genuinely being removed from the menu (which simply would not appear here at all). Check a product's own Variants[].Available too -- a product itself can be orderable while one specific size/style variant is blacked out, and vice versa.
      - `code` string
      - `description` string
      - `image_url` string
      - `name` string
      - `price` PizzahutMoney
        - `amount` number
        - `amount_cents` integer
        - `currency_code` string
      - `type` string
      - `variant_code` string: VariantCode is the specific priced variant this item's Price reflects (present for type=product, whose price comes from its default variant).
      - `variants` PizzahutMenuVariant[]: Variants lists every other priced size/crust/style variant this product item offers beyond its default (type=product only). Empty when the product has no additional variants beyond the default, or for bundle/variant items.
        - `available` boolean: Available is false when this specific variant is currently blacked out (temporarily unavailable) -- confirmed live 2026-09-06 that this genuinely varies independently per variant, not just per product.
        - `name` string
        - `price` PizzahutMoney
          - `amount` number
          - `amount_cents` integer
          - `currency_code` string
        - `variant_code` 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)
