Zomato Order Menu API
A restaurant's ordering menu: dishes by category with descriptions, veg tags, ratings and the choices each dish offers.
- 1 credit per call
- Failed calls are free
- Updated
- zomato.restaurant.ordermenu
{ "count": 66, "fetched_at": "2026-09-24T08:48:44Z", "res_id": "18365882", "restaurant_name": "Behrouz Biryani", "source_url": "https://www.zomato.com/ncr/behrouz-biryani-connaught-place-new-delhi/order", "categories": [ { "menu_name": "Behrouz Recommends", "items": [ { "name": "Lazeez Bhuna Murgh Biryani (Dum Chicken Biryani)", "rating": 4, "description": "A treasured creation prepared with tender chicken pieces infused in freshly ground, aromatic bhuna spices. Slow-cooked with fragrant basmat…", "id": "ctl_765461364", "image_url": "https://b.zmtcdn.com/data/dish_photos/147/551801f387f35a2825128ae2c0793147.jpeg", "is_veg": false, "dietary_tags": [ "non-veg" ], "service_tags": [ "delivery-enabled" ] }, { "name": "Zaikedaar Paneer Biryani (Paneer Dum Biryani)", "description": "Indulge in the splendour of tender, crumbly paneer, marinated with a blend of exquisite royal spices and layered with aromatic basmati, cra…", "id": "ctl_765461365", "image_url": "https://b.zmtcdn.com/data/dish_photos/bde/6993be17047a8e500c3ec030d54a2bde.jpeg", "is_veg": true, "dietary_tags": [ "veg" ], "service_tags": [ "delivery-enabled" ] } ] }, { "menu_name": "Veg Specials", "items": [ { "name": "Classic Subz-e-Biryani (Veg Dum Biryani - Mild Spicy)", "description": "Fresh subz and the longest-grain basmati rice, dum-pukht for hours with 23 shahi masale. This is Behrouz,s classic recipe - mildly spicy. T…", "id": "ctl_804314444", "image_url": "https://b.zmtcdn.com/data/dish_photos/6b4/ee976aecb31531a2dd42ec007c90a6b4.jpeg", "is_veg": true, "dietary_tags": [ "veg" ], "service_tags": [ "delivery-enabled" ] }, { "name": "Classic Zaikedaar Paneer Biryani (Paneer Dum Biryani - Mild Spicy)", "description": "Narm paneer and the longest-grain basmati rice, dum-pukht for hours with 23 shahi masale. This is Behrouz,s classic recipe - mildly spicy. …", "id": "ctl_804314445", "image_url": "https://b.zmtcdn.com/data/dish_photos/418/fd6addac538129bfcf67c2cd903cf418.jpeg", "is_veg": true, "dietary_tags": [ "veg" ], "service_tags": [ "delivery-enabled" ] } ] } ], "modifiers": [ { "name": "Add your Breads or Rice-", "id": "mg_100435857", "max": 3, "items": [ { "name": "Afreen Basmati Rice (300 gm)", "id": "ctl_569524009", "is_available": true, "is_veg": true, "price_minor": 79 }, { "name": "Lachha Paratha (Pack of 2)", "id": "ctl_569524007", "is_available": true, "is_veg": true, "price_minor": 89 } ] }, { "name": "Choose your Kathi roll", "id": "mg_127486877", "max": 2, "items": [ { "name": "Chicken Tikka Kathi Roll", "id": "ctl_754851845", "is_available": true, "is_veg": false, "price_minor": 259 }, { "name": "Paneer Tikka Kathi Roll", "id": "ctl_754851849", "is_available": true, "is_veg": true, "price_minor": 259 } ] } ]}
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| res_id | string | one of | Another name for restaurant_id, kept for older requests. | |
| restaurant_id | string | one of | The restaurant's numeric Zomato ID. | 18365882 |
| url | string | one of | The restaurant's Zomato order page link, as an alternative to the ID. | |
| limit | integer | no | The most dishes to return. | 500 |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| categories | array | The menu's categories. | 3 records |
| categories[].items | array | The results. | 2 records |
| categories[].items[].description | string | The dish's description. | A treasured creation prepared with tender chicken pieces infuse… |
| categories[].items[].dietary_tags | array | Diet labels on the dish, such as non-veg. | non-veg |
| categories[].items[].id | string | Zomato's ID for the dish. | ctl_765461364 |
| categories[].items[].image_url | string | Link to the dish's photo. | https://b.zmtcdn.com/data/dish_photos/147/551801f387f35a2825128… |
| categories[].items[].is_veg | boolean | Whether the dish is vegetarian. | false |
| categories[].items[].name | string | The dish's name. | Lazeez Bhuna Murgh Biryani (Dum Chicken Biryani) |
| categories[].items[].rating | integer | The dish's rating, out of 5. | 4 |
| categories[].items[].service_tags | array | How the dish can be ordered, such as delivery. | delivery-enabled |
| categories[].menu_name | string | The menu section. | Behrouz Recommends |
| count | integer | How many results this response holds. | 66 |
| fetched_at | string | When this result was collected. | 2026-09-24T08:48:44Z |
| modifiers | array | The choices you can add to the dish. | 3 records |
| modifiers[].id | string | Zomato's ID for the choice group. | mg_100435857 |
| modifiers[].items | array | The results. | 3 records |
| modifiers[].items[].id | string | Zomato's ID for the choice. | ctl_569524009 |
| modifiers[].items[].is_available | boolean | Whether the choice can be ordered now. | true |
| modifiers[].items[].is_veg | boolean | Whether the choice is vegetarian. | true |
| modifiers[].items[].name | string | The choice's name, such as a side or add-on. | Afreen Basmati Rice (300 gm) |
| modifiers[].items[].price_minor | integer | The extra price for the choice, in rupees. | 79 |
| modifiers[].max | integer | The most choices you can pick. | 3 |
| modifiers[].name | string | The name of the city, restaurant, dish or choice. | Add your Breads or Rice- |
| res_id | string | Zomato's ID for the restaurant. | 18365882 |
| restaurant_name | string | The restaurant's name. | Behrouz Biryani |
| source_url | string | The Zomato page this came from. | https://www.zomato.com/ncr/behrouz-biryani-connaught-place-new-… |
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "zomato.restaurant.ordermenu", "input": { "limit": 500, "restaurant_id": "18365882" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zomato.restaurant.ordermenu", "input": { "limit": 500, "restaurant_id": "18365882" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "zomato.restaurant.ordermenu", "input": { "limit": 500, "restaurant_id": "18365882" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
With Upscrape, get the Zomato order menu for restaurant id "18365882". Tell me what it costs before you run it, then show the results as a table.
More from the Zomato API
- Zomato Restaurant API1 credit
- Zomato Reviews API1 credit
- Zomato Restaurants API1 credit
- Zomato Dining Offers API1 credit
- Zomato Delivery Serviceability API1 credit
- Zomato All Restaurants API1 credit
- Zomato Search API1 credit
- Zomato Location Search API1 credit
- Zomato Cities API1 credit
- Zomato Cuisines API1 credit
- Zomato Collections API1 credit
- Zomato Menu Images API1 credit
- Zomato Menu Images API1 credit
Zomato Order Menu API FAQ
The short answers. The docs have the long ones.
How much does the Zomato Order Menu API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send restaurant_id or res_id or url. The input fields below list every option with its type and limits.
Do I need a Zomato login?
No. It reads public Zomato data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds zomato.restaurant.ordermenu, checks its price and runs it with the same credits as the REST API.
Your first Zomato call is free.
Up to 100 free credits to start, no card needed.