Zomato Search API
Search Zomato restaurants by name or dish in a city or near a point.
- 1 credit per call
- Failed calls are free
- Updated
- zomato.search
{ "count": 1, "fetched_at": "2026-09-24T08:48:44Z", "latitude": 28.625789, "longitude": 77.210276, "search_context": "dining", "source_url": "https://www.zomato.com/ncr/restaurants/biryani", "pagination": { "has_more": true, "page": 1, "total_results": 2981 }, "results": [ { "name": "Local", "aggregate_rating": 4.2, "cuisine_string": "North Indian, Continental, Mexican, Italian, Oriental, Biryani, Beverages", "distance_km": 1.2, "fetched_at": "2026-09-24T08:48:44Z", "locality": "Connaught Place, New Delhi", "rank": 1, "res_id": "18382360", "restaurant_id": "18382360", "slug": "local-connaught-place-new-delhi", "source_url": "https://www.zomato.com/ncr/restaurants/biryani", "sponsored": true, "url": "https://www.zomato.com/ncr/local-connaught-place-new-delhi/info", "cost_for_two": { "text": "₹2,800 for two", "amount": 2800, "currency": "INR" }, "offer": { "title": "Flat", "discount_text": "20% OFF", "is_gold": true }, "cuisines": [ "North Indian", "Continental" ] } ]}
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| query | string | yes | Search query. | biryani |
| latitude | number | one of | Latitude in decimal degrees. From -90 to 90. | |
| longitude | number | one of | Longitude in decimal degrees. From -180 to 180. | |
| city | string | no | City name. Default: ncr. |
|
| cursor | string | no | ||
| limit | integer | no | Maximum number of results to return. From 1 to 100. Default: 20. |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| results[].name | string | The name of the city, restaurant, dish or choice. | Local |
| results[].offer.title | string | The collection's title. | Flat |
| results[].cost_for_two.text | string | The amount as Zomato shows it. | ₹2,800 for two |
| results[].aggregate_rating | number | The restaurant's overall rating, out of 5. | 4.2 |
| results[].cost_for_two | object | Zomato's price guide for two people. | 3 fields |
| results[].cost_for_two.amount | integer | The amount. | 2800 |
| results[].cost_for_two.currency | string | The currency. | INR |
| results[].cuisine_string | string | The cuisines as one line. | North Indian, Continental, Mexican, Italian, Oriental, Biryani,… |
| results[].cuisines | array | The restaurant's cuisines. | North Indian, Continental, Mexican |
| results[].distance_km | number | Distance from the search location, in kilometres. | 1.2 |
| results[].fetched_at | string | When this result was collected. | 2026-09-24T08:48:44Z |
| results[].locality | string | The restaurant's locality. | Connaught Place, New Delhi |
| results[].offer | object | The restaurant's offer. | 3 fields |
| results[].offer.discount_text | string | The discount as Zomato shows it. | 20% OFF |
| results[].offer.is_gold | boolean | Whether the restaurant offers Zomato Gold benefits. | true |
| results[].rank | integer | The restaurant's place in the results. | 1 |
| results[].res_id | string | Zomato's ID for the restaurant. | 18382360 |
| results[].restaurant_id | string | Zomato's ID for the restaurant. | 18382360 |
| results[].slug | string | The name in the page's address. | local-connaught-place-new-delhi |
| results[].source_url | string | The Zomato page this came from. | https://www.zomato.com/ncr/restaurants/biryani |
| results[].sponsored | boolean | Whether the result is a paid placement. | true |
| results[].url | string | The page on Zomato. | https://www.zomato.com/ncr/local-connaught-place-new-delhi/info |
| count | integer | How many results this response holds. | 1 |
| fetched_at | string | When this result was collected. | 2026-09-24T08:48:44Z |
| latitude | number | Latitude. | 28.63 |
| longitude | number | Longitude. | 77.21 |
| pagination | object | How to get more pages. | 3 fields |
| pagination.has_more | boolean | Whether more results follow this page. | true |
| pagination.page | integer | The page this response holds. | 1 |
| pagination.total_results | integer | How many restaurants match in all. | 2981 |
| results | array | The results. | 1 records |
| search_context | string | Whether the search was for dining or delivery. | dining |
| source_url | string | The Zomato page this came from. | https://www.zomato.com/ncr/restaurants/biryani |
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.search", "input": { "query": "biryani" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zomato.search", "input": { "query": "biryani" }}''')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.search", "input": { "query": "biryani" }}),});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 search for query "biryani". 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 Order Menu API1 credit
- Zomato Delivery Serviceability API1 credit
- Zomato All Restaurants 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 Search API FAQ
The short answers. The docs have the long ones.
How much does the Zomato Search 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 query. 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.search, 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.