swiggy-instamart.collection.products.list
List the priced SKU packs in an Instamart collection for a delivery location and follow the returned cursor.
At a glance
- Endpoint ID
swiggy-instamart.collection.products.list- Price
- 1 credit per call; failed calls are free
- Runs for up to
- 120 seconds
Request
Send the endpoint ID as capability and its fields as input. Set UPSCRAPE_API_KEY to your key first.
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.collection.products.list", "input": { "collection_id": "387094", "lat": 12.9716, "lng": 77.5946 }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "swiggy-instamart.collection.products.list", "input": { "collection_id": "387094", "lat": 12.9716, "lng": 77.5946 }}''')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.collection.products.list", "input": { "collection_id": "387094", "lat": 12.9716, "lng": 77.5946 }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
Input
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
collection_id |
string | one of | Numeric Instamart collection ID, as in the collectionId of a collection link | 387094 |
collection_url |
string | one of | Instamart collection link: www.swiggy.com/instamart/collection-listing, instamart.in/collection-listing share link or swiggy://stores/instamart/collection-listing deep link. Its storeId is ignored; the delivery location selects the store | |
lat |
number | one of | Delivery latitude in decimal degrees, with lng From -90 to 90. | 12.9716 |
lng |
number | one of | Delivery longitude in decimal degrees, with lat From -180 to 180. | 77.5946 |
pincode |
string | one of | 6-digit Indian PIN code of the delivery location; takes precedence over lat/lng | |
offset |
string | no | reuse it unchanged with the same collection, location and store_id | |
store_id |
string | no | Optional expected store ID. Instamart picks the store from the delivery location; a different serving store is rejected rather than silently substituted |
Response
A finished call answers with HTTP 200; the data is in results[0].data, and billing.credits_charged is what it cost. A call still running after the wait answers 202: see jobs and results.
This is results[0].data from a real run:
{ "collection_title": "Furnofy", "pagination_status": "continuation_available", "store_id": "1313712", "products": [ { "name": "Furnofy Cotton Double Flat Bedsheet with 2 Pillow Covers (120GSM, Geometric, Multicolor)", "mrp": "1999", "rating": "4.3", "rating_value": 4.3, "brand": "Furnofy", "category": "Linen and Furnishing", "discount": "1760", "discount_label": "88% OFF", "discount_paise": 176000, "id": "B2OYXN98BS", "in_stock": true, "max_per_order": 3, "mrp_paise": 199900, "offer_price": "239", "offer_price_paise": 23900, "position": 1, "product_url": "https://www.swiggy.com/instamart/item/B2OYXN98BS", "quantity": "1 pack", "rating_count": "2.7k", "result_type": "match", "sku": "TR26IZU1D1", "source_widget_type": "type.googleapis.com/swiggy.im.v1.ItemCollectionCard", "store_id": "1313712" }, { "name": "Furnofy King Reversible AC Comforter/Dohar (All Weather, Microfiber, 240 GSM, Abstract, Grey)", "mrp": "3999", "rating": "4.3", "rating_value": 4.3, "brand": "Furnofy", "category": "Linen and Furnishing", "discount": "2841", "discount_label": "71% OFF", "discount_paise": 284100, "id": "7X3RNFAM32", "in_stock": true, "max_per_order": 6, "mrp_paise": 399900, "offer_price": "1158", "offer_price_paise": 115800, "position": 2, "product_url": "https://www.swiggy.com/instamart/item/7X3RNFAM32", "quantity": "1 Piece", "rating_count": "238", "result_type": "match", "sku": "Q9XU9S92TW", "source_widget_type": "type.googleapis.com/swiggy.im.v1.ItemCollectionCard", "store_id": "1313712" } ], "secondary_store_ids": [ "1403020" ]}
Fields
| Field | Type | What it is | Example |
|---|---|---|---|
products[].name |
string | Product or category name as Instamart returns it. | Furnofy Cotton Double Flat Bedsheet with 2 Pillow Covers (120GS… |
products[].mrp |
string | 1999 | |
products[].rating |
string | 4.3 | |
products[].rating_value |
number | 4.3 | |
products[].brand |
string | Furnofy | |
products[].category |
string | Linen and Furnishing | |
products[].discount |
string | 1760 | |
products[].discount_label |
string | 88% OFF | |
products[].discount_paise |
integer | 176,000 | |
products[].id |
string | Category identifier returned by the category list. | B2OYXN98BS |
products[].in_stock |
boolean | Availability reported for this pack at this store. An absent value is unknown. | true |
products[].max_per_order |
integer | 3 | |
products[].mrp_paise |
integer | MRP in integer paise where known. | 199,900 |
products[].offer_price |
string | 239 | |
products[].offer_price_paise |
integer | Selling price in integer paise; divide by 100 for rupees. Missing means unknown. | 23,900 |
products[].position |
integer | Rank assigned only to search match rows, not every returned row. | 1 |
products[].product_url |
string | https://www.swiggy.com/instamart/item/B2OYXN98BS | |
products[].quantity |
string | Pack size text; compare equivalent packs. | 1 pack |
products[].rating_count |
string | 2.7k | |
products[].result_type |
string | Kind of search row: a match, a promoted row, a sold-out group or other. | match |
products[].sku |
string | TR26IZU1D1 | |
products[].source_widget_type |
string | type.googleapis.com/swiggy.im.v1.ItemCollectionCard | |
products[].store_id |
string | Store serving this location. | 1313712 |
collection_title |
string | Furnofy | |
pagination_status |
string | continuation_available | |
products |
array | 3 records | |
secondary_store_ids |
array | 1403020 | |
store_id |
string | Store serving this location. | 1313712 |
If a call fails
A failed call costs nothing. The response carries an error.code you can branch on; Errors and retries lists every code and which ones to retry.
Other Swiggy Instamart endpoints
swiggy-instamart.categories.listCategoriesswiggy-instamart.category.products.listCategory productsswiggy-instamart.etaDelivery ETAswiggy-instamart.home.listHome productsswiggy-instamart.location.resolveResolve locationswiggy-instamart.location.serviceabilityResolve serviceabilityswiggy-instamart.location.suggestSuggest locationsswiggy-instamart.product.getProductswiggy-instamart.products.searchProducts searchswiggy-instamart.search.suggestionsSuggestions search
Something missing or unclear? Ask the team that builds the Swiggy Instamart endpoints.