Swiggy Food Delivery Restaurants avatar

Swiggy Food Delivery Restaurants

Pricing

from $2.99 / 1,000 restaurants

Go to Apify Store
Swiggy Food Delivery 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

w3crawler

Maintained by Community

Actor 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-scripts
npm test
npm run lint
npm run schema
apify run --purge --input-file .actor/input.json
npm 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 --json
apify 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.