
Zomato Reviews Scraper
Pricing
from $1.99 / 1,000 reviews

Zomato Reviews Scraper
Scrape restaurant reviews from Zomato.com
0.0 (0)
Pricing
from $1.99 / 1,000 reviews
0
1
1
Last modified
a day ago
Note: This scraper extracts restaurant reviews and information from Zomato.com
Input Parameters
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
restaurantUrls | Array | Yes | - | List of Zomato restaurant URLs to scrape reviews from |
maxReviewsPerRestaurant | Integer | No | 10 | Maximum number of reviews to scrape per restaurant |
headless | Boolean | No | false | Run browser in headless mode (no visible UI) |
cookies | Array | No | null | Optional: Authentication cookies from a logged-in Zomato session. If not provided, will try to load from COOKIES.json file. See Cookie Configuration below |
Input Schema Example
{"restaurantUrls": ["https://www.zomato.com/chennai/pizza-hut-nungambakkam","https://www.zomato.com/chennai/kfc-nungambakkam"],"maxReviewsPerRestaurant": 10,"headless": false}
Cookie Configuration
For accessing protected or authenticated content, you can provide cookies in two ways:
Via Input Parameter (Recommended for Apify Platform)
Add the cookies
array to your input JSON:
{"restaurantUrls": ["https://www.zomato.com/chennai/pizza-hut-nungambakkam"],"maxReviewsPerRestaurant": 10,"cookies": [{"name": "csrf","value": "your_csrf_token_here","domain": ".zomato.com","path": "/","secure": true,"httpOnly": false,"expirationDate": 1760425879},{"name": "zat","value": "your_auth_token_here","domain": ".zomato.com","path": "/","secure": true,"httpOnly": true,"expirationDate": 1791875478}]}
Required cookie properties:
name
(string): Cookie namevalue
(string): Cookie valuedomain
(string): Cookie domain (e.g., ".zomato.com")
Optional cookie properties:
path
(string): Cookie path (default: "/")expirationDate
(number): Unix timestamp in secondshttpOnly
(boolean): HTTP only flagsecure
(boolean): Secure flagsameSite
(string): SameSite attribute
How to get cookies:
Method 1: Using Chrome Extension (Easiest):
- Install the Get cookies.txt LOCALLY extension
- Log in to Zomato in your browser
- Visit any Zomato page (e.g., https://www.zomato.com)
- Click the extension icon and select "Export As → JSON"
- Copy the JSON array and use it directly in the
cookies
input parameter or save asCOOKIES.json
Method 2: Manual Extraction:
- Log in to Zomato in your browser
- Open Developer Tools (F12)
- Go to Application/Storage → Cookies → https://www.zomato.com
- Copy the cookie values (especially
csrf
,zat
,PHPSESSID
,_abck
) - Format them according to the schema above
Important cookies for authentication:
csrf
- CSRF protection token (required for API requests)zat
- Zomato authentication token (primary auth)PHPSESSID
- PHP session ID_abck
- Anti-bot cookiezhli
- Login indicator
Note: The scraper automatically:
- Filters out expired cookies
- Extracts fresh cookies from the browser session
- Adds required headers like CSRF token for API requests
Output Schema
The scraper outputs comprehensive review objects extracted from Zomato restaurant pages. Each review contains detailed information about the restaurant, reviewer details, ratings, engagement metrics, and metadata.
Review Fields
Field | Title | Type | Description |
---|---|---|---|
reviewId | Review ID | Integer | Unique identifier for the review |
status | Review Status | String | Status of the review (success, etc.) |
reviewText | Review Text | String | Full text content of the review |
reviewTextShort | Short Review Text | String | Shortened version of the review text |
reviewDate | Review Date | String | Formatted date when review was posted |
experienceType | Experience Type | String | Type of dining experience (dining, delivery, etc.) |
rating | Rating Value | Number | Numeric rating value (1-5 stars) |
ratingLabel | Rating Label | String | Text label for the rating (Poor, Average, Good, etc.) |
ratingColorHex | Rating Color | String | Hex color code for rating display |
ratingColorTheme | Rating Theme | String | Color theme for rating (yellow-400, etc.) |
ratingText | Rating Context | String | Rating context text |
reviewerName | Reviewer Name | String | Name or username of the reviewer |
reviewerId | Reviewer ID | Integer | Unique identifier for the reviewer |
reviewerProfileUrl | Reviewer Profile URL | String | URL to the reviewer's profile |
reviewerProfilePic | Reviewer Profile Picture | String | URL to the reviewer's profile picture |
reviewerFollowersCount | Reviewer Followers | Integer | Number of followers the reviewer has |
reviewerReviewsCount | Reviewer Review Count | Integer | Number of reviews the user has posted |
reviewerIsFollowed | Is Followed | Boolean | Whether the current user follows this reviewer |
positiveTags | Positive Tags | Array | Array of positive sentiment tags |
negativeTags | Negative Tags | Array | Array of negative sentiment tags |
likeCount | Like Count | Integer | Number of likes the review has received |
isLikedByUser | Liked by User | Boolean | Whether the current user liked this review |
commentCount | Comment Count | Integer | Number of comments on this review |
isEditable | Is Editable | Boolean | Whether the review can be edited |
comments | Comments | Array | Array of user comments on the review |
managementComments | Management Comments | Array | Array of management responses to the review |
hasMoreComments | Has More Comments | Boolean | Whether there are more comments to load |
reviewPhotos | Review Photos | Array | Array of photo URLs attached to the review |
externalUrl | External URL | String | External URL if review is shared from another platform |
externalHost | External Host | String | External platform host name |
externalHostText | External Host Text | String | External platform display text |
reviewUrl | Review URL | String | Direct URL to this specific review |
backgroundColorType | Background Color Type | String | Background color type for UI display |
backgroundColorTint | Background Color Tint | String | Background color tint/shade |
restaurantUrl | Restaurant URL | String | URL of the restaurant being reviewed |
resId | Restaurant ID | Integer | Zomato's internal restaurant identifier |
scrapedAt | Scraped At | String | ISO timestamp when the data was scraped |
source | Source | String | Source of the data (zomato) |
Review Example
{"review_id": 196274,"status": "success","message": "","review_url": "https://www.zoma.to/nGxll","review_text": "The food is traditional and decent. Milieu is identically the same as anyother Dindigul Thalapakkati outlet. But. BUT! I had experienced bad customer service not once but twice here (maybe it is my conjecture and i don't unquestionably contradict with anyone else' certainty). The pricing is a bit high too. Nevertheless, it will be a pretty modest place for a family weekend dinner. :)","review_text_short": "","date": "May 12, 2013","experience_type": "dining","rating_value": 3,"rating_label": "Average","rating_color_hex": "#cdd614","rating_color_theme": "yellow-400","rating_text": "DINING","user_id": 215642,"user_name": "Raja","user_profile_url": "https://www.zomato.com/users/raja-215642","user_profile_pic": "https://b.zmtcdn.com/data/user_profile_pictures/ba6/a15fdca76bd30fbade289985eb3bdba6.jpg?fit=around%7C100%3A100&crop=100%3A100%3B%2A%2C%2A","user_placeholder_pic": "https://b.zmtcdn.com/images/placeholder_200.png","user_followers_count": 114,"user_reviews_count": 0,"user_is_followed": false,"positive_tags": [],"negative_tags": [],"like_count": 0,"is_liked_by_user": false,"comment_count": 0,"comments": [],"management_comments": [],"has_more_comments": false,"review_photos": [],"external_url": "","external_host": "","external_host_text": "","is_editable": false,"urbanspoon_status": 0,"new_rating_color": "#1C1C1C","background_color_type": "yellow","background_color_tint": "400","restaurantUrl": "https://www.zomato.com/chennai/dindigul-thalappakatti-since-1957-ramapuram/order","resId": 67547,"scrapedAt": "2025-10-11T16:59:11.958Z","source": "zomato"}
Data Visualization
The scraper includes a comprehensive view template (.actor/view_template.html
) that provides:
Features
- Review Cards: Clean, organized display of each review
- User Information: Reviewer profiles with follower counts and review statistics
- Rating Display: Visual rating indicators with color coding
- Photo Gallery: Grid display of review photos
- Tag System: Positive and negative sentiment tags
- Engagement Metrics: Likes, comments, and interaction data
- Restaurant Context: Restaurant information and scraping metadata
Usage
The view template automatically formats your scraped data into a user-friendly interface when viewing results in the Apify console.
Support
For issues and questions:
- Review the Apify Actor logs in the platform
- Ensure restaurant URLs are valid Zomato restaurant pages
- Check that restaurant pages are accessible and not restricted
- Verify that maxReviewsPerRestaurant is set to a reasonable number (recommended: 10-50)
- The scraper uses browser automation to extract data - ensure sufficient system resources
- For authentication issues, the scraper may need Zomato API credentials
- Email : lakshmanan.w3dev@gmail.com
Proxy Configuration
Important: Configure the proxy settings based on your location for optimal performance:
India (IN)
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "IN"}}
United States (US)
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
United Kingdom (UK)
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "GB"}}
Other Countries
Replace "IN"
, "US"
, or "GB"
with the appropriate ISO 3166-1 alpha-2 country code for your location. Common codes include:
CA
- CanadaAU
- AustraliaDE
- GermanyFR
- FranceJP
- JapanSG
- Singapore
Note: Using a proxy from your geographic region helps avoid Zomato's regional restrictions and improves scraping success rates.
Data Format Notes
- All timestamps are in ISO 8601 format
- Rating values are numeric (1-5 scale)
- User information includes profile data and statistics
- Tags are extracted and categorized as positive/negative sentiment
- Photo URLs and external links are preserved when available