Swiggy Public Restaurant Scraper
Pricing
from $2.99 / 1,000 restaurants
Swiggy Public Restaurant Scraper
Extract normalized restaurant records from public Swiggy pages and endpoints without login or private access.
Pricing
from $2.99 / 1,000 restaurants
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Swiggy Public Restaurant Scraper
Extract normalized public restaurant records from Swiggy city, restaurant, JSON, or JSON-LD pages. The Actor uses bounded direct HTTPS, filters records to official Swiggy URLs, deduplicates identities, and reports access boundaries as diagnostics.
On Apify, runs can be called through the API, scheduled, monitored, and connected to downstream datasets and integrations. The default uses Swiggy's public same-domain restaurant listing JSON endpoint for Bangalore because the corresponding city HTML page may return an AWS WAF interstitial.
Why use Swiggy Public Restaurant Scraper?
Use it for restaurant discovery, cuisine and price analysis, locality coverage, delivery-time snapshots, public ratings research, and directory enrichment. Hard page and item limits keep scheduled runs predictable and source URLs make every row traceable.
How to use Swiggy Public Restaurant Scraper
- Open the Actor Input tab.
- Keep the default endpoint for a quick Bangalore test or provide another public Swiggy URL.
- Set a small
maxItemswhile validating your input. - Start the run and inspect normal rows, diagnostics, and
OUTPUT. - Export results or connect the dataset through the Apify API.
Input
{"startUrls": [{ "url": "https://www.swiggy.com/dapi/restaurants/list/v5?lat=12.9716&lng=77.5946&is-seo-homepage-enabled=true&page_type=DESKTOP_WEB_LISTING" }],"maxItems": 25,"maxPages": 1,"followPagination": false,"requestDelayMs": 600,"maxConcurrency": 1,"fixtureFile": "fixtures/sample.html"}
startUrls accepts 1–50 public HTTPS Swiggy URLs. maxItems accepts 1–1000 and maxPages accepts 1–100. Pagination is disabled by default. Requests are sequential and bounded; maxConcurrency remains a compatibility input and is not used to fan out requests.
For deterministic local QA, fixtureFile may point to an HTML file inside this Actor directory. Fixture mode never makes a network request. Remove it for a live public probe.
Output
Restaurant records include public IDs, names, canonical URLs, descriptions, images, brands/categories, cuisines, prices, ratings, reviews, locations, delivery hints, and a bounded data projection. Each normal row contains source/provenance, rank, and timestamp fields; transport and extraction-stage details stay in OUTPUT.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Main data fields
| Field | Meaning |
|---|---|
restaurantId, name, restaurantUrl | Public identity and canonical restaurant URL |
cuisines, costForTwo | Published cuisine and price information |
rating, reviewCount | Public rating snapshot |
locality, deliveryTime | Service-area and delivery estimate |
sourceUrl, provenance, scrapedAt | Traceability metadata |
When the public page is blocked, unsupported, empty, or redirected outside Swiggy, the Actor emits exactly four diagnostic fields (url, error, errorCode, and scrapedAt) and still writes OUTPUT. It does not invent records to satisfy a limit.
Local checks
npm ci --ignore-scriptsnpm testnpm run lintnpm run schemaapify run --purge --input-file .actor/input.jsonnpm run validate
The Actor does not use a browser, proxy, login, private account data, order placement, or CAPTCHA bypass.
How much does it cost to scrape Swiggy restaurants?
This HTTP-only Actor avoids browser startup costs. Actual cost depends on pages, response size, and run frequency. Keep maxPages and maxItems bounded, test one page first, and schedule only as often as the data needs to be refreshed.
Tips and limitations
Prefer Swiggy's public JSON endpoints when a city HTML page reports BLOCKED_SOURCE. Coordinates determine the returned delivery area, and page structures may change. A diagnostic row is an access report, not restaurant data.
FAQ, disclaimer, and support
Use this Actor only for public information you are permitted to collect. Respect Swiggy terms, access controls, robots directives, copyright, privacy requirements, and applicable law. Public page structure and fields may change.
When reporting an issue, include the run ID, public input URL, and diagnostic code in the Actor Issues tab. Custom solutions can build on the dataset while preserving the same public-access boundaries.