Business

Restaurant Menu JSON Example

Restaurant menu JSON example with categories, items, prices, dietary labels, and availability. Copy-ready for food delivery apps, POS systems, and restaurant APIs.

{
  "restaurantId": "rst_7Kx9mP2nQ4",
  "name": "The Masala House",
  "currency": "INR",
  "lastUpdated": "2025-05-20T08:00:00Z",
  "categories": [
    {
      "id": "cat_starters",
      "name": "Starters",
      "description": "Light bites to begin your meal.",
      "sortOrder": 1,
      "items": [
        {
          "id": "item_001",
          "name": "Paneer Tikka",
          "description": "Grilled cottage cheese with spiced marinade and mint chutney.",
          "price": 299,
          "originalPrice": 349,
          "isVeg": true,
          "isVegan": false,
          "spiceLevel": "medium",
          "allergens": [
            "dairy"
          ],
          "available": true,
          "popular": true,
          "image": "https://cdn.example.com/menu/paneer-tikka.jpg",
          "customizations": [
            {
              "name": "Extra Chutney",
              "additionalPrice": 25
            }
          ]
        },
        {
          "id": "item_002",
          "name": "Chicken Wings",
          "description": "Crispy wings tossed in house sauce.",
          "price": 349,
          "originalPrice": null,
          "isVeg": false,
          "isVegan": false,
          "spiceLevel": "hot",
          "allergens": [
            "gluten"
          ],
          "available": true,
          "popular": false,
          "image": "https://cdn.example.com/menu/chicken-wings.jpg",
          "customizations": []
        }
      ]
    }
  ]
}

Field Reference

categoriesarray<object>requiredMenu sections like Starters, Mains, Desserts. Sort by sortOrder for display.
items[].isVegbooleanrequiredWhether the item is vegetarian. Used to filter the menu and show the green/red dot indicator.
items[].spiceLevelstringoptionalHeat level: mild, medium, hot, very_hot. Helps customers choose dishes.
items[].allergensarray<string>optionalAllergen labels: dairy, gluten, nuts, eggs, soy. Required by food safety regulations in many countries.
items[].availablebooleanrequiredWhether the item is currently available for order. Set false to 86 an item without removing it from the menu.
items[].customizationsarray<object>optionalAdd-ons and modifications the customer can select, each with an additional price.

Variants

Simple MenuFlat menu without categories, ideal for small menus.
Simple Menu
{
  "restaurantId": "rst_001",
  "name": "Quick Bites",
  "currency": "INR",
  "items": [
    {
      "id": "item_001",
      "name": "Vada Pav",
      "price": 30,
      "isVeg": true,
      "available": true
    },
    {
      "id": "item_002",
      "name": "Samosa",
      "price": 20,
      "isVeg": true,
      "available": true
    },
    {
      "id": "item_003",
      "name": "Cold Coffee",
      "price": 80,
      "isVeg": true,
      "available": false
    }
  ]
}

Common Use Cases

  • Food delivery app (Swiggy, Zomato) menu data model
  • Restaurant POS system product catalogue
  • QR code digital menu for table-side ordering
restaurantmenufooddeliveryPOS

Validate or format this JSON

Paste the example above into JSONKit's tools to validate, minify, or explore the structure interactively.

Frequently Asked Questions

Use available: false to mark items that are temporarily out of stock (86'd). Do not remove the item from the menu — the kitchen may have it again later. Show it greyed out with an 'Unavailable' label in the UI.

Create a separate combo category with items that have a components array listing the included dishes. Store the combo price separately from the individual item prices.

Use boolean flags (isVeg, isVegan, isGlutenFree) for first-class dietary attributes, plus an allergens array for specific allergen labels. Boolean flags are faster to filter on than parsing an allergens list.

Related JSON Examples