Zomato Restaurants & Reviews Scraper
Pricing
from $1.00 / 1,000 restaurant scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
4
Monthly active users
9 days ago
Last modified
Categories
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/deliveryor.../dine-out - Keyword searches —
https://www.zomato.com/ncr/restaurants/pizza
Options
| Option | What it does |
|---|---|
fetchDetails | Enrich each restaurant with address, coordinates, phone, per-vertical ratings, taxonomy |
fetchReviews | Attach reviews to each restaurant |
maxReviews | Cap reviews captured per restaurant (0 disables) |
reviewsSort | Popular / Newest / Oldest / Rating high→low / Rating low→high |
offersOnly | Narrow 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 |
maxItems | Total restaurants to return (0 = unlimited) |
maxPages | Safety cap on feed pages per city/URL. Empty or 0 = walk all pages |
resumeFromRunId | Continue 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 |
incrementalMode | Daily/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) |
stateKey | Incremental 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 |
emitUnchanged | Incremental mode only. Also return restaurants unchanged since the last run, marked UNCHANGED. Adds and bills extra rows you already have |
emitExpired | Incremental 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.