Swiggy APIswiggy.com ↗
Access Swiggy restaurant listings, full menus, search results, dineout details, and Instamart grocery categories via a structured JSON API.
What is the Swiggy API?
The Swiggy API exposes 6 endpoints covering food delivery restaurants, full item-level menus, keyword search, dine-in listings, and Instamart grocery categories across Indian cities. With get_restaurant_details you get every menu category, item prices, variants, and active offers for a specific restaurant. search_dineout_restaurants returns cost-for-two, average ratings, locality, and a canonical Dineout page URL for each matching result.
curl -X GET 'https://api.parse.bot/scraper/0fca980e-bb1b-497c-9e70-fe66ef61fab8/get_restaurants_by_city?lat=12.9716&lng=77.5946' \ -H 'X-API-Key: $PARSE_API_KEY'
Get list of restaurants for a given city/coordinates, including popular categories, top restaurant chains, and restaurant listings with ratings, cuisines, delivery time, and offers. Returns Swiggy's card-based response with heterogeneous widgets for the city homepage.
| Param | Type | Description |
|---|---|---|
| lat | number | Latitude of location. |
| lng | number | Longitude of location. |
{
"type": "object",
"fields": {
"data": "object containing statusMessage, pageOffset, and cards array with restaurant listings and category widgets",
"statusCode": "integer indicating success (0) or failure"
},
"sample": {
"data": {
"cards": [
{
"card": {
"card": {
"@type": "type.googleapis.com/swiggy.gandalf.widgets.v2.GridWidget",
"header": {
"title": "What's on your mind?"
}
}
}
}
],
"pageOffset": {
"nextOffset": "CJhlELQ4KID405flsYCjWjCnEzgB"
},
"statusMessage": "done successfully"
},
"statusCode": 0
}
}About the Swiggy API
Restaurant Discovery and Menus
get_restaurants_by_city accepts lat and lng coordinates and returns Swiggy's card-based layout for that location: popular category widgets, top restaurant chains, and individual restaurant listings with ratings, cuisine tags, estimated delivery time, and current offers. get_restaurant_details takes a restaurant_id (numeric string) plus optional coordinates and returns the full menu tree — grouped menu categories, individual items with prices and variants, restaurant-level offers, and both Order Online and Dineout tabs where available.
Search
search_restaurants accepts a query string (e.g. "biryani", "pizza") and coordinates, returning results split into RESTAURANT and DISH tabs. Each dish result carries item-level price and the parent restaurant's info. search_dineout_restaurants searches the dine-in surface and returns an array of restaurant objects with avg_rating, total_ratings, cost_for_two, locality, area_name, city, and a Swiggy Dineout page URL. The total_results integer tells you how many records were returned without pagination parameters.
Dineout Details and Instamart
get_dineout_restaurant_details takes a restaurant_id from dineout search results and returns structured fields: timings with a schedule array of day/hours pairs and a current open/closed status, ratings with value, description, and count, an offers array with title and description per offer, highlights, and location with formatted address, lat/lng, and area. get_instamart_categories returns grocery category groups (Fresh items, Grocery & Kitchen, etc.) for a given location, optionally scoped by store_id.
Response Shape
Most food-delivery endpoints return a statusCode integer (0 = success) alongside a data object containing a cards array. The Dineout detail endpoint is flatter, returning named top-level fields directly. All coordinate inputs (lat, lng) are optional but omitting them may reduce result relevance or return a default city's data.
The Swiggy API is a managed, monitored endpoint for swiggy.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when swiggy.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official swiggy.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a restaurant finder app showing ratings, cuisines, and delivery time for a user's coordinates
- Aggregate menu prices and item variants across multiple Swiggy restaurants for price comparison
- Track active promotional offers on restaurants by periodically calling get_restaurant_details
- Power a dine-in discovery feature using search_dineout_restaurants with cost_for_two and locality filters
- Display opening hours and current open/closed status for dineout restaurants via the timings.schedule field
- Populate a grocery category browser for Instamart using get_instamart_categories category groups
- Index dish-level search results from search_restaurants to surface specific menu items across restaurants
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.