Swiggy API endpoint
Returns one Swiggy restaurant's detail by id: name, city, area, address, postal code, coordinates, phone, cuisines, cost for two, rating and total rating count, delivery time, weekly opening hours with the current open/closed callout, plus the promotions Swiggy currently shows on that restaurant's page (headline discount, conditions, and coupon code when one is needed). Swiggy has no lighter restaurant-detail-only source -- this reads the same upstream as /swiggy/restaurant/menu, just without the menu items.
/swiggy/restaurantSwiggy has no lighter restaurant-detail-only source: this reads the same upstream as /swiggy/restaurant/menu (which needs a browser render fleet to clear an AWS WAF challenge), just without the menu items.
Query parameters:
restaurant_id (required) — restaurant id, from /swiggy/search's id field, e.g. 5938.latitude (required) — caller latitude. Required by Swiggy's own menu API, e.g. 12.9716.longitude (required) — caller longitude. Required by Swiggy's own menu API, e.g. 77.5946.Response includes restaurant and offers[].
restaurant: id, name, city, locality, area, address, postal_code, latitude, longitude, phone, cuisines[], cost_for_two (a display string), rating, rating_count (a display string, e.g. "14K+ ratings"), total_ratings (the same count as a number), delivery_time_minutes, is_open, hours_status and hours_message (Swiggy's own live callout, e.g. Open now / Closes 11:30 pm), opening_hours[] (one entry per weekday, each with day and a free-text hours window that can carry more than one range, e.g. "Midnight - 2.00AM, 11.00AM - Midnight"), and image_url.
offers[]: the promotions Swiggy currently shows on that restaurant's page. Each has title (the headline discount), description (its conditions), coupon_code (present only when the offer needs a code entered), and tag (Swiggy's own badge for the offer, e.g. DEAL OF DAY, FLAT DEAL). An empty array means the restaurant currently has no promotions.
external_rating is not returned here — Swiggy's restaurant-detail upstream does not carry it. It is available on /swiggy/search results.
| Field | Filled in, of 7 checked | Values in the sample |
|---|---|---|
| day | 7 | “Monday” and 6 other values |
| hours | 7 | Midnight - 5.00AM, 11.00AM - Mi… in all 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| restaurant_id | string | Yes | Restaurant id, from /swiggy/search's id field | 5938 | |
| latitude | number | Yes | Caller latitude (required by Swiggy's own menu API) | 12.9716 | |
| longitude | number | Yes | Caller longitude (required by Swiggy's own menu API) | 77.5946 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/swiggy/restaurant?restaurant_id=5938&latitude=12.9716&longitude=77.5946" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"restaurant": {
"id": "5938",
"name": "Burger King",
"city": "Bangalore",
"locality": "Tasker Town",
"area": "Shivaji Nagar",
"address": "Burger King, 942, SV Tower, 16th Main, BTM 2nd Stage, 560076",
"postal_code": "560076",
"latitude": 12.91473786,
"longitude": 77.61010738,
"phone": "9711019252",
"cuisines": [
"Burgers",
"American"
],
"cost_for_two": "₹350 for two",
"rating": 4.1,
"rating_count": "41K+ ratings",
"total_ratings": 41000,
"delivery_time_minutes": 33,
"is_open": true,
"hours_status": "Open now",
"hours_message": "Closes 12:00 am",
"opening_hours": [
{
"day": "Monday",
"hours": "11.00AM - Midnight"
}
],
"image_url": "https://media-assets.swiggy.com/swiggy/image/upload/fl_lossy,f_auto,q_auto/RX_THUMBNAIL/IMAGES/VENDOR/2025/6/18/b88fe4d2-557a-42a5-a801-a43a40134004_5938.jpg"
},
"offers": [
{
"title": "FLAT ₹200 OFF",
"description": "ABOVE ₹1299",
"coupon_code": "USE CELEBRATIONS",
"tag": "FLAT DEAL"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/swiggy.restaurantResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | swiggy.RestaurantResponse | No | ||||
| data.offers | array | No | ||||
| data.offers[].coupon_code | string | No | ||||
| data.offers[].description | string | No | ||||
| data.offers[].tag | string | No | ||||
| data.offers[].title | string | No | ||||
| data.restaurant | swiggy.Restaurant | No | Restaurant record, 46 fields: address, area, city, cost_for_two, cuisines, delivery_time_minutes, dishes, external_rating, hours_message, hours_status, id, image_url and 14 more. Described under Swiggy Search API. | |||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/swiggy/restaurant?restaurant_id=5938&latitude=12.9716&longitude=77.5946" \
-H "x-api-key: $CRAWLORA_API_KEY"