Swiggy Instamart Catalogue by Location
Under maintenancePricing
from $2.50 / 1,000 results
Swiggy Instamart Catalogue by Location
Under maintenanceEvery Swiggy Instamart product for a delivery location: category → subcategory → products with price, MRP, discount, in-stock state, purchase cap and a sponsored/ad flag.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
AtTheRate AI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Pulls the whole Swiggy Instamart storefront for an Indian pincode: every category, every subcategory, every product, with price, MRP, discount, in-stock state, the per-order purchase cap and a sponsored flag. Instamart stocks and prices per dark store, so the catalogue you get is the one a shopper at that pincode sees.
What you get
- Full tree walk across roughly 35 top-level categories, with
category,subcategory,subcategory_id,pageandposition. - Price economics per product:
price,mrp,discount_amountanddiscount_percent. - Availability and purchase limits:
in_stock,low_stock_textandmax_quantity. - A sponsored flag on every row:
is_adis true where Instamart attaches ad tracking to the tile. - Identity and store context for joining:
product_id,sku,name,brand,pack,image_url,store_id,pod_idandstore_address. - Location honesty: a pincode Instamart does not serve produces a warning and zero rows, never a default store's catalogue under the wrong label.
Input
Give one or more Indian pincodes. Everything else narrows the crawl.
{"pincodes": ["122002"],"categoryFilter": ["fruit"],"maxSubcategoriesPerCategory": 1,"delayMs": 1000,"callsPerSession": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "IN"}}
pincodes: 6-digit Indian pincodes, for example122002.categoryFilter: only categories whose name contains one of these strings, case-insensitive. Empty means all, around 35.maxSubcategoriesPerCategory: 0 means all.subcategoriesnarrows further by name or id.proxyConfiguration: residential country IN is the default and is required in practice.
Output
One row per product, per subcategory, per location. The run above returned 126 rows, 3 of them sponsored.
{"location_label": "Gurgaon-DLF","store_id": "1394451","category": "Fresh Fruits","subcategory": "Fresh Fruits","position": 1,"product_id": "XC3J58DTKQ","name": "Crunchy Shimla Apple (Seb)","brand": "Fruits and Vegetables","pack": "2 Pieces x 2","mrp": 212,"price": 168,"discount_amount": 44,"discount_percent": 21,"in_stock": true,"low_stock_text": null,"max_quantity": 1,"is_ad": true,"fetched_at": "2026-09-11T09:01:18.792Z"}
rating and rating_count are null on listing tiles: Instamart does not put ratings there. low_stock_text is null unless the app shows a low-stock nudge, and store_address is often empty.
Use cases
- Per-store price and discount tracking with
price,mrpanddiscount_percentacross pincodes. - Ad-slot share of voice: count
is_adrows bybrandinside a subcategory and track it daily. - Out-of-stock monitoring from
in_stock, withlow_stock_textas an early warning. - Assortment gaps by comparing the
product_idandskusets between cities.
Notes and limits
- An Indian residential proxy is required. Swiggy's protection layer refuses non-Indian, datacenter and flagged exits, and some residential pools are refused outright. When a pool is rejected the actor retries on fresh exits three times, then reports that location as failed with the reason rather than inventing rows.
- Sessions degrade after roughly 70 rapid calls, first serving empty pages and then a block page.
delayMsdefaults to 1000 andcallsPerSessionto 50 so the actor re-mints first. - Instamart occasionally serves an empty page to a perfectly good fresh session. The actor retries three times before giving up on that location.
- Exact coordinates can be supplied instead of pincodes through the advanced
locationsfield.
FAQ
Do I need a proxy? Yes. Use a residential proxy in India, which is the default. Some Indian residential pools are still refused by the site, in which case the run reports the block plainly instead of returning partial data.
How many results can I get? The whole store. One verified run returned 126 products from a single filtered subcategory; clear the filters for full coverage.
Does it need login or an API key? No. No Swiggy account or key of your own is required.
How is sponsored detected? is_ad is set when the product tile carries Instamart's own ad tracking context, which is the same signal the app uses to bill the placement.