Swiggy Restaurant Scraper avatar

Swiggy Restaurant Scraper

Pricing

from $3.50 / 1,000 results

Go to Apify Store
Swiggy Restaurant Scraper

Swiggy Restaurant Scraper

Scrape restaurant listings from Swiggy.com — India's #2 food delivery platform. Extract name, location, rating, cuisines, delivery time, cost and discount data. Fast, zero-browser API architecture.

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 minutes ago

Last modified

Share

Swiggy Restaurant & Menu Scraper

The most comprehensive, high-speed, and cost-effective data extraction tool for Swiggy — India’s leading food delivery and quick-commerce platform. Extract rich restaurant profiles, complete digital menus, pricing data, delivery estimates, and customer ratings without the overhead of browser automation.

Apify Actor


🌟 Introduction: Why Scrape Swiggy?

The Indian food delivery market is a duopoly dominated by Zomato and Swiggy. To get a 100% complete picture of the Indian food-tech landscape, you need data from both.

While many scrapers struggle with Swiggy's dynamic React-based frontend and heavy JavaScript rendering, this Swiggy Restaurant & Menu Scraper bypasses the frontend entirely. By interfacing directly with Swiggy's internal Desktop API (DAPI), this actor delivers lightning-fast performance, extreme reliability, and vastly reduced compute costs.

Whether you are a food aggregator, a cloud kitchen operator, a market researcher, or a pricing analyst, this dataset provides the definitive ground truth for the Indian F&B sector.


🚀 Key Features

  • ⚡ Blazing Fast API Architecture: No Puppeteer, no Playwright. This actor uses pure HTTP requests (got-scraping) to emulate Swiggy's internal DAPI, meaning it runs 10x to 50x faster than browser-based alternatives.
  • 🍔 Deep Menu Extraction: Doesn't just stop at the restaurant name. It iterates through secondary endpoints to pull every single menu item, categorized accurately, with real-time prices, descriptions, and Veg/Non-Veg classifications.
  • 📍 Hyper-Local Targeting (GPS Supported): Swiggy relies heavily on hyper-local delivery zones. You aren't restricted to just "cities". You can input exact latitude,longitude coordinates to scrape specific neighborhoods, tech parks, or residential blocks.
  • 💰 Automatic Price Normalization: Swiggy's backend stores prices in paise. This scraper automatically converts all financial metrics (delivery fees, menu prices, cost for two) into standard INR (₹) for immediate analysis.
  • 🔄 Built-in Pagination Handling: Seamlessly navigates Swiggy's complex nextOffset pagination tokens to extract thousands of restaurants continuously without missing a single listing.
  • 🛡️ Anti-Blocking Mechanisms: Integrated perfectly with Apify's Proxy infrastructure to rotate IPs, randomize request delays, and spoof browser headers, ensuring uninterrupted data pipelines.

🎯 Business Use Cases

How can you monetize and utilize this Swiggy dataset?

1. Cloud Kitchen (Dark Kitchen) Strategy & Expansion

Before opening a new cloud kitchen, you need to understand the local supply and demand. By scraping a specific GPS radius, you can identify "menu gaps." Are there 50 pizza places but zero healthy salad options? What is the average price of a biryani in Koramangala vs. Indiranagar? Use this data to optimize your cuisine choice and pricing strategy.

2. Competitive Pricing Intelligence

If you are a restaurant owner or a franchise manager, monitoring your competitors' pricing dynamically is crucial. Track how rival restaurants alter their prices, delivery fees, and promotional discounts over time.

3. Food Aggregation & Alternative Apps

Building a hyper-local discovery app, a nutritional tracking platform, or a corporate catering service? Feed your database with accurate, structured restaurant and menu data across top Indian metro cities.

4. Sentiment Analysis & Quality Monitoring

Extract average ratings and rating volumes for thousands of restaurants. Identify poorly rated establishments as potential leads for B2B restaurant management services, or analyze high-performing restaurants to understand winning operational formulas.


⚙️ How to Use: Input Configuration

The scraper is designed to be plug-and-play while offering granular control for advanced users.

Input JSON Example

{
"locations": [
"bangalore",
"mumbai",
"12.9352,77.6245"
],
"scrapeMenu": true,
"maxRestaurants": 500,
"requestDelay": 1500,
"maxConcurrency": 2,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Parameter Details

FieldTypeDefaultDescription
locationsArray<String>[](Required) The target areas. You can use standard city slugs (e.g., delhi, pune) or exact GPS coordinates (lat,lng) for hyper-local neighborhood searches.
scrapeMenuBooleantrueIf enabled, the actor makes a secondary API call for each restaurant to download its full digital menu. Turn this off if you only need a directory of restaurants, which will drastically speed up the run.
maxRestaurantsInteger100The maximum number of restaurants to extract per location. Set this to 0 to scrape the absolute maximum number of restaurants Swiggy allows for that area.
requestDelayInteger1000Wait time (in milliseconds) between API requests. Swiggy has rate limits. Keeping this between 1000ms - 2000ms ensures high success rates.
maxConcurrencyInteger2Number of simultaneous scraping tasks. Since this uses the internal API, keep concurrency low (1 to 3) to avoid triggering DDoS protections.
proxyConfigurationObjectApify ProxyProxies are highly recommended. Indian Residential proxies or standard Datacenter proxies work best.

🗺️ Supported Location Formats

You have two ways to define where to scrape:

1. Built-in City Slugs

The actor comes pre-configured with the exact GPS coordinates for the center of India's major metropolitan areas. Just type the slug:

  • mumbai
  • delhi
  • bangalore (or bengaluru)
  • hyderabad
  • chennai
  • kolkata
  • pune
  • ahmedabad
  • jaipur
  • lucknow

Food delivery is hyper-local. A search from the "center" of Mumbai will not show restaurants in Navi Mumbai. For exhaustive coverage, input exact coordinates separated by a comma:

  • "19.0760,72.8777" (Bandra Kurla Complex)
  • "12.9352,77.6245" (Koramangala, Bangalore)
  • "28.4595,77.0266" (Cyber City, Gurgaon)

📊 Data Dictionary (Output Schema)

The actor generates highly structured, clean JSON datasets ready for import into Excel, BigQuery, Snowflake, or your custom database.

JSON KeyData TypeDescription
restaurantIdStringSwiggy's internal unique identifier for the restaurant.
nameStringThe official name of the restaurant.
cityStringThe operational city or the search location input.
areaStringThe specific neighborhood/locality (e.g., "Indiranagar").
avgRatingNumberThe average user rating out of 5.0. Returns null if unrated.
ratingCountStringTextual representation of rating volume (e.g., "10K+ ratings", "500+").
costForTwoStringSwiggy's estimated cost for two people (e.g., "₹400 for two").
cuisinesArray<String>List of cuisine tags (e.g., ["Chinese", "North Indian", "Beverages"]).
deliveryTimeIntegerEstimated Time of Arrival (ETA) in minutes.
deliveryFeeIntegerCurrent delivery fee in standard INR (₹).
isOpenBooleantrue if the restaurant is currently accepting orders.
isPromotedBooleantrue if the listing is an "Ad" or promoted placement.
hasMenuBooleanIndicates if the menu was successfully scraped and attached.
menuItemsArray<Object>An array containing the full menu. See below for item structure.
searchLocationStringThe original input location string used to find this record.
scrapedAtStringISO-8601 timestamp of when the data was extracted.

Inside the menuItems array, each item contains:

  • itemId: Unique ID of the dish.
  • name: Name of the dish (e.g., "Paneer Butter Masala").
  • category: The menu section it belongs to (e.g., "Main Course", "Breads").
  • description: The chef's description of the dish (often contains ingredients).
  • price: Exact price in INR.
  • isVeg: true if the item is vegetarian (green dot), false for non-veg (red/brown dot).
  • inStock: true if currently available to order.

📝 Sample Output

Here is a snippet of what a single record looks like when exported to JSON:

{
"restaurantId": "10576",
"name": "Truffles",
"city": "bangalore",
"area": "Koramangala",
"avgRating": 4.6,
"ratingCount": "10K+ ratings",
"costForTwo": "₹350 for two",
"cuisines": [
"American",
"Continental",
"Desserts",
"Italian"
],
"deliveryTime": 42,
"deliveryFee": 45,
"isOpen": true,
"isPromoted": false,
"hasMenu": true,
"menuItems": [
{
"itemId": "45291012",
"name": "All American Cheese Burger",
"category": "Burgers",
"description": "Our classic burger with a juicy chicken patty, double cheese, lettuce, tomatoes, and house mayo.",
"price": 245,
"isVeg": false,
"inStock": true
},
{
"itemId": "45291045",
"name": "Ferrero Rocher Cold Coffee",
"category": "Beverages",
"description": "Thick cold coffee blended with rich Ferrero Rocher chocolates and hazelnut syrup.",
"price": 190,
"isVeg": true,
"inStock": true
},
{
"itemId": "45291100",
"name": "Peri Peri French Fries",
"category": "Sides",
"description": "Crispy golden fries tossed in spicy peri peri seasoning.",
"price": 140,
"isVeg": true,
"inStock": false
}
],
"searchLocation": "12.9352,77.6245",
"scrapedAt": "2026-04-16T14:30:22.000Z"
}

💡 Pro-Tips for Best Results

  1. Grid Scraping (City-Wide): Swiggy only shows restaurants within a certain radius of the provided coordinates. If you want to scrape an entire city, you should generate a grid of coordinates (e.g., spaced 3-5 km apart) covering the city limits, and pass that list of coordinates into the locations input.
  2. Menu Toggle: Scraping menus requires 1 additional API request per restaurant. If you input maxRestaurants: 1000 and scrapeMenu: true, the actor makes ~1000 requests. If you only need a list of restaurant names/ratings, set scrapeMenu: false to finish the job in seconds.
  3. Data Export: Once the run completes, you can export the dataset from Apify in JSON, CSV, XML, or Excel format. You can also use the Apify API to pipe the data directly into your AWS S3 bucket, Google Sheets, or Zapier workflows.

🛑 Limitations & Anti-Scraping

Swiggy employs regional geo-blocking. If you attempt to access the Swiggy API from a non-Indian IP address without a proxy, Swiggy may return a 403 Forbidden error or empty data. Solution: Ensure you are using the Apify Proxy. Setting it to RESIDENTIAL proxies based in India yields a 99.9% success rate.


💳 Pricing & Compute Usage

Because this actor relies exclusively on optimized API calls rather than launching heavy Chrome browsers, its resource footprint is minimal.

  • Expect to consume approximately 0.005 to 0.01 Compute Units (CU) per 100 restaurants processed (including full menu extraction).
  • This translates to exceptionally cheap data extraction, making large-scale daily monitoring financially viable.

This tool is designed for ethical data extraction. Users are expected to comply with Swiggy's Terms of Service, respect rate limits, and adhere to local data protection and copyright laws (such as the IT Act in India). The developer of this Apify actor is not responsible for any misuse of the data extracted.


Need customizations, a Zomato companion scraper, or dedicated support? Feel free to reach out via the Apify platform!