Zomato Restaurant Extractor avatar

Zomato Restaurant Extractor

Pricing

from $0.30 / 1,000 results

Go to Apify Store
Zomato Restaurant Extractor

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

Kawsar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

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 typeExampleWhat you get
City pagehttps://www.zomato.com/mumbaiAll restaurants in Mumbai across pages
Cuisine sub-pagehttps://www.zomato.com/mumbai/restaurants/chineseAll Chinese restaurants in Mumbai
Individual restauranthttps://www.zomato.com/mumbai/bademiya-colaba/infoThat 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

  1. Fetches each URL through built-in bypass infrastructure that handles anti-bot protection
  2. Reads restaurant data from the page's embedded Schema.org structured data
  3. For city and cuisine pages, automatically paginates through ?page=2, ?page=3, and so on until maxItems is reached
  4. If page pagination is exhausted (common for smaller cities), discovers and scrapes cuisine sub-pages to find more restaurants
  5. Deduplicates all results by restaurant URL across pages and sub-pages
  6. Returns every restaurant as a JSON record in the dataset

Input

ParameterTypeDefaultDescription
urlsarray of stringsOne or more Zomato URLs to scrape. Accepts city pages, cuisine sub-pages, and individual restaurant pages.
maxItemsinteger15Maximum restaurant records to collect per URL. Each URL gets its own independent limit.
requestTimeoutSecsinteger60Per-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
}
FieldTypeDescription
restaurantIdstringNumeric Zomato restaurant ID extracted from the listing image URL
restaurantNamestringFull restaurant name
restaurantUrlstringCanonical Zomato page URL
imageUrlstringFeatured image URL from the restaurant listing
ratingnumberAggregate rating on a 0.0 to 5.0 scale
ratingCountintegerTotal number of ratings and reviews
cuisinesstringComma-separated cuisine types
citystringCity where the restaurant is located
localitystringNeighbourhood or locality, parsed from the address
addressstringFull street address
scrapedAtstringISO 8601 timestamp of when the data was collected
errorstringError message if extraction failed, otherwise null

Pagination explained

Zomato serves about 9 restaurants per listing page. The actor handles this automatically:

  1. Fetches the first page of the given URL
  2. If maxItems is not yet reached, fetches ?page=2, ?page=3, and so on
  3. 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
  4. 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.