Zomato Reviews Scraper avatar
Zomato Reviews Scraper

Pricing

from $1.99 / 1,000 reviews

Go to Apify Store
Zomato Reviews Scraper

Zomato Reviews Scraper

Developed by

codingfrontend

codingfrontend

Maintained by Community

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

ParameterTypeRequiredDefaultDescription
restaurantUrlsArrayYes-List of Zomato restaurant URLs to scrape reviews from
maxReviewsPerRestaurantIntegerNo10Maximum number of reviews to scrape per restaurant
headlessBooleanNofalseRun browser in headless mode (no visible UI)
cookiesArrayNonullOptional: 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
}

For accessing protected or authenticated content, you can provide cookies in two ways:

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 name
  • value (string): Cookie value
  • domain (string): Cookie domain (e.g., ".zomato.com")

Optional cookie properties:

  • path (string): Cookie path (default: "/")
  • expirationDate (number): Unix timestamp in seconds
  • httpOnly (boolean): HTTP only flag
  • secure (boolean): Secure flag
  • sameSite (string): SameSite attribute

How to get cookies:

Method 1: Using Chrome Extension (Easiest):

  1. Install the Get cookies.txt LOCALLY extension
  2. Log in to Zomato in your browser
  3. Visit any Zomato page (e.g., https://www.zomato.com)
  4. Click the extension icon and select "Export As → JSON"
  5. Copy the JSON array and use it directly in the cookies input parameter or save as COOKIES.json

Method 2: Manual Extraction:

  1. Log in to Zomato in your browser
  2. Open Developer Tools (F12)
  3. Go to Application/Storage → Cookies → https://www.zomato.com
  4. Copy the cookie values (especially csrf, zat, PHPSESSID, _abck)
  5. 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 cookie
  • zhli - 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

FieldTitleTypeDescription
reviewIdReview IDIntegerUnique identifier for the review
statusReview StatusStringStatus of the review (success, etc.)
reviewTextReview TextStringFull text content of the review
reviewTextShortShort Review TextStringShortened version of the review text
reviewDateReview DateStringFormatted date when review was posted
experienceTypeExperience TypeStringType of dining experience (dining, delivery, etc.)
ratingRating ValueNumberNumeric rating value (1-5 stars)
ratingLabelRating LabelStringText label for the rating (Poor, Average, Good, etc.)
ratingColorHexRating ColorStringHex color code for rating display
ratingColorThemeRating ThemeStringColor theme for rating (yellow-400, etc.)
ratingTextRating ContextStringRating context text
reviewerNameReviewer NameStringName or username of the reviewer
reviewerIdReviewer IDIntegerUnique identifier for the reviewer
reviewerProfileUrlReviewer Profile URLStringURL to the reviewer's profile
reviewerProfilePicReviewer Profile PictureStringURL to the reviewer's profile picture
reviewerFollowersCountReviewer FollowersIntegerNumber of followers the reviewer has
reviewerReviewsCountReviewer Review CountIntegerNumber of reviews the user has posted
reviewerIsFollowedIs FollowedBooleanWhether the current user follows this reviewer
positiveTagsPositive TagsArrayArray of positive sentiment tags
negativeTagsNegative TagsArrayArray of negative sentiment tags
likeCountLike CountIntegerNumber of likes the review has received
isLikedByUserLiked by UserBooleanWhether the current user liked this review
commentCountComment CountIntegerNumber of comments on this review
isEditableIs EditableBooleanWhether the review can be edited
commentsCommentsArrayArray of user comments on the review
managementCommentsManagement CommentsArrayArray of management responses to the review
hasMoreCommentsHas More CommentsBooleanWhether there are more comments to load
reviewPhotosReview PhotosArrayArray of photo URLs attached to the review
externalUrlExternal URLStringExternal URL if review is shared from another platform
externalHostExternal HostStringExternal platform host name
externalHostTextExternal Host TextStringExternal platform display text
reviewUrlReview URLStringDirect URL to this specific review
backgroundColorTypeBackground Color TypeStringBackground color type for UI display
backgroundColorTintBackground Color TintStringBackground color tint/shade
restaurantUrlRestaurant URLStringURL of the restaurant being reviewed
resIdRestaurant IDIntegerZomato's internal restaurant identifier
scrapedAtScraped AtStringISO timestamp when the data was scraped
sourceSourceStringSource 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 - Canada
  • AU - Australia
  • DE - Germany
  • FR - France
  • JP - Japan
  • SG - 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