Zomato Restaurants & Reviews Scraper avatar

Zomato Restaurants & Reviews Scraper

Pricing

from $1.00 / 1,000 restaurant scrapeds

Go to Apify Store
Zomato Restaurants & Reviews Scraper

Zomato Restaurants & Reviews Scraper

Scrape restaurants and reviews from zomato.com. Get names, cuisines, ratings and votes, cost for two, address and coordinates, phone, per-vertical ratings, delivery info, plus per-review rating, author, date, text, photos and tags. Search a city feed or paste URLs.

Pricing

from $1.00 / 1,000 restaurant scrapeds

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

4

Monthly active users

9 days ago

Last modified

Share

Scrape restaurants and their reviews from zomato.com — search a city feed or paste URLs, and get clean, structured JSON for every restaurant, including full review text.

What you get

Per restaurant

  • Identity: id, name, canonical URL, thumbnail
  • Cuisines (list + string), establishment type, locality, city, country, postcode
  • Ratings: aggregate rating, votes, rating text, and per-vertical ratings (Dining / Delivery) with review counts
  • Cost: cost-for-two text, cost-for-one text
  • Location: full address, latitude, longitude, static map image
  • Contact: phone number(s), chain / group name and link
  • Delivery: estimated delivery time, online-ordering flag, serviceable flag
  • Status: open/closed, delivery-only, dark-kitchen, promoted, promo offer, has-promo flag

Per review (core to Zomato)

  • Rating and rating text
  • Author, author profile URL, author review count, author follower count
  • Date, like count, comment count, dining/delivery experience
  • Full review text, review photos, review tags, review URL

Modes

Search a city — pick one or more Zomato city slugs (e.g. ncr, mumbai, bangalore, dubai, london), choose the Delivery or Dining Out feed, optionally add a keyword (e.g. pizza), and the actor walks the feed forward.

Paste URLs — paste any mix of:

  • Restaurant URLs — https://www.zomato.com/ncr/olive-bar-kitchen-mehrauli-new-delhi
  • City feeds — https://www.zomato.com/ncr/delivery or .../dine-out
  • Keyword searches — https://www.zomato.com/ncr/restaurants/pizza

Options

OptionWhat it does
fetchDetailsEnrich each restaurant with address, coordinates, phone, per-vertical ratings, taxonomy
fetchReviewsAttach reviews to each restaurant
maxReviewsCap reviews captured per restaurant (0 disables)
reviewsSortPopular / Newest / Oldest / Rating high→low / Rating low→high
offersOnlyNarrow the Dining Out feed (and keyword search) to restaurants currently running an offer, using Zomato's own Offers filter. Delivery has no such filter and is unaffected
maxItemsTotal restaurants to return (0 = unlimited)
maxPagesSafety cap on feed pages per city/URL. Empty or 0 = walk all pages
resumeFromRunIdContinue one specific previous run/dataset: restaurants already collected there are skipped, so this run only returns new ones. For recurring daily monitoring of the same search, use Incremental mode instead — see below
incrementalModeDaily/recurring monitoring of this same search. First run returns everything as NEW; later runs return only NEW/UPDATED/REAPPEARED by default (unchanged restaurants are suppressed and not billed)
stateKeyIncremental mode only. Optional name for a monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to derive one automatically from the city/feed/URL and detail/review settings
emitUnchangedIncremental mode only. Also return restaurants unchanged since the last run, marked UNCHANGED. Adds and bills extra rows you already have
emitExpiredIncremental mode only. Also return restaurants from a previous run no longer found, marked EXPIRED, once a run has fully scanned the search (not capped, not a resume). Adds and bills extra synthetic rows

Resume & recurring updates

Resume (resumeFromRunId) continues one specific interrupted or previous large crawl: paste a run ID or dataset ID and this run skips restaurants already collected there, returning only the remaining new ones. An automatic same-run checkpoint also protects against platform migrations/Resurrects without any input needed.

Incremental mode (incrementalMode) is for a schedule (for example, daily): the actor remembers the previous run of the same search by itself, so you never paste a run ID. The first run returns everything as NEW. Later runs return only NEW, UPDATED, and REAPPEARED restaurants by default — duplicates and unchanged restaurants are suppressed (and not charged). Turn on emitUnchanged or emitExpired only when you also want those rows returned (and billed for). State is isolated per city/feed/URL and detail/review setting automatically; set stateKey to name or deliberately share a monitoring campaign.

When incrementalMode is on, every returned record also carries changeType (NEW | UPDATED | UNCHANGED | REAPPEARED | EXPIRED), changedFields (which fields changed, for UPDATED), firstSeenAt, and lastSeenAt. With incrementalMode off, output is unchanged from before.

Finding a city slug

Open the city on zomato.com and read the slug from the URL: zomato.com/ncr/delivery → the slug is ncr. Use it in the Cities field.

Send results into your apps (MCP connectors)

Optionally pipe results straight into the apps you already use via Model Context Protocol (MCP) connectors — Notion, Linear, Airtable, or Apify. Authorize one under Apify → Settings → API & Integrations, then select it in the input. Notion gets a page-per-item export; other connectors get a best-effort write. Leave empty to skip.

Output example

{
"id": "18685577",
"name": "Olive Bar & Kitchen",
"url": "https://www.zomato.com/ncr/olive-bar-kitchen-mehrauli-new-delhi",
"cuisines": ["Italian", "Mediterranean", "Continental"],
"rating": { "aggregate": 4.6, "votes": 3049, "text": "4.6", "subtitle": "Very Good" },
"ratingsByVertical": { "DINING": { "rating": 4.6, "reviewCount": 3049 }, "DELIVERY": { "rating": 4.1, "reviewCount": 1200 } },
"costForTwoText": "₹4,000 for two",
"hasPromo": true,
"address": "One Style Mile, Kalka Das Marg, Mehrauli, New Delhi",
"latitude": 28.5245,
"longitude": 77.1855,
"phones": ["+911234567890"],
"reviews": [
{ "rating": 5, "author": "Jatin Kumar", "timestamp": "5 days ago", "text": "Fantastic ambience and food.", "likeCount": 3, "tags": ["Great Ambience"] }
],
"reviewsCount": 20
}

Plan Requirement

Runs on any Apify plan. Enable Apify Proxy in the input for reliable results.

Notes

  • The actor returns publicly visible restaurant and review data. Login-gated fields are not collected.
  • Zomato is available in several countries; some regional feeds return the richest data when the proxy country matches the city.