Swiggy Food Delivery Restaurants
Pricing
from $2.99 / 1,000 restaurants
Swiggy Food Delivery Restaurants
Collect source-backed public Swiggy food-delivery restaurant listings with optional public menu data.
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 Food Delivery Restaurants
Collect source-backed public Swiggy food-delivery restaurant listings for an Indian city. The Actor uses bounded direct HTTPS first, then Swiggy's public location and restaurant-listing JSON endpoints, and finally one reusable browser session only if both faster paths are unavailable.
Input
{"city": "chennai","maxItems": 10,"getMenus": true,"getAddons": true,"getVariants": true,"browserFallback": true,"timeoutSecs": 30,"fixtureFile": "fixtures/sample.html"}
city is normalized to a Swiggy city-page slug. maxItems accepts 1–100. Menu enrichment is enabled by default; it performs one bounded public restaurant-page request per listing whose menu is not already embedded. timeoutSecs accepts 5–120 seconds per request.
If the city page is stripped, the Actor resolves the city through Swiggy's public autocomplete/address endpoints and requests its public restaurant-listing v5 JSON. Output keeps the city page in sourcePageUrl and records the endpoint in sourceApiUrl. If that API chain is also unavailable, browserFallback starts one bounded Playwright session, reuses it for listing and optional menu pages, blocks images/fonts/media, and closes it at the end of the run. Set it to false to disable only this final browser fallback.
For deterministic local QA, fixtureFile may point to an HTML file inside this Actor directory. Fixture mode never makes a network request and is not intended to bypass Swiggy access controls.
Output
Restaurant records contain the public ID, name, canonical URL, city, locality, cuisines, pricing, ratings, delivery estimates, availability, badges, offers, image, and optional menu categories. Each normal record includes source, provenance, sourcePageUrl, rank, and scrapedAt; transport and extraction-stage metadata is retained only in the KVS summary.
If Swiggy returns a challenge, access-control response, non-success response, or no usable restaurant evidence, the dataset contains exactly four diagnostic fields: url, error, errorCode, and scrapedAt; the run still writes OUTPUT. Optional menu failures keep the restaurant with a source-backed menuError; run status remains in OUTPUT.
OUTPUT is a key-value run summary with counts, options, city, fixture mode, and overall status.
Local checks
npm ci --ignore-scriptsnpm testnpm run lintnpm run schemaapify run --purge --input-file .actor/input.jsonnpm run validate
The checked-in input is offline and reproducible. Remove fixtureFile for a live public probe. The Actor does not log in, place orders, spoof fingerprints, solve CAPTCHA, bypass access controls, or access account data.
Cloud checks
apify push --wait-for-finish 600 --jsonapify call <actor-id> --input '{"city":"Chennai","maxItems":2,"getMenus":false,"browserFallback":true,"timeoutSecs":15}' --memory 512 --timeout 120 --json
Keep cloud validation inputs bounded. Inspect the returned default dataset rather than relying only on the run status.
Disclaimer
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 fields and URLs may change.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.