Zomato restaurant listings
Restaurants of a Zomato listing for a city (delivery, dining out or nightlife), a locality, a dish or a cuisine, or any zomato.com listing path. Each restaurant: id, name, overall, dining and delivery ratings with review counts, cuisines, cost for two and for one, locality and address, delivery time, serviceable and online-ordering flags, distance, promoted flag, offer, image and link. total is the listing's size; narrow it with locality, dish or cuisine. About 9-12 restaurants per page: pass next_cursor back as cursor (alone) for the next page; null on the last page. Narrow by the site's rating floor (rating_min) and its Pure Veg filter (pure_veg); applied_filters then lists the filters the listing applied, and later pages keep them.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
city | string | Zomato city slug, e.g. ncr (Delhi NCR), mumbai, bangalore, pune, dubai. Give this or path. Example: ncr |
category | delivery | dine_out | nightlife | Listing type for the city (default delivery). |
dish | string | Delivery restaurants serving a dish, as its slug, e.g. biryani, pizza. |
locality | string | Restaurants in a locality, as its slug, e.g. connaught-place-delhi. |
cuisine | string | Restaurants of a cuisine, as its slug, e.g. chinese, north-indian. |
path | string | Any zomato.com listing path or link, e.g. /ncr/delivery/dish-biryani. |
cursor | string | next_cursor from the previous page (then no other parameter is needed). |
rating_min | 3.5 | 4 | 4.5 | 5 | Only restaurants rated at least this: 3.5, 4, 4.5 or 5. |
pure_veg | boolean | true for pure vegetarian restaurants only. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/zomato/v1/restaurants?city=ncr" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/zomato/v1/restaurants",
params={"city": "ncr"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/zomato/v1/restaurants");
url.searchParams.set("city", "ncr");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).