Zomato Restaurant Extractor
Pricing
from $0.30 / 1,000 results
Zomato Restaurant Extractor
Zomato restaurant extractor that pulls ratings, cuisines, hours, and contact details from any restaurant page, so market researchers and analysts get structured data without manual work.
Pricing
from $0.30 / 1,000 results
Rating
0.0
(0)
Developer
Kawsar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Zomato Restaurant Extractor: scrape restaurant data from any Zomato city or listing page
Pull restaurant data from Zomato at scale. Give it a city page, a cuisine sub-page, or individual restaurant URLs and the actor returns names, ratings, review counts, cuisines, addresses, localities, images, and more as structured JSON. It follows pagination automatically to fill your dataset without extra configuration.
What URLs does this actor accept?
You can pass three types of Zomato URLs:
| URL type | Example | What you get |
|---|---|---|
| City page | https://www.zomato.com/mumbai | All restaurants in Mumbai across pages |
| Cuisine sub-page | https://www.zomato.com/mumbai/restaurants/chinese | All Chinese restaurants in Mumbai |
| Individual restaurant | https://www.zomato.com/mumbai/bademiya-colaba/info | That single restaurant's data |
Mix all three types freely in one run.
Use cases
- Market research: collect ratings, review volumes, and cuisine spread across a city to spot gaps and benchmark competitors
- Local business directories: build or refresh restaurant listings for any Zomato city in one run
- Food delivery analysis: gather cuisine data, addresses, and listing images for delivery zone planning
- Hospitality benchmarking: pull all restaurants in a locality or cuisine category and compare ratings on a schedule
- Lead generation: build contact lists of restaurants in a city with addresses and localities
- Content and SEO: populate travel guides and local pages with accurate, current restaurant details
- Academic research: collect structured restaurant datasets for food-tech, urban planning, or consumer behavior studies
How it works
- Fetches each URL through built-in bypass infrastructure that handles anti-bot protection
- Reads restaurant data from the page's embedded Schema.org structured data
- For city and cuisine pages, automatically paginates through
?page=2,?page=3, and so on untilmaxItemsis reached - If page pagination is exhausted (common for smaller cities), discovers and scrapes cuisine sub-pages to find more restaurants
- Deduplicates all results by restaurant URL across pages and sub-pages
- Returns every restaurant as a JSON record in the dataset
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
urls | array of strings | One or more Zomato URLs to scrape. Accepts city pages, cuisine sub-pages, and individual restaurant pages. | |
maxItems | integer | 15 | Maximum restaurant records to collect per URL. Each URL gets its own independent limit. |
requestTimeoutSecs | integer | 60 | Per-request timeout in seconds. Increase for slow connections. |
Example input — city page
{"urls": ["https://www.zomato.com/mumbai"],"maxItems": 50}
Example input — multiple cities
{"urls": ["https://www.zomato.com/delhi","https://www.zomato.com/bangalore","https://www.zomato.com/hyderabad"],"maxItems": 100}
Example input — cuisine filter
{"urls": ["https://www.zomato.com/mumbai/restaurants/chinese"],"maxItems": 30}
Example input — individual restaurants
{"urls": ["https://www.zomato.com/mumbai/bademiya-colaba/info","https://www.zomato.com/delhi/indian-accent-new-delhi/info"],"maxItems": 10}
What data does this actor extract?
Each result in the dataset looks like this:
{"restaurantId": "18746496","restaurantName": "Sher e Punjab","restaurantUrl": "https://www.zomato.com/gangtok/sher-e-punjab-arithang/info","imageUrl": "https://b.zmtcdn.com/data/pictures/6/18746496/58a260cf4d9ee9e33d3464afa03a8738_featured_v2.jpg","rating": 4.2,"ratingCount": 3755,"cuisines": "Chinese, North Indian","city": "Gangtok","locality": "Arithang","address": "Ward 10, Upper Arithang, Arithang, Gangtok","scrapedAt": "2025-05-21T12:13:43.181000+00:00","error": null}
| Field | Type | Description |
|---|---|---|
restaurantId | string | Numeric Zomato restaurant ID extracted from the listing image URL |
restaurantName | string | Full restaurant name |
restaurantUrl | string | Canonical Zomato page URL |
imageUrl | string | Featured image URL from the restaurant listing |
rating | number | Aggregate rating on a 0.0 to 5.0 scale |
ratingCount | integer | Total number of ratings and reviews |
cuisines | string | Comma-separated cuisine types |
city | string | City where the restaurant is located |
locality | string | Neighbourhood or locality, parsed from the address |
address | string | Full street address |
scrapedAt | string | ISO 8601 timestamp of when the data was collected |
error | string | Error message if extraction failed, otherwise null |
Pagination explained
Zomato serves about 9 restaurants per listing page. The actor handles this automatically:
- Fetches the first page of the given URL
- If
maxItemsis not yet reached, fetches?page=2,?page=3, and so on - If page pagination stops yielding new restaurants (happens in smaller cities where all restaurants fit on one page), the actor switches to cuisine sub-pages discovered from the first page
- Cuisine sub-pages (e.g.
/mumbai/restaurants/chinese) each contain a separate set of restaurants and also support pagination
maxItems is applied per URL. If you pass three city URLs with maxItems: 50, the actor collects up to 50 restaurants from each city (up to 150 total).
For a city like Mumbai, you can collect hundreds of restaurants by setting a higher maxItems. For smaller cities like Gangtok that have fewer restaurants total, the actor collects what is available and stops.
FAQ
Which countries and cities does this work for? Any city where Zomato operates. Just go to Zomato, navigate to a city page, and copy the URL. Zomato covers India, UAE, Australia, New Zealand, and others.
How do I find a Zomato city URL?
Open https://www.zomato.com in your browser, search for or click on a city, and copy the URL from the address bar. It looks like https://www.zomato.com/{city}.
How do I target a specific cuisine?
From any Zomato city page, click a cuisine filter (e.g. Chinese) and copy the resulting URL. It looks like https://www.zomato.com/{city}/restaurants/{cuisine}.
How many restaurants can I scrape per run?
Up to 1000 per URL. Set maxItems to control the cap. For large cities with many restaurants, the actor will paginate and use cuisine sub-pages to reach the limit.
What happens if a URL fails?
The actor records the error under the error field for that URL and continues with the rest of the list. One failure does not stop the run.
Can I scrape multiple cities in one run?
Yes. Add all city URLs to the urls list. maxItems is applied independently per URL, so each city gets its own limit.
Integrations
Connect Zomato Restaurant Extractor with other apps and services using Apify integrations. You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and many more. You can also use webhooks to trigger actions whenever results are available.