Swiggy Ads API
Which restaurants are promoted on Swiggy's listing at a location, and where each one ranks.
- 1 credit per call
- Failed calls are free
- Updated
- swiggy.ads.list
{ "summary": { "captured_at": "2026-10-12T08:48:04Z", "has_more": true, "latitude": 12.9121181, "longitude": 77.6445548, "surface": "list", "total_items": 5 }, "items": [ { "rating": 4.3, "area_name": "HSR Layout", "captured_at": "2026-10-12T08:48:04Z", "cuisines_text": "Andhra, Biryani, South Indian", "delivery_time_minutes": 33, "is_promoted": false, "latitude": 12.9121181, "locality": "Sector 2", "longitude": 77.6445548, "rank": 1, "rating_text": "4.3", "restaurant_id": "279024", "restaurant_name": "Andhra Gunpowder", "restaurant_url": "https://www.swiggy.com/city/bangalore/andhra-gunpowder-sector-2-hsr-layout-rest279024", "sla_text": "30-35 mins", "surface": "list", "total_ratings_text": "9.7K+", "cuisines": [ "Andhra", "Biryani" ] }, { "rating": 4.3, "area_name": "HSR Layout", "captured_at": "2026-10-12T08:48:04Z", "cuisines_text": "Biryani, Mughlai, Kebabs, Lucknowi, Fast Food, Desserts, Beverages", "delivery_time_minutes": 33, "is_promoted": false, "latitude": 12.9121181, "locality": "HSR Layout", "longitude": 77.6445548, "rank": 2, "rating_text": "4.3", "restaurant_id": "81642", "restaurant_name": "Aligarh House", "restaurant_url": "https://www.swiggy.com/city/bangalore/aligarh-house-hsr-layout-rest81642", "sla_text": "30-40 mins", "surface": "list", "total_ratings_text": "11K+", "cuisines": [ "Biryani", "Mughlai" ] } ]}
| # | Rank | Restaurant | Rating | Delivery time | Area name | Captured at | Cuisines text | Delivery time minutes | Is promoted | Latitude |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Andhra Gunpowder | 4.3 | 30-35 mins | HSR Layout | 2026-10-12T08:48:04Z | Andhra, Biryani, South Indian | 33 | false | 12.91 |
| 2 | 2 | Aligarh House | 4.3 | 30-40 mins | HSR Layout | 2026-10-12T08:48:04Z | Biryani, Mughlai, Kebabs, Lucknowi, Fast Food, Desserts, Bevera… | 33 | false | 12.91 |
| 3 | 3 | Paris Panini - Gourmet Sandwiches & Wraps | 4.5 | 20-25 mins | HSR | 2026-10-12T08:48:04Z | sandwich, wrap, Fast Food, Pastas, Italian, Salads, Healthy Foo… | 27 | false | 12.91 |
| 4 | 4 | California Burrito | 4.5 | 25-30 mins | HSR Layout | 2026-10-12T08:48:04Z | Mexican, American, Salads, Continental, Keto, Healthy Food, Bev… | 31 | false | 12.91 |
| 5 | 5 | Subway | 4.2 | 20-25 mins | HSR Layout | 2026-10-12T08:48:04Z | sandwich, Salads, wrap, Healthy Food | 26 | false | 12.91 |
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| latitude | number | one of | Latitude; supply together with longitude, or omit both for the default delivery area. From -90 to 90. | 12.9121181 |
| longitude | number | one of | Longitude; supply together with latitude, or omit both for the default delivery area. From -180 to 180. | 77.6445548 |
| limit | integer | no | Maximum number of results, taken from Swiggy's first listing page. | 5 |
| offset | string | no | Not supported: Swiggy serves one listing page per location, so there is no next page to continue. Omit it; any value is rejected as invalid_input. |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| items[].rank | integer | The restaurant's place in the list. | 1 |
| items[].restaurant_name | string | The restaurant's name. | Andhra Gunpowder |
| items[].is_promoted | boolean | Whether the listing is a paid promotion. | false |
| items[].rating | number | The average rating, out of 5. | 4.3 |
| items[].sla_text | string | Swiggy's delivery time estimate. | 30-35 mins |
| items[].area_name | string | The area of the restaurant. | HSR Layout |
| items[].captured_at | string | When this result was collected. | 2026-10-12T08:48:04Z |
| items[].cuisines | array | The restaurant's cuisines. | Andhra, Biryani, South Indian |
| items[].cuisines_text | string | The cuisines as one line. | Andhra, Biryani, South Indian |
| items[].delivery_time_minutes | integer | Swiggy's delivery time estimate, in minutes. | 33 |
| items[].latitude | number | Latitude. | 12.91 |
| items[].locality | string | The restaurant's locality. | Sector 2 |
| items[].longitude | number | Longitude. | 77.64 |
| items[].rating_text | string | The rating as Swiggy shows it. | 4.3 |
| items[].restaurant_id | string | Swiggy's ID for the restaurant, used by the menu endpoint. | 279024 |
| items[].restaurant_url | string | The restaurant's page on Swiggy. | https://www.swiggy.com/city/bangalore/andhra-gunpowder-sector-2… |
| items[].surface | string | list | |
| items[].total_ratings_text | string | How many ratings, as Swiggy rounds it. | 9.7K+ |
| items | array | The results. | 5 records |
| summary | object | Totals for this response. | 6 fields |
| summary.captured_at | string | When this result was collected. | 2026-10-12T08:48:04Z |
| summary.has_more | boolean | Whether more results follow this page. | true |
| summary.latitude | number | Latitude. | 12.91 |
| summary.longitude | number | Longitude. | 77.64 |
| summary.surface | string | list | |
| summary.total_items | integer | How many results this response holds. | 5 |
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "swiggy.ads.list", "input": { "latitude": 12.9121181, "limit": 5, "longitude": 77.6445548 }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "swiggy.ads.list", "input": { "latitude": 12.9121181, "limit": 5, "longitude": 77.6445548 }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "swiggy.ads.list", "input": { "latitude": 12.9121181, "limit": 5, "longitude": 77.6445548 }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
Use Upscrape to check which restaurants are promoted on Swiggy's listing in HSR Layout, Bengaluru, and where each one ranks.
More from the Swiggy API
- Swiggy All Restaurants API1 credit
- Swiggy Menu API1 credit
- Swiggy Area Restaurants API1 credit
- Swiggy Menu Items API1 credit
- Swiggy List API1 credit
- Swiggy Categories API1 credit
- Swiggy Area Menu Items Grid API1 credit
- Swiggy Area Menu Items API1 credit
- Swiggy Restaurants API1 credit
- Swiggy Dishes Search API1 credit
- Swiggy Restaurants Search API1 credit
The same data from other platforms
Swiggy Ads API FAQ
The short answers. The docs have the long ones.
How much does the Swiggy Ads API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send latitude or longitude. The input fields below list every option with its type and limits.
Do I need a Swiggy login?
No. It reads public Swiggy data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds swiggy.ads.list, checks its price and runs it with the same credits as the REST API.
Your first Swiggy call is free.
Up to 100 free credits to start, no card needed.