---
title: "Get one Swiggy restaurant's menu with prices"
method: GET
path: "/swiggy/restaurant/menu"
tags: ["Swiggy"]
---

# Get one Swiggy restaurant's menu with prices

`GET /swiggy/restaurant/menu`

## Request

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

Returns one restaurant's full menu grouped into categories, plus its restaurant summary. Every item carries a name, description, category, price, discounted_price when currently discounted, veg/non-veg flag, stock status, an image, and Swiggy's own per-dish rating and review count where it carries one. A category nested under a parent group on the live site (e.g. "Whopper" under "Burgers, Wraps & Tacos") is flattened to one level: its title is the parent's, with subcategory set to its own name. The response also carries the restaurant's current promotions in offers, the same block /swiggy/restaurant returns.

## Query parameters

- `restaurant_id` string, required
- `latitude` number, required
- `longitude` number, required

## Headers

- `x-api-key` string, required

## Response `200`

OK

- SwiggyMenuResponseDoc
  - `code` integer: Code is the HTTP status code or a custom code used to indicate the result of the request @example 200
  - `data` SwiggyMenuResponse
    - `categories` SwiggyMenuCategory[]
      - `items` SwiggyMenuItem[]
        - `category` string
        - `description` string
        - `discounted_price` number
        - `id` string
        - `image_url` string
        - `in_stock` boolean
        - `is_veg` boolean
        - `name` string
        - `price` number
        - `rating` number: Rating and TotalRatings are Swiggy's own aggregate score and review count for this individual dish, the same two fields a restaurant carries. Omitted when the dish has no rating yet. Only the headline aggregate is returned -- individual reviews and reviewer identity are out of scope for this platform.
        - `total_ratings` integer
      - `subcategory` string
      - `title` string
    - `offers` SwiggyOffer[]
      - `coupon_code` string
      - `description` string
      - `tag` string
      - `title` string
    - `restaurant` SwiggyRestaurant
      - `address` string
      - `area` string
      - `city` string
      - `cost_for_two` string
      - `cuisines` string[]
      - `delivery_time_minutes` integer
      - `dishes` SwiggyMenuItem[]: Dishes are the menu items that actually matched a /swiggy/search query, carried only by Swiggy's own "Dishes" search tab (tab=dish). Empty on the restaurant tab, on a plain nearby browse, on a collection browse, and on /swiggy/restaurant -- none of those upstream shapes carry per-restaurant dish matches.
        - `category` string
        - `description` string
        - `discounted_price` number
        - `id` string
        - `image_url` string
        - `in_stock` boolean
        - `is_veg` boolean
        - `name` string
        - `price` number
        - `rating` number: Rating and TotalRatings are Swiggy's own aggregate score and review count for this individual dish, the same two fields a restaurant carries. Omitted when the dish has no rating yet. Only the headline aggregate is returned -- individual reviews and reviewer identity are out of scope for this platform.
        - `total_ratings` integer
      - `external_rating` SwiggyExternalRating
        - `count` string
        - `rating` number
        - `source` string
      - `hours_message` string
      - `hours_status` string: HoursStatus/HoursMessage are Swiggy's own live open/close callout for this outlet ("Open now" / "Closes 11:30 pm"); OpeningHours is its weekly schedule. Only the restaurant detail and menu responses carry these -- search and collection listing cards do not, so they are empty on /swiggy/search results.
      - `id` string
      - `image_url` string
      - `is_open` boolean
      - `is_promoted` boolean: IsPromoted reports whether Swiggy itself labels this a promoted (sponsored, paid-placement) result rather than an organic one. Present and true only for those; Swiggy marks none on a plain nearby browse.
      - `latitude` number
      - `locality` string
      - `longitude` number
      - `name` string
      - `offers` SwiggyOffer[]: Offers are the promotions Swiggy shows on this restaurant's own listing card in a search, browse, or collection result -- the headline discount and its condition, its badge, and any separate free-delivery benefit. Absent when the card shows no promotion, and on /swiggy/restaurant and /swiggy/restaurant/menu, whose responses carry the restaurant's fuller offer list at the top level instead.
        - `coupon_code` string
        - `description` string
        - `tag` string
        - `title` string
      - `opening_hours` SwiggyOpeningHours[]
        - `day` string
        - `hours` string
      - `phone` string
      - `postal_code` string
      - `rating` number
      - `rating_count` string
      - `total_ratings` integer
      - `unavailable_message` string: UnavailableMessage is Swiggy's own reason this listed restaurant cannot be ordered from right now ("Currently not taking orders for this location", "Opens next at 5 pm, today", "Temporarily closed for delivery"). Absent for a restaurant that is currently orderable. Note it is not simply the inverse of is_open: a restaurant Swiggy reports as open can still be unavailable for the requested location.
  - `msg` unknown

## Other responses

- `400`: Bad Request
- `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)
