Zomato Reviews
zomato.restaurant.reviews
A restaurant's public reviews, newest first: rating, verdict and text, for dining or delivery.
At a glance
- Endpoint ID
zomato.restaurant.reviews- Price
- 2 credits per call; failed calls are free
- Runs for up to
- 30 seconds
Request
Send the endpoint ID as capability and its fields as input. Set UPSCRAPE_API_KEY to your key first.
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.reviews", "input": { "restaurant_id": "18439027" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zomato.restaurant.reviews", "input": { "restaurant_id": "18439027" }}''')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.reviews", "input": { "restaurant_id": "18439027" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
Input
| 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. | 18439027 |
url |
string | one of | The restaurant's Zomato link, as an alternative to the ID. | |
filter |
string | no | Dining or delivery reviews. | dining · delivery |
limit |
integer | no | The most reviews to return. Zomato serves reviews five at a time. | |
page |
integer | no | Which page of reviews to start from. Pass next_page from the last response to continue. | |
sort |
string | no | Newest first. | newest |
Response
A finished call answers with HTTP 200; the data is in results[0].data, and billing.credits_charged is what it cost. A call still running after the wait answers 202: see jobs and results.
This is results[0].data from a real run:
{ "count": 20, "filter": "dining", "res_id": "18439027", "sort": "newest", "pagination": { "has_more": true, "next_page": 5, "page": 1, "total_pages": 526 }, "reviews": [ { "rating": 5, "experience": "dining_order", "rating_text": "Excellent", "rating_type": "DINING", "restaurant_id": "18439027", "review_id": "523048033", "review_text": "great experience" }, { "rating": 5, "experience": "dining_order", "rating_text": "Excellent", "rating_type": "DINING", "restaurant_id": "18439027", "review_id": "522878366", "review_text": "Awosom serves Dheer" } ]}
Fields
| Field | Type | What it is | Example |
|---|---|---|---|
reviews[].rating |
integer | The rating, out of 5. | 5 |
reviews[].rating_text |
string | The rating as a word, such as Excellent. | Excellent |
reviews[].review_text |
string | The review's text. | great experience |
reviews[].experience |
string | Whether the review is about dining in or delivery. | dining_order |
reviews[].rating_type |
string | Whether the rating is for dining or delivery. | DINING |
reviews[].restaurant_id |
string | Zomato's ID for the restaurant. | 18439027 |
reviews[].review_id |
string | Zomato's ID for the review. | 523048033 |
reviews |
array | The reviews. | 20 records |
count |
integer | How many results this response holds. | 20 |
filter |
string | Which reviews were requested, dining or delivery. | dining |
pagination |
object | How to get more pages. | 4 fields |
pagination.has_more |
boolean | Whether more results follow this page. | true |
pagination.next_page |
integer | The page number to request next. | 5 |
pagination.page |
integer | The page this response holds. | 1 |
pagination.total_pages |
integer | How many pages of results there are. | 526 |
res_id |
string | Zomato's ID for the restaurant. | 18439027 |
sort |
string | The order of the reviews, such as newest first. | newest |
If a call fails
A failed call costs nothing. The response carries an error.code you can branch on; Errors and retries lists every code and which ones to retry.
Other Zomato endpoints
zomato.citiesCitieszomato.collectionsCollectionszomato.cuisinesCuisineszomato.location.searchLocation searchzomato.restaurant.deliveryDelivery serviceabilityzomato.restaurant.getRestaurantzomato.restaurant.menuMenu imageszomato.restaurant.menu_imagesMenu imageszomato.restaurant.offersDining offerszomato.restaurant.ordermenuOrder menuzomato.restaurants.allAll restaurantszomato.restaurants.listRestaurantszomato.searchSearch
Something missing or unclear? Ask the team that builds the Zomato endpoints.