Zomato Restaurant Scraper - City, Cuisine, Contact

io.github.AnshumanAtreyPublished by GitHub account AnshumanAtreyv1.0.6Updated Oct 30, 2026

Zomato Restaurant Scraper - City, Cuisine, Phone

The publisher's own server: Zomato

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingBusiness & Commerce

Overview

AI-generated overview

Apify-hosted scraper that lets an assistant pull Zomato restaurant listings by city and cuisine into structured records with contact details.

What you can do
  • Run a scrape of Zomato restaurant listings by city, listing type and cuisine, with a cap on how many restaurants to collect.
  • Retrieve structured records per restaurant: name, URL, phone, address, cuisines, rating, cost for two, city and area.
  • Read a per-run summary record with counts of scraped and found restaurants, failures, duration and source URLs.
  • Target cities or cuisines outside the preset lists, or an exact Zomato listing URL, through override inputs.
  • Choose scan depth from URL-and-name only up to full detail with extra retries.
When to use it
Useful when you want an assistant to build or refresh restaurant lead lists, compare cuisines or cities, or gather competitor and market data from Zomato without a Zomato account. It suits sales, food-tech research and lead-generation workflows rather than menu or dish-level data.
Requirements
A remote MCP endpoint at mcp.apify.com over streamable HTTP, authenticated with an Apify API token sent as an Authorization header in the form Bearer plus the token. Runs are billed to that Apify account; no Zomato account is needed.
Before you install
The Apify API token is a secret that authorizes runs billed to your account, and each run costs money per record (about $0.005 per restaurant, so a 50-restaurant scan is roughly $0.26). Scraping relies on residential proxies and public Zomato data; the README puts responsibility for Zomato's terms, GDPR/DPDP and local law on you, and warns against mass cold-calling phone numbers without consent.

Installation

In SourceWeft

  1. Open Zomato Restaurant Scraper - City, Cuisine, Contact in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.AnshumanAtrey%2Fzomato-restaurant-scraper/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "zomato-restaurant-scraper-city-cuisine-c": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=anshumanatrey/zomato-restaurant-scraper"
    }
  }
}

README

Zomato Restaurant Scraper

📦 Open source · MIT: github.com/AnshumanAtrey/zomato-restaurant-scraper

Scrape restaurant listings from Zomato by city and cuisine. Get structured records with name, phone, address, cuisines, rating, and cost for two — no Zomato account required.

Built for B2B sales teams, food-tech researchers, ghost-kitchen operators, lead-gen agencies, and competitor intelligence.

Quick start

  1. Pick a City from the dropdown (Bangalore, Delhi NCR, Mumbai, Dubai, Singapore, etc. — 40 cities)
  2. Pick a Listing Type (Best, All, Dinner, Breakfast)
  3. Optionally pick a Cuisine filter (Biryani, Pizza, North Indian, Chinese, etc. — 24 options)
  4. Set how many restaurants you want (default 50, up to 1000)
  5. Click Run

A 50-restaurant scan takes one to one and a half minutes on Apify at the default 1 GB of memory (63 to 90 seconds in three runs, 2026-10-30).

What you get

Each restaurant is pushed as one dataset record:

FieldExample
nameTruffles
urlhttps://www.zomato.com/bangalore/truffles-st-marks-road-central-bangalore/info
slugtruffles-st-marks-road-central-bangalore
phone+91 80 4111 2400
address22, St Marks Road, Bangalore
cuisinesAmerican, Burger, Continental
rating4.5
costForTwo₹800
citybangalore
areaCentral Bangalore
timestamp2026-05-22T09:43:18Z

A final summary record reports restaurantsScraped, restaurantsFound, failures, duration, and sourceUrls.

Common use cases

Build a B2B restaurant lead list

Pick Mumbai, Best restaurants, maxRestaurants: 200. Export the CSV. You now have 200 verified phone numbers + addresses for outreach.

Scrape a specific cuisine in a specific city

Pick Hyderabad, All restaurants, Cuisine: Biryani, maxRestaurants: 100.

Scrape a city not in the dropdown

Use the Custom city field under "Advanced overrides". Type Tirunelveli, Erode, Coorg, Manali, Madurai, Varanasi — auto-converted to the right Zomato URL.

Scrape a category not in the dropdown

Use the Custom cuisine field. Momos, Kebab, Hyderabadi, Awadhi all work.

Scrape an exact Zomato URL you already have

Paste it into Custom URL under "Advanced overrides". Overrides every other dropdown.

Inputs

Main fields

  • City — Pick from 40 Zomato cities across India, UAE, Qatar, Oman, Malaysia, Singapore, Philippines, Sri Lanka, Portugal
  • Listing Type — Best restaurants (curated top picks), All restaurants, Dinner spots, or Breakfast spots
  • Cuisine — Optional filter across 24 cuisine categories, or "Any" for no filter
  • How many restaurants — Cap on results (1-1000). Start with 20-50 to verify, then scale up
  • Scan depth:
    • Quick — restaurant URLs + names only (fast, cheap, useful for bulk URL lists)
    • Standard — full data: phone, address, rating, cost (default — recommended for B2B leads)
    • Deep — full data with extra retries for blocked pages (slowest, highest yield)

Advanced overrides (optional)

  • Custom city — Type any Zomato city not in the dropdown. Auto-slugified
  • Custom cuisine — Type any Zomato cuisine category not in the dropdown
  • Custom URL — Paste any Zomato listing URL to scrape it directly. Overrides everything above

Runtime

  • Run timeout (seconds) — Hard kill after this many seconds (default 1800 = 30 min)

How it works

  1. Listing page: navigates to the constructed Zomato URL, scrolls to load lazy content, extracts all restaurant detail URLs (handles both /info and /order URL patterns)
  2. Detail pages: visits each restaurant page concurrently using fast HTTP fetches (Cheerio) — typically 5-10x faster than full browser rendering
  3. Auto-fallback: if the primary URL returns 0 restaurants, automatically retries /{city}/restaurants as a fallback

Uses Apify Residential Proxy to avoid rate-limit issues.

Pricing

$0.005 per restaurant record. A typical 50-restaurant scan costs ~$0.26: 50 restaurant records plus the run's one summary record, which is charged as a record too. On paid Apify plans a record is $0.0045 on Scale and $0.004 on Business and above.

Scan sizeApprox cost
20 restaurants$0.10
50 restaurants$0.25
100 restaurants$0.50
500 restaurants$2.50
1000 restaurants$5.00

FAQ

Does it scrape menu items / dishes?

No — it scrapes restaurant listings (name, phone, address, etc.), not menus. For menu data, use a different actor that hits individual restaurant pages with menu rendering.

Can I scrape "Dahi Puri" or "Tandoor"?

Zomato organizes by cuisine category, not by individual dish. Specific dishes like dahi-puri don't have their own URL on Zomato. Use a broader category like Street Food or North Indian instead.

Can I scrape an entire state like "Tamil Nadu"?

Zomato has no state-level URLs. Pick a specific city instead — e.g., for Tamil Nadu use Chennai, Coimbatore, or custom-city Madurai/Tirunelveli.

Does it work for cities outside the dropdown?

Yes. Use the Custom city field with the city name — Erode, Coorg, Manali, Varanasi, etc. The actor auto-slugifies and auto-falls-back to /{city}/restaurants if /best-restaurants doesn't exist for that smaller city.

Why didn't I get any results?

Most likely causes:

  • Off-list cuisine combined with quick scan — try Standard depth
  • City has no listings for that cuisine — try removing the cuisine filter
  • Custom URL is malformed — paste it in a browser first to verify

What about international cities?

Dubai, Abu Dhabi, Sharjah (UAE), Doha (Qatar), Muscat (Oman), Kuala Lumpur (Malaysia), Singapore, Manila, Colombo, Lisbon are in the dropdown. Other Zomato international cities (e.g., Sydney, Auckland) work via the Custom city field.

Is the data accurate / fresh?

Pulled live from Zomato at run time. Phone numbers and addresses are exactly what Zomato displays today. Ratings may lag slightly behind Zomato's internal scoring.

Is this legal?

Scrapes only publicly visible data on Zomato. You are responsible for complying with Zomato's Terms of Service, GDPR/DPDP, and local laws. Don't use phone numbers for mass cold-calling without consent.

Output structure

json
{  "recordType": "restaurant",  "name": "Truffles",  "url": "https://www.zomato.com/bangalore/truffles-st-marks-road-central-bangalore/info",  "slug": "truffles-st-marks-road-central-bangalore",  "phone": "+91 80 4111 2400",  "address": "22, St Marks Road, Bangalore",  "cuisines": "American, Burger, Continental",  "rating": "4.5",  "costForTwo": "₹800",  "city": "bangalore",  "area": "Central Bangalore",  "timestamp": "2026-05-22T09:43:18Z"}

Plus one summary record per run:

json
{  "recordType": "summary",  "restaurantsScraped": 50,  "restaurantsFound": 52,  "failures": 2,  "duration": 287,  "sourceUrls": ["https://www.zomato.com/bangalore/best-restaurants"]}

Pairs nicely with

Enrich your restaurant lead lists with deeper intel:

  • Holehe Email OSINT — After scraping restaurant emails from their websites, check which platforms each restaurant owner is on
  • NetIntel — WHOIS, DNS, SSL, GeoIP of each restaurant's website
  • Social Analyzer — Find a restaurant brand's social media presence across 900+ platforms
  • theHarvester — Discover all subdomains + emails for a restaurant chain's primary domain
  • nmap — Network recon (for IT/security workflows, not lead-gen)
  • Bug Bounty Finder — Audit a restaurant chain's disclosure-program coverage

Credits

Built by Anshuman Atrey using Apify SDK, Crawlee, Puppeteer, and Cheerio.

Disclaimer

This scraper accesses publicly available data on Zomato. You are responsible for complying with Zomato's Terms of Service and applicable laws in your jurisdiction. Use the data responsibly — avoid mass cold-calling without consent.

Source: README.md at commit 9e9efbb

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

3
  1. v1.0.6LatestOct 30, 2026
  2. v1.0.3Oct 29, 2026
  3. v1.0.2Sep 24, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Zomato integrations