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
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Collect source-backed public Swiggy food-delivery restaurant listings for an Indian city. The Actor tries bounded direct HTTPS first, then Swiggy's public location and restaurant-listing JSON endpoints, and finally one reusable Playwright browser session only when both faster paths are unavailable. Each row keeps the public restaurant identity, locality, cuisines, cost, ratings, delivery estimate, badges, offers, image, optional menu data, and provenance.
Get started
- Open the Actor Store page and select Try for free or open the Input tab.
- Enter an Indian city in
city, then setmaxItemsfor the number of restaurants you need. - Keep
getMenusdisabled for a fast listing-only run. Enable it only when you need public menu categories, add-ons, or variants. - Start the Actor, open the dataset, and export the saved records as JSON, CSV, or Excel. Open Run summary (
OUTPUT) to check the outcome and counts.
Input
city is required; the other fields are optional and use the defaults below. Unsupported field names and out-of-range values are rejected before requests start.
| Field | Type | Required? | Default | Meaning |
|---|---|---|---|---|
city | string | Required | chennai | Indian city name used to build Swiggy's public city page and resolve the public listing location, from 2 to 101 characters. |
maxItems | integer | Optional | 10 | Maximum source-backed restaurants to save, from 1 to 100. |
getMenus | boolean | Optional | true | Fetch a public restaurant page when menu data is not embedded in the listing response. |
getAddons | boolean | Optional | true | Include source-backed menu add-on groups when a menu is available. |
getVariants | boolean | Optional | true | Include source-backed menu variants when a menu is available. |
browserFallback | boolean | Optional | true | Allow one bounded reusable Playwright session when direct HTTPS returns a stripped or blocked public page. |
timeoutSecs | integer | Optional | 30 | Timeout for each bounded public HTTPS request, from 5 to 120 seconds. |
Default input:
{"city": "chennai","maxItems": 10,"getMenus": true,"getAddons": true,"getVariants": true,"browserFallback": true,"timeoutSecs": 30}
The Actor reads public data from Swiggy. Browser fallback is bounded by the selected limits.
Output
The dataset contains one row per saved restaurant. Optional information appears only when the source publishes it; missing values are omitted rather than inferred. No diagnostic or placeholder rows are written.
| Field | Type | Availability | Meaning |
|---|---|---|---|
recordType | string enum | Always | Row discriminator; always swiggyRestaurant. |
restaurantId | string | Always | Swiggy restaurant identifier. |
name | string | Always | Public restaurant name. |
restaurantUrl | string | Always | Canonical public Swiggy restaurant URL. |
city | string | Always | Normalized city used for the listing. |
locality | string | When published | Public locality label for the outlet. |
areaName | string | When published | Public area label when it differs from the locality. |
cuisines | string array | When published | Public cuisine labels. |
costForTwo | string | When published | Public cost-for-two value, such as ₹300 for two. |
costForTwoMessage | string | When published | Public cost-for-two display text when present. |
rating | number | When published | Numeric public rating. |
ratingDisplay | string | When published | Rating as displayed by Swiggy. |
ratingsCount | number | When published | Parsed public rating count. |
ratingsCountDisplay | string | When published | Rating count as displayed, such as 54K+. |
deliveryTimeMinutes | number | When published | Parsed delivery estimate in minutes. |
deliveryTimeDisplay | string | number | When published | Delivery estimate as displayed, such as 25-30 mins. |
lastMileTravelKm | number | When published | Public last-mile distance in kilometres. |
deliveryFee | number | When published | Parsed public delivery fee when the listing exposes one. |
deliveryFeeDisplay | string | When published | Delivery fee as displayed. |
availability | boolean | When published | Whether the listing says the restaurant is open. |
availabilityMessage | string | When published | Public availability message, such as a closed or timing note. |
isOpen | boolean | When published | Public open-state flag. |
isVeg | boolean | When published | Public pure-vegetarian flag. |
badges | object | When published | Public listing badge tree, including image-based award badges. |
offers | array | When published | Public listing offer labels or objects. |
imageUrl | string | When published | Public restaurant image URL. |
menuCategories | array | When getMenus is enabled and a public menu is available | Public menu categories and items. |
source | string | Always | Source host; swiggy.com. |
provenance | string | Always | Source route that produced the row; for the saved row, food_getListing. |
sourcePageUrl | string | Always | Public Swiggy city page used for the run. |
sourceApiUrl | string | When the public JSON route is used | Public listing API URL including coordinates and page type. |
sourceUrl | string | When returned | Requested public URL alias when a source route provides one; the saved JSON-route row uses sourcePageUrl and sourceApiUrl instead. |
rank | integer | Always | One-based position in the listing result. |
scrapedAt | string | Always | Time the record was written, in ISO UTC. |
Saved rows also include four fields that are present in both archived rows but are not declared in the dataset schema: status (success for saved rows), dataAvailable (true), sourceTransport (such as swiggy_public_api), and extractionMethod (such as dapi_restaurants_list_v5). They describe the row's transport and are shown in the example below.
The example below is a complete saved row from the 2026-08-30 run, including the observed transport fields.
{"recordType": "swiggyRestaurant","status": "success","dataAvailable": true,"restaurantId": "16543","name": "A2B - Adyar Ananda Bhavan","restaurantUrl": "https://www.swiggy.com/city/chennai/a2b-adyar-ananda-bhavan-purasavakkam-purasaiwakkam-rest16543","city": "chennai","locality": "Purasavakkam","areaName": "Purasaiwakkam","cuisines": ["South Indian","Sweets","Chinese"],"costForTwo": "₹300 for two","rating": 4.6,"ratingDisplay": "4.6","ratingsCount": 54000,"ratingsCountDisplay": "54K+","deliveryTimeMinutes": 25,"deliveryTimeDisplay": "25-30 mins","lastMileTravelKm": 3,"availability": true,"isOpen": true,"isVeg": true,"badges": {"entityBadges": {"imageBased": {"badgeObject": [{"attributes": {"description": "Top-rated for Indian Sweets, based on user votes.","imageId": "brand_cards/Badges%202026/57_Best%20in%20Indian%20Sweets2026.png"}},{"attributes": {"description": "Top-rated for Snacks, based on user votes.","imageId": "brand_cards/Badges%202026/77_Best%20in%20Snacks2026.png"}},{"attributes": {"description": "Top-rated for Corporate, based on user votes.","imageId": "brand_cards/Badges%202026/85_Best%20in%20Corporate2026.png"}},{"attributes": {"description": "Top-rated for South Indian Meals, based on user votes.","imageId": "brand_cards/Badges%202026/98_Best%20in%20South%20Indian%20Meals2026.png"}},{"attributes": {"description": "Top-rated for South Indian Tiffins, based on user votes.","imageId": "brand_cards/Badges%202026/99_Best%20in%20South%20Indian%20Tiffins2026.png"}},{"attributes": {"description": "Top-rated for South Indian, based on user votes.","imageId": "Rxawards/_CATEGORY-South%20Indian.png"}}]}}},"offers": [{"header": "ITEMS","subHeader": "AT ₹39","logoCtx": {"text": "BENEFITS"}}],"imageUrl": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2026/8/27/5fe492e3-10f7-4abf-8e07-175b494cb308_16543.JPG","source": "swiggy.com","provenance": "food_getListing","sourcePageUrl": "https://www.swiggy.com/city/chennai/order-online","sourceApiUrl": "https://www.swiggy.com/dapi/restaurants/list/v5?lat=13.0697174&lng=80.2432839&is-seo-homepage-enabled=true&page_type=DESKTOP_WEB_LISTING","sourceTransport": "swiggy_public_api","extractionMethod": "dapi_restaurants_list_v5","scrapedAt": "2026-08-30T02:36:17.570Z","rank": 1}
Run summary
Run summary is stored separately from the dataset in the run's key-value store under OUTPUT, with counts and transport details.
| Field | Meaning |
|---|---|
recordType | Summary discriminator; runSummary. |
status | Run outcome. The archived example records success; current builds write SUCCEEDED or FAILED in the same field. |
dataAvailable | Whether at least one restaurant row was saved. |
actor | Actor slug; swiggy-delivery-scraper. |
city | Requested city. |
citySlug | Normalized city slug used in Swiggy URLs. |
requestedMaxItems | Restaurant limit requested for the run. |
getMenus | Whether public menu fetching was enabled. |
getAddons | Whether menu add-on groups were requested. |
getVariants | Whether menu variants were requested. |
browserFallback | Whether the bounded browser fallback was allowed. |
browserFallbackUsed | Whether the run actually launched the browser fallback. |
publicApiUsed | Whether the listing came from Swiggy's public JSON API. |
itemsStored | Restaurant rows saved. |
menuFailureCount | Restaurant menu requests that failed after a listing row was saved. |
diagnosticCount | Operational issues recorded for the run. |
blockedCount | Blocked or access-boundary responses. |
errorCount | Request or parse errors. |
fixtureMode | Whether a bundled QA fixture was used instead of the live source. |
source | Source host; swiggy.com. |
provenance | Listing route label. |
scrapedAt | Time the summary was written, in ISO UTC. |
Current builds also write runStatus, dataStatus, recordsStored, dataRecordCount, noResultsCount, and generatedBy; the archived summary below predates them.
| Status | Meaning |
|---|---|
SUCCEEDED | Current builds: the run completed and at least one row was saved, or the source completed cleanly with no results. The archived example records the older lowercase success. |
FAILED | A fatal error occurred before any usable restaurant row was saved. |
Example OUTPUT from the saved run:
{"recordType": "runSummary","status": "success","dataAvailable": true,"actor": "swiggy-delivery-scraper","city": "chennai","citySlug": "chennai","requestedMaxItems": 2,"getMenus": false,"getAddons": false,"getVariants": false,"browserFallback": false,"browserFallbackUsed": false,"publicApiUsed": true,"itemsStored": 2,"menuFailureCount": 0,"diagnosticCount": 0,"blockedCount": 0,"errorCount": 0,"fixtureMode": false,"source": "swiggy.com","provenance": "public_food_getListing","scrapedAt": "2026-08-30T02:36:17.586Z"}
Coverage and limitations
The Actor reads public data from Swiggy for one city per run. If the city page is stripped without an access-control or challenge response, it resolves the city through Swiggy's public location endpoints and requests the public restaurant-listing JSON. If that route is also unavailable, browserFallback starts one bounded Playwright session, reuses it for the listing and optional menu pages, blocks images, fonts, and media, and closes it at the end of the run.
getMenus controls whether a public restaurant page is fetched when menu data is not embedded in the listing. getAddons and getVariants affect only rows where a menu is available; they do not cause extra requests on their own. menuCategories can be absent even when getMenus is enabled. Ratings, fees, availability, badges, and offers are point-in-time values. Optional fields are omitted when Swiggy does not publish them; values are not inferred. Blocked, empty, or partial responses are reported in OUTPUT rather than written as data rows.
Usage and support
Cost depends on Apify compute, the number of listing requests, and optional menu-page and browser work. Enabling getMenus adds up to one public restaurant-page request per saved restaurant; leaving it off is faster. Start with small limits, inspect the dataset and OUTPUT, then scale. See the Actor's Pricing tab for current account rates.
Use the Actor Issues page to report a problem. Include the run ID, the input used, and the OUTPUT summary; do not include tokens, cookies, or private data. This Actor is not affiliated with Swiggy. Use it only for public data and in accordance with the source's terms, robots guidance, and applicable law. Public pages can contain personal information; use the output only for lawful purposes.