Swiggy Instamart Home Products API
Get products currently shown on the Instamart home feed for a pincode or coordinates, with pagination.
- 1 credit per call
- Failed calls are free
- Updated
- swiggy-instamart.home.list
{ "next_offset": "imh1.eyJ2IjoxLCJzY29wZSI6Ijc0MTRkY2IxYzRkYTRlYmQ5ZjYzMTZjZjhhMWYxMGQyNzRkOWM2MzE1MWNlODRhMDIwNmMwNmI0OTlhNWZmY2UiLCJzdG9yZSI6IjEzOTYyODQiLC…", "products": [ { "name": "Go Zero Mad Over Mango Guilt Free Ice Cream Tub", "mrp": "380", "rating": "4.1", "rating_value": 4.1, "brand": "Go Zero", "category": "Ice Creams", "discount": "190", "discount_label": "50% OFF", "discount_paise": 19000, "id": "1L3QNYR63I", "image": "NI_CATALOG/IMAGES/CIW/2025/11/28/ac126c47-2a90-48ca-ade1-d56bedc62ff0_326419_1.png", "image_url": "https://instamart-media-assets.swiggy.com/swiggy/image/upload/fl_lossy,f_auto,q_auto/NI_CATALOG/IMAGES/CIW/2025/11/28/ac126c47-2a90-48ca-ad…", "in_stock": true, "max_per_order": 1, "mrp_paise": 38000, "offer_price": "190", "offer_price_paise": 19000, "product_url": "https://www.swiggy.com/instamart/item/1L3QNYR63I", "quantity": "500 ml", "rating_count": "3.1k", "sku": "82BFA0I6IJ", "store_id": "1396284" }, { "name": "The Brooklyn Creamery Chocolate Fudge Brownie Ice Cream Tub", "mrp": "349", "rating": "3.7", "rating_value": 3.7, "brand": "The Brooklyn Creamery", "category": "Ice Creams", "discount": "14", "discount_label": "4% OFF", "discount_paise": 1400, "id": "25JSNA1XIV", "image": "NI_CATALOG/IMAGES/ciw/2026/5/22/30b6abb2-fd18-467c-b058-b4fa4147757d_1_MN_bdffee6f-39a7-4c7d-bc3e-a58f067c4c4f.png", "image_url": "https://instamart-media-assets.swiggy.com/swiggy/image/upload/fl_lossy,f_auto,q_auto/NI_CATALOG/IMAGES/ciw/2026/5/22/30b6abb2-fd18-467c-b05…", "in_stock": true, "max_per_order": 1, "mrp_paise": 34900, "offer_price": "335", "offer_price_paise": 33500, "product_url": "https://www.swiggy.com/instamart/item/25JSNA1XIV", "quantity": "450 ml", "rating_count": "325", "sku": "VKY9QGGD7R", "store_id": "1396284" } ]}
| # | Product | Pack | Price (paise) | MRP (paise) | In stock | Store | Mrp | Rating | Rating value | Brand |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Go Zero Mad Over Mango Guilt Free Ice Cream Tub | 500 ml | 19,000 | 38,000 | true | 1396284 | 380 | 4.1 | 4.1 | Go Zero |
| 2 | The Brooklyn Creamery Chocolate Fudge Brownie Ice Cream Tub | 450 ml | 33,500 | 34,900 | true | 1396284 | 349 | 3.7 | 3.7 | The Brooklyn Creamery |
| 3 | Go Zero Only Vanilla Guilt Free Ice Cream Tub | 1 ltr | 21,200 | 24,900 | true | 1396284 | 249 | 4.3 | 4.3 | Go Zero |
| 4 | Go Zero Simply Sitaphal Guilt Free Ice Cream Tub | 500 ml | 26,600 | 38,000 | true | 1396284 | 380 | 4.0 | 4 | Go Zero |
| 5 | The Brooklyn Creamery Holy Moly Mango Ice Cream Tub | 450 ml | 33,500 | 34,900 | true | 1396284 | 349 | 3.3 | 3.3 | The Brooklyn Creamery |
| 6 | NIC Ice Cream Mango Ice Cream Tub | 500 ml | 34,900 | 37,500 | true | 1396284 | 375 | 4.1 | 4.1 | NIC Ice Cream |
| 7 | HANGYO Sitaphal Tub | 125 ml x 2 | 6400 | 10,000 | true | 1396284 | 100 | 4.0 | 4 | HANGYO |
| 8 | HANGYO Sitaphal Tub | 125 ml | 3200 | 5000 | true | 1396284 | 50 | 4.0 | 4 | HANGYO |
| 9 | Go Zero Belgian Dark Chocolate Guilt Free Ice Cream Tub | 500 ml | 26,600 | 38,000 | true | 1396284 | 380 | 4.2 | 4.2 | Go Zero |
| 10 | The Brooklyn Creamery Healthy Ice Cream Low Calories The Og Van… | 55 ml | 8000 | 8500 | true | 1396284 | 85 | 3.9 | 3.9 | The Brooklyn Creamery |
What you send
The input
object of the request, with every field the endpoint accepts.
- Send a pincode or latitude and longitude together; a store ID alone is not enough for the home feed. If you add a store ID, the feed is read from that store and every row is checked against it.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| lat | number | one of | Delivery latitude in decimal degrees From -90 to 90. | |
| lng | number | one of | Delivery longitude in decimal degrees From -180 to 180. | |
| pincode | string | one of | Postal code (PIN) that sets the delivery location. | 560034 |
| layout_id | string | no | Layout identifier. | |
| offset | Not specified | no | legacy non-negative numeric offsets remain accepted | |
| primary_store_id | string | no | Optional primary store ID from the location-specific Instamart session | |
| secondary_store_id | string | no | Optional secondary store ID observed for the location-specific Instamart session | |
| store_id | string | no | Optional store ID from the location-specific Instamart session |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| products[].name | string | Product or category name as Instamart returns it. | Go Zero Mad Over Mango Guilt Free Ice Cream Tub |
| products[].quantity | string | Pack size text; compare equivalent packs. | 500 ml |
| products[].offer_price_paise | integer | Selling price in integer paise; divide by 100 for rupees. Missing means unknown. | 19,000 |
| products[].mrp_paise | integer | MRP in integer paise where known. | 38,000 |
| products[].in_stock | boolean | Availability reported for this pack at this store. An absent value is unknown. | true |
| products[].store_id | string | Store serving this location. | 1396284 |
| products[].mrp | string | Maximum retail price printed on the pack, in rupees. | 380 |
| products[].rating | string | The product's rating. | 4.1 |
| products[].rating_value | number | The rating as a number. | 4.1 |
| products[].brand | string | The brand on the listing. | Go Zero |
| products[].category | string | The product's category, such as Vegetables. | Ice Creams |
| products[].discount | string | The discount, in rupees. | 190 |
| products[].discount_label | string | The discount label, such as 21% OFF. | 50% OFF |
| products[].discount_paise | integer | The discount, in paise. | 19,000 |
| products[].id | string | Category identifier returned by the category list. | 1L3QNYR63I |
| products[].image | string | Instamart's image reference. | NI_CATALOG/IMAGES/CIW/2025/11/28/ac126c47-2a90-48ca-ade1-d56bed… |
| products[].image_url | string | Link to the product image. | https://instamart-media-assets.swiggy.com/swiggy/image/upload/f… |
| products[].max_per_order | integer | The most of this product one order can hold. | 1 |
| products[].offer_price | string | The price you pay now, in rupees. | 190 |
| products[].product_url | string | Link to the product on Instamart. | https://www.swiggy.com/instamart/item/1L3QNYR63I |
| products[].rating_count | string | How many ratings, as Instamart shows it. | 3.1k |
| products[].sku | string | Instamart's stock code for the product. | 82BFA0I6IJ |
| next_offset | string | Send it back to get the next page. | imh1.eyJ2IjoxLCJzY29wZSI6Ijc0MTRkY2IxYzRkYTRlYmQ5ZjYzMTZjZjhhMW… |
| products | array | The products returned. | 36 records |
What this endpoint covers
- Do price sums with the offer price, MRP and discount in paise, and divide by 100 to show rupees. A missing amount stays unknown, and a real zero stays zero. Compare the same SKU and pack size, and read stock apart from price.
- Send the next-page value back unchanged with the same pincode or coordinates and any store or layout you set. An empty page can still lead to more. The response says whether paging was complete; a limited or unknown answer does not mean you have the whole feed.
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-instamart.home.list", "input": { "pincode": "560034" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "swiggy-instamart.home.list", "input": { "pincode": "560034" }}''')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-instamart.home.list", "input": { "pincode": "560034" }}),});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
Using Upscrape, list Instamart home products at PIN 560034. Show the returned product, pack, price, MRP and discount labels. Describe this as the home feed at that PIN, not every offer in the catalogue.
More from the Swiggy Instamart API
- Swiggy Instamart Products Search API1 credit
- Swiggy Instamart Product API1 credit
- Swiggy Instamart Categories API1 credit
- Swiggy Instamart Category Products API1 credit
- Swiggy Instamart Suggestions Search API1 credit
- Swiggy Instamart Suggest Locations API1 credit
- Swiggy Instamart Resolve Location API1 credit
- Swiggy Instamart Resolve Serviceability API1 credit
- Swiggy Instamart Delivery ETA API1 credit
The same data from other platforms
Swiggy Instamart Home Products API FAQ
The short answers. The docs have the long ones.
How much does the Swiggy Instamart Home Products 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 lat or lng or pincode. The input fields below list every option with its type and limits.
Do I need a Swiggy Instamart login?
No. It reads public Swiggy Instamart data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds swiggy-instamart.home.list, checks its price and runs it with the same credits as the REST API.
Your first Swiggy Instamart call is free.
Up to 100 free credits to start, no card needed.