Zomato Delivery Serviceability API
Whether a restaurant delivers to an address right now, with the delivery time and minimum order.
- 1 credit per call
- Failed calls are free
- Updated
- zomato.restaurant.delivery
{ "delivery_available": true, "eta_minutes": 35, "online_ordering": true, "res_id": "18365882", "serviceable": true, "source_url": "https://www.zomato.com/ncr/behrouz-biryani-connaught-place-new-delhi/order", "status_reason_code": 2, "tracking_available": true, "location": { "city_id": "1", "city_name": "Delhi NCR", "delivery_subzone_id": "514", "entity_name": "Ywca, Ashoka Rd, Hanuman Road Area, Connaught Place, New Delhi", "entity_type": "subzone", "latitude": 28.625789, "longitude": 77.210276 }, "minimum_order": { "text": "₹ 0", "amount": 0, "currency": "INR" }}
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| latitude | number | yes | Latitude of the delivery address. | 28.625789 |
| longitude | number | yes | Longitude of the delivery address. | 77.210276 |
| 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 |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| serviceable | boolean | Whether Zomato delivers to the location. | true |
| eta_minutes | integer | Zomato's delivery time estimate, in minutes. | 35 |
| minimum_order | object | The smallest order the restaurant accepts. | 3 fields |
| minimum_order.text | string | The amount as Zomato shows it. | ₹ 0 |
| minimum_order.amount | integer | The amount. | 0 |
| minimum_order.currency | string | The currency. | INR |
| online_ordering | boolean | Whether the restaurant takes online orders. | true |
| tracking_available | boolean | Whether orders can be tracked. | true |
| location | object | The restaurant's location. | 7 fields |
| location.entity_name | string | The place's name. | Ywca, Ashoka Rd, Hanuman Road Area, Connaught Place, New Delhi |
| location.city_id | string | Zomato's ID for the city. | 1 |
| location.city_name | string | The city. | Delhi NCR |
| location.delivery_subzone_id | string | 514 | |
| location.entity_type | string | The kind of place, such as a landmark or locality. | subzone |
| location.latitude | number | Latitude. | 28.63 |
| location.longitude | number | Longitude. | 77.21 |
| delivery_available | boolean | Whether delivery is available. | true |
| res_id | string | Zomato's ID for the restaurant. | 18365882 |
| source_url | string | The Zomato page this came from. | https://www.zomato.com/ncr/behrouz-biryani-connaught-place-new-… |
| status_reason_code | integer | 2 |
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.delivery", "input": { "latitude": 28.625789, "longitude": 77.210276, "restaurant_id": "18365882" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zomato.restaurant.delivery", "input": { "latitude": 28.625789, "longitude": 77.210276, "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.delivery", "input": { "latitude": 28.625789, "longitude": 77.210276, "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, check whether Behrouz Biryani in Connaught Place (Zomato 18365882) delivers to 28.6258, 77.2103 right now, and how long it takes.
More from the Zomato API
- Zomato Restaurant API1 credit
- Zomato Reviews API1 credit
- Zomato Restaurants API1 credit
- Zomato Dining Offers API1 credit
- Zomato Order Menu 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 Delivery Serviceability API FAQ
The short answers. The docs have the long ones.
How much does the Zomato Delivery Serviceability 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 latitude and longitude. 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.delivery, 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.