Swiggy API endpoint
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.
/swiggy/restaurant/menuQuery parameters:
restaurant_id (required) — restaurant id, from /swiggy/search's id field, e.g. 5938.latitude (required) — caller latitude. Required by Swiggy's own menu API, e.g. 12.9716.longitude (required) — caller longitude. Required by Swiggy's own menu API, e.g. 77.5946.Response includes restaurant and offers[] (both the same shape as /swiggy/restaurant) and categories[]. Each category has title, an optional subcategory (set only when the live site nests this group under a parent category, e.g. Swiggy's own "Whopper" group under "Burgers, Wraps & Tacos" — flattened here to one level, with title carrying the parent's name and subcategory the nested group's own name), and items[]. Each item has id, name, description, category, price, discounted_price (present only when the item currently has a lower Swiggy-set price), is_veg, in_stock, image_url, and rating plus total_ratings where Swiggy carries a per-dish aggregate score and review count for that item (aggregate only; individual reviews and reviewer identity are out of scope for this endpoint).
| Field | Filled in, of 7 checked | Values in the sample |
|---|---|---|
| day | 7 | “Monday” and 6 other values |
| hours | 7 | Midnight - 5.00AM, 11.00AM - Mi… in all 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| restaurant_id | string | Yes | Restaurant id, from /swiggy/search's id field | 5938 | |
| latitude | number | Yes | Caller latitude (required by Swiggy's own menu API) | 12.9716 | |
| longitude | number | Yes | Caller longitude (required by Swiggy's own menu API) | 77.5946 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/swiggy/restaurant/menu?restaurant_id=5938&latitude=12.9716&longitude=77.5946" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"restaurant": {
"id": "5938",
"name": "Burger King",
"city": "Bangalore",
"cuisines": [
"Burgers",
"American"
],
"cost_for_two": "₹350 for two",
"rating": 4.1,
"total_ratings": 41000,
"is_open": true,
"hours_status": "Open now"
},
"offers": [
{
"title": "FLAT 50% OFF",
"description": "ON SELECT ITEMS",
"tag": "FLAT DEAL"
}
],
"categories": [
{
"title": "Burgers, Wraps & Tacos",
"subcategory": "Whopper",
"items": [
{
"id": "112372940",
"name": "Crispy Veg Double Patty Burger",
"category": "Burgers, Wraps & Tacos",
"price": 99,
"discounted_price": 79,
"is_veg": true,
"in_stock": true,
"image_url": "https://media-assets.swiggy.com/swiggy/image/upload/fl_lossy,f_auto,q_auto/FOOD_CATALOG/IMAGES/CMS/2025/11/20/5965c1c3-c079-41d7-a35e-5394b0822f6d_cb654bd9-dccd-4493-85a0-dc6cf1007653.jpg"
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/swiggy.menuResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | swiggy.MenuResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].items | array | No | MenuItem record, 11 fields: category, description, discounted_price, id, image_url, in_stock, is_veg, name, price, rating, total_ratings. Described under Swiggy Search API. | |||
| data.categories[].subcategory | string | No | ||||
| data.categories[].title | string | No | ||||
| data.offers | array | No | Offer record, 4 fields: coupon_code, description, tag, title. Described under Swiggy Restaurant API. | |||
| data.restaurant | swiggy.Restaurant | No | Restaurant record, 46 fields: address, area, city, cost_for_two, cuisines, delivery_time_minutes, dishes, external_rating, hours_message, hours_status, id, image_url and 14 more. Described under Swiggy Search API. | |||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/swiggy/restaurant/menu?restaurant_id=5938&latitude=12.9716&longitude=77.5946" \
-H "x-api-key: $CRAWLORA_API_KEY"