swiggy_search
Find nearby Swiggy restaurants by location, search dishes or cuisines, browse curated collections, and retrieve ratings, delivery times, costs, and offers.
Instructions
Search Swiggy restaurants near a location. Returns restaurants delivering to a latitude/longitude, optionally filtered by a keyword or browsed within a curated collection. With no query and no collection_id this browses the nearby-restaurant listing; with a query it runs a keyword search across restaurant names, cuisines, and dishes; with a collection_id (from /swiggy/collections) it browses restaurants within that curated collection. query and collection_id are mutually exclusive. Keyword search has two result tabs, selected with tab: dish (the default) returns restaurants that serve a matching dish, each with the matching dishes, their prices, and Swiggy's own per-dish rating where it has one, in a dishes array; restaurant returns restaurants whose own name or cuisine matches, a wider set with no dishes. tab, veg, min_rating and offers are only valid together with query. sort works with either query (relevance, delivery_time, rating) or collection_id (those three plus cost_low_to_high and cost_high_to_low), and is rejected on a plain nearby browse. Each restaurant carries its id (the value the restaurant and menu endpoints take), name, cuisines, cost for two, rating, delivery time, open/closed status, a hero image, and, where one is shown, an external_rating block with the third-party aggregate score, count, and source. Where the result card advertises a promotion it also carries offers, the same title/description/tag shape /swiggy/restaurant returns (a listing card never carries a coupon code, and a card showing both a discount and a separate free-delivery benefit returns them as two entries). is_promoted is present and true only for a result Swiggy itself labels a sponsored placement rather than an organic one. unavailable_message is present only when Swiggy says the restaurant cannot currently be ordered from and carries its own reason; it is not the inverse of is_open, since Swiggy reports a restaurant as open while still refusing orders for the requested location. A plain nearby browse also returns is_serviceable, which says whether Swiggy delivers to the requested coordinates at all: false means the coordinates are outside Swiggy's delivery coverage, so the empty restaurants list is a coverage answer rather than a no-matches answer, while an empty list without the field means no matches in a served area. It is omitted on keyword search and on a collection_id browse, neither of which carries Swiggy's own coverage marker.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | Which keyword-search result tab to read: dish (default, restaurants serving a matching dish, each with a dishes array) or restaurant (restaurants whose own name/cuisine matches). Only valid together with query. | |
| veg | No | Only return vegetarian results: veg dishes on tab=dish, pure-veg restaurants on tab=restaurant. Only valid together with query. | |
| sort | No | Optional sort order. With query: relevance, delivery_time, rating. With collection_id: those three plus cost_low_to_high and cost_high_to_low. Not valid on a plain nearby browse. | |
| query | No | Optional keyword to search restaurants and dishes by, at least 2 characters. Mutually exclusive with collection_id. | |
| offers | No | Only return restaurants currently running an offer. Only valid together with query. | |
| offset | No | Opaque pagination cursor from a prior response's next_offset (not meaningful when query is set) | |
| latitude | Yes | Search center latitude | |
| longitude | Yes | Search center longitude | |
| min_rating | No | Only return restaurants rated at or above this score (0-5). Only valid together with query. | |
| collection_id | No | Optional curated collection id from /swiggy/collections's id field. Browses restaurants within that collection instead of the plain nearby listing. Mutually exclusive with query. |