Zomato Reviews Scraper โ No Login, Owner Replies & Dish Tags
Pricing
from $1.50 / 1,000 reviews
Zomato Reviews Scraper โ No Login, Owner Replies & Dish Tags
Scrape Zomato restaurant reviews by restaurant link or id โ no login. Star rating and label, dining vs delivery, full text, date, likes, owner replies, comments, photos, and liked / disliked dish tags. Newest, oldest, highest, lowest or combined coverage.
Pricing
from $1.50 / 1,000 reviews
Rating
0.0
(0)
Developer
Yugenox Corp
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Zomato Reviews Scraper
Scrape Zomato restaurant reviews from any restaurant link โ no Zomato account, no login, no cookies. Each review comes back as one clean row: star rating and label, dining or delivery, the full review text, the date, likes, the restaurant's reply, comments, photos, and the dishes the reviewer liked or disliked.
Works for every Zomato city โ Delhi NCR, Mumbai, Bangalore, Pune, Hyderabad, Chennai, Kolkata, and the rest.
What you get
| Field | Example |
|---|---|
restaurantName, restaurantId, restaurantUrl, city, locality | My Bar Headquarters ยท 311057 ยท New Delhi ยท Connaught Place |
rating / ratingText | 5 / "Excellent" |
reviewType / experience | DINING or DELIVERY / dining_order, o2_delivery |
reviewText | Full text, line breaks kept, no HTML |
date / dateIsApproximate / dateText | 2026-09-18 / true / "6 days ago" |
likeCount, commentCount | 3, 1 |
ownerReplies[] | { text, date, dateText, repliedBy } โ the restaurant's public reply |
comments[] | { text, date, dateText } |
photos[] | { url, thumbUrl } |
positiveTags[] / negativeTags[] | ["pizza yummy", "sitting arrangements are nice"] / ["dimsum was not good"] |
reviewId, reviewUrl | 515830205 ยท https://www.zoma.to/eDwRKZn |
sortSource, filterSource, scrapedAt | which list the review came from, and when |
Reviewer names and profiles are not included by default. Turn on Reviewer details if you need them.
Sample row
{"dataType": "review","restaurantId": 311057,"restaurantName": "My Bar Headquarters","restaurantUrl": "https://www.zomato.com/ncr/my-bar-headquarters-connaught-place-new-delhi","city": "New Delhi","locality": "Connaught Place, New Delhi","reviewId": 35005622,"reviewUrl": "https://www.zoma.to/xPegpZ","rating": 3,"ratingText": "Average","reviewType": "DINING","experience": "dining","reviewText": "food: average food and drinks. great hookah flavors. palatable food.\n\nambience: modern n chic decor and pumped with great music.\n\nservice: good.","date": "2018-05-01","dateIsApproximate": false,"dateText": "May 01, 2018","likeCount": 0,"commentCount": 1,"ownerReplies": [{"text": "Thank you for you valuable feedback. We are glad to hear that you had a good time at My Bar. We hope you visit again in the future :)\n\nRegards\nTeam My Bar","dateText": "May 02, 2018","repliedBy": "My Bar Headquarters","date": "2018-05-02"}],"comments": [],"photos": [{"url": "https://b.zmtcdn.com/data/reviews_photos/dd7/221636334ee4d3347343d037c9869dd7_1568994908.jpg","thumbUrl": "https://b.zmtcdn.com/data/reviews_photos/dd7/221636334ee4d3347343d037c9869dd7_1568994908.jpg?fit=around%7C200%3A200&crop=200%3A200%3B%2A%2C%2A"}],"positiveTags": ["courteous staff", "live music"],"negativeTags": ["white sauce pasta", "expensive beer"],"sortSource": "lowest","filterSource": "all","scrapedAt": "2026-09-24T07:53:36.226Z"}
How to use
- Paste one or more restaurant links โ any tab works: the overview,
/info,/order,/reviewsor/photos, azoma.toshare link, or a review link. Restaurant ids (e.g.311057) work too. - Pick how many reviews per restaurant, the sort (newest, oldest, highest or lowest rated, or max coverage) and the review type (all, dining only, delivery only).
- Run. Reviews stream into the dataset as they are collected; export to JSON, CSV, Excel or via API.
You can also paste a city, area or collection listing (e.g. https://www.zomato.com/bangalore/indiranagar-restaurants)
and the scraper takes the top restaurants from it (10 by default โ see Restaurants per listing link).
Calling it from code? The usual names work as aliases: url / urls / restaurantUrls for startUrls, restaurantIds /
resId for resIds, maxResults / limit for maxItems, maxReviews for maxReviewsPerRestaurant, sortBy for sort
(latest, top, worst, all are understood), type for reviewType (dine-in, online), since / newerThan for
sinceDate. Links can also be one comma- or newline-separated string.
For large restaurant lists (whole cities, phones, menus), use the companion Zomato Restaurants Scraper and feed its
resId column into Restaurant ids.
Input example
{"startUrls": ["https://www.zomato.com/ncr/my-bar-headquarters-connaught-place-new-delhi","https://www.zomato.com/mumbai/jumboking-burgers-1-matunga-east/order"],"maxReviewsPerRestaurant": 200,"sort": "newest","reviewType": "all","includeOwnerReplies": true}
Use cases
- Reputation monitoring โ run daily or weekly with Reviews newer than = "7 days" and Newest first: the scraper stops as soon as it reaches older reviews, so each run costs a few cents.
- Menu and dish analytics โ
positiveTags/negativeTagsname the exact dishes and aspects diners loved or complained about. - Response-rate audits โ
ownerRepliesshows which reviews a restaurant (or a competitor) answers, how fast, and how. - Dining vs delivery quality โ
reviewTypesplits in-restaurant experience from delivery orders. - Sentiment and NLP datasets โ clean text with a 1โ5 label, across cities and cuisines.
- Competitor benchmarking โ collect the same window of reviews for every restaurant on a street or in a chain.
How many reviews can I get?
Zomato shows visitors who are not logged in a limited window of each review list:
- One sort order (newest, oldest, highest or lowest): up to ~500 reviews reliably, and up to ~1,000 when Zomato answers the larger pages in time (it did in all our test runs).
- Max coverage combines the four orders, plus the dining-only and delivery-only lists, and removes duplicates. When the newest-first and oldest-first windows meet, the restaurant is complete โ every review Zomato shows was collected โ and the scraper moves on. That is the case for most restaurants with up to ~2,000 reviews. For very busy restaurants, measured examples: 2,923 unique reviews for a Delhi restaurant listing 6,430, and 2,793 for a Bangalore restaurant listing 21,542 (the newest ~1,000, the oldest ~1,000, and the lowest-rated ones in between).
Zomato's own review count sometimes includes reviews it no longer displays (one Pune restaurant says 1,979 but shows 1,073 โ all of which the scraper collects), so "complete" can be below the number on the page.
Every run saves a free SUMMARY record in its key-value store with, for each restaurant, the number of reviews on
Zomato, the number collected, coverage (complete / partial), and how each list ended โ so you always know how complete your data is. The run's status
message says so too when a restaurant has more reviews than Zomato shows.
Dates
Zomato displays recent reviews as "5 hours ago", "12 days ago" or "7 months ago", and older ones as "May 07, 2019".
The scraper turns every one into a calendar date (date, YYYY-MM-DD):
- exact dates and "hours / days ago" are accurate to the day;
- "N months ago" is estimated to within a few weeks (using the order in which Zomato issued the reviews) and flagged
with
dateIsApproximate: true. The original text is always kept indateText.
Pricing
Pay per result: you pay for each review saved to the dataset, plus a tiny fixed fee when a run starts. Duplicates (the same review found in two sort orders) are never saved twice, and skipped reviews (older than your date, or rating-only when you ask for text only) are never charged. The optional restaurant summary row counts as one result. Blocked requests, retries, bad links and restaurants that are not found are free โ a run that finds nothing costs only the start fee. Set a spending limit on the run and the scraper stops cleanly when it is reached.
FAQ
Do I need a Zomato account or cookies? No. Nothing to log in, nothing to refresh.
Is it legal to scrape Zomato? This scraper collects only public data โ the restaurant pages and reviews that Zomato shows to any visitor who is not logged in. Reviews are written by people, and with Reviewer details turned on a row can also include a reviewer's public Zomato name and profile link, which counts as personal data. If you collect it, make sure you have a legitimate reason and follow the privacy rules that apply to you (GDPR, PIPEDA, CCPA, India's DPDP Act) and Zomato's terms. If you are unsure, check with a lawyer. More background: Is web scraping legal?
Does it access any private data? No. The scraper never logs in and uses no account, cookie or password โ it reads the same public pages anyone can open without signing in. It cannot see private profiles, orders, phone numbers, e-mail addresses or anything else behind Zomato's login. Reviewer names and profile links are left out entirely unless you turn on Reviewer details.
Which proxy should I use? The default (Apify datacenter proxy) works and is the cheapest. If Zomato ever starts blocking it, the scraper switches to residential India proxies automatically.
A link was skipped as "not found". The restaurant page no longer exists on Zomato (closed or renamed). Open the link in a browser to check; the rest of the run continues normally.
Can a run fail? It is built not to. Blocked or slow requests are retried on fresh IPs with backoff, then on residential proxies; a run that hits its time limit or your spending limit stops early, keeps every review saved so far, finishes as Succeeded and says why in its status message ("Partial โ โฆ"). Bad links or an empty input end with 0 reviews and a hint, not an error. You only ever pay for rows in the dataset (plus the small start fee).
Why are there fewer reviews than the restaurant's rating count? Zomato's rating count (e.g. "6,861 Dining Reviews")
includes ratings that never appear in the review list. reviewsOnZomato in the SUMMARY is the number of reviews in the list.
Some reviews have no text. Those are rating-only reviews (common for delivery orders): reviewText is null but the
rating, date and type are there. Turn on Only reviews with text to skip them โ skipped reviews are not charged.
Can I get reviewer names? Yes โ turn on Reviewer details. It is off by default because most analyses don't need personal details.
How fast is it? About 100 reviews every 5โ7 seconds per restaurant, with 5 restaurants processed in parallel by default (up to 10). A 20-review check of one restaurant finishes in a few seconds.