Swiggy Instamart Scraper
Pricing
from $3.00 / 1,000 products
Swiggy Instamart Scraper
Track Swiggy Instamart prices and stock by location. Enter areas or PIN codes plus keywords and get one row per pack size: price, MRP, discount as the site shows it, unit price, stock, rating, search rank and sponsored flag, tagged with its dark store. Compare Instamart across cities.
Pricing
from $3.00 / 1,000 products
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share
Turn Swiggy Instamart, India's 10-minute grocery app, into structured product data for any delivery location. Search by keyword across areas, pincodes or coordinates and get one clean row per pack size with price, MRP, discount, unit price, stock, rating, images, search rank and sponsored flag, tagged with the location and dark store it was priced for.
Built for price monitoring, assortment tracking and quick-commerce market research across Indian cities.
How it works

✨ Why use this scraper?
- Real, location-specific prices. Instamart prices and stock differ by dark store, so every row carries the location, coordinates and store ID it was scraped for. Run several areas or pincodes to compare.
- One row per pack size. "500 g" and "500 g x 2" are separate rows, each with its own price, MRP and stock, so nothing is averaged away.
- Discounts as the site shows them.
discountPercentis rounded down exactly like Instamart's "25% OFF" label, anddiscountis the rupee amount off MRP. - Search rank and sponsored flag. See where a product appears for a keyword and whether that slot is a paid placement.
- Areas, pincodes or coordinates.
Koramangala, Bengaluru,560034and12.9352,77.6245all work; text is resolved through Swiggy's own maps. - No login, no browser, no captcha. Talks to Instamart's JSON API directly; billed per product row.
🎯 Use cases
| You are a… | Use it to… |
|---|---|
| Brand / FMCG team | Track your SKUs' prices, discounts and availability across cities on Instamart |
| Competitor analyst | Compare a keyword's results and price points between stores and cities |
| Retail media / marketing team | See which products hold the top ranks for a keyword and which slots are sponsored |
| Quick-commerce researcher | Measure assortment, discount depth and stock-outs over time |
| Pricing / revenue team | Feed live competitor prices into dynamic-pricing models |
📥 Supported inputs
| Input | Example | What it does |
|---|---|---|
| Location (required) | Koramangala, Bengaluru, 560034 or 12.9352,77.6245 | Resolves the delivery store; everything is priced for it |
| Search keyword (required) | milk, atta, chips | Searches the keyword at each location, paginated to the end of the results |
Not supported yet: category URLs and product URLs (keyword search covers both: search the product or category name). Placing orders, cart or checkout and account-only data are out of scope; the actor reads only the public catalogue.
⚙️ How it works
- Resolve each location: free text and pincodes are geocoded through Swiggy's maps, then matched to the dark store that serves them. A location Instamart does not deliver to is reported by name and skipped.
- Search every keyword at every location through Instamart's JSON API, page after page, until the results end or your limit is reached.
- Parse each product into one row per pack size, with prices in ₹.
- Tag every row with its location, store, keyword, rank and sponsored flag, de-duplicate per store, and emit.
⚙️ Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
locations | array | — | Areas, pincodes or lat,lng pairs. Required (Instamart prices are per store). |
searchQueries | array | — | One product per entry (milk, bread, atta). A comma-separated line (bread, milk) is split and each product searched on its own. |
maxItems | integer | 1000 | Hard cap on product rows for the whole run. |
maxItemsPerQuery | integer | 1000 | Cap per keyword × location. |
maxConcurrency | integer | 3 | Locations worked on in parallel. Each location runs one request at a time, because Instamart limits searches per store. |
maxRequestRetries | integer | 12 | Retries when Instamart asks to slow down or a connection fails; the first wait is 15 seconds, later ones grow to 60. |
proxy | object | built in | India residential routing is included. Set proxyUrls only to use your own proxies. |
📊 Output overview
Each dataset record is one pack-size variant of one product, priced for one location. Run the same keyword across several locations to get one row per (variant × location), ready for cross-city price comparison. Money fields are in INR (₹).
📦 Output sample
{"rowType": "product","productId": "XYI7MJ20OC","parentProductId": "N2HH8THZI0","variantId": "28FIB5CELA","skuId": "BDOVVQ6XQJ","productUrl": "https://www.swiggy.com/instamart/item/XYI7MJ20OC","name": "Fortune Besan Flour","brand": "Fortune","description": "Perfect For Crispy Snacks","mrp": 85,"sellingPrice": 63,"discount": 22,"discountPercent": 25,"unitPrice": "12.6/100 g","offerText": "25% OFF","packSize": "500 g","weightInGms": 500,"inStock": true,"lowStockText": null,"maxAllowedQuantity": 6,"category": "Besan, Sooji and Maida","subCategory": "Besan","superCategory": "Atta, Rice and Dals","rating": 4.5,"ratingCount": 46100,"images": ["https://instamart-media-assets.swiggy.com/swiggy/image/upload/fl_lossy,f_auto,q_auto,h_600/NI_CATALOG/IMAGES/ciw/2026/4/17/3c401aba-eda4-4556-ade0-35c2a9f88f54_28FIB5CELA_1_b10ba22c-ec83-4799-a702-282ae2bb89b9.png","https://instamart-media-assets.swiggy.com/swiggy/image/upload/fl_lossy,f_auto,q_auto,h_600/NI_CATALOG/IMAGES/ciw/2026/4/17/78b7b251-d9aa-4ee4-8eed-95d03dc7bf64_28FIB5CELA_2_c628a401-4ae3-477b-88cd-df027cc0a274.png"],"isSponsored": false,"searchRank": 91,"storeId": "1135720","location": "Powai, Mumbai, Maharashtra, India","latitude": 19.1175993,"longitude": 72.9059747,"sourceQuery": "atta","scrapedAt": "2026-10-23T08:10:19.139Z"}
🗂 Key output fields
| Field | Type | Notes |
|---|---|---|
name / brand / description | string | Product name, brand and Instamart's short description |
sellingPrice / mrp | number | In ₹ |
discount / discountPercent | number | ₹ off MRP, and the percentage rounded down as the site shows it |
unitPrice / offerText | string | null | e.g. 12.6/100 g, 25% OFF |
packSize / weightInGms | string / number | Pack details |
inStock / lowStockText / maxAllowedQuantity | boolean / string / number | Stock at that store and the per-order limit |
category / subCategory / superCategory | string | Instamart's category path |
rating / ratingCount | number | 124.9k on the site becomes 124900 |
images | string[] | Product image URLs |
searchRank / isSponsored | number / boolean | Position of the product for the keyword, and whether it is a paid placement |
productUrl / productId / variantId / skuId | string | Product page and IDs |
storeId / location / latitude / longitude | string / number | The store and location this row was priced for |
sourceQuery | string | The keyword that produced the row |
❓ FAQ
Why do I need a location? Instamart is a delivery app: every product's price, discount and stock depend on the dark store serving the address. No location, no catalogue.
Can I compare prices across cities? Yes. Put several entries in locations and the same product comes back once per location, each with its local price and stock.
How many products does a keyword return? Typically 100 to 300 products, many with two or three pack sizes. Use maxItemsPerQuery to cap it.
How long does a run take? Instamart limits how fast one store can be searched, and the actor waits that limit out instead of failing. In testing, one location with six keywords paginated to the end (1,328 rows) took about four minutes; several locations run in parallel.
What happens with a location Instamart does not serve? The log names it ("Instamart does not deliver here") and the run continues with the others. Nothing is charged for it.
Do I need to set up proxies? No. India residential routing is built in.
Is the same product charged twice if two keywords find it? No. Each pack size is emitted once per store per run; sourceQuery holds the first keyword that found it.
💬 Support
Found a bug or need an extra field? Open an issue on the actor's Issues tab and it'll be looked at quickly.
🛠 Additional services
Need category sweeps, a custom field, or a scheduled price-tracking feed into your warehouse? Custom scraping and pipeline work is available on request.
🔎 Explore more scrapers
Running quick-commerce price comparisons? The same publisher maintains scrapers for the other two big apps, with matching column names so the datasets join cleanly:
- Zepto Product Scraper: prices, MRP and stock per delivery location
- Blinkit Product & Price Scraper: multi-city stock and delivery ETA
🤖 For AI Agents & LLM Apps
Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/swiggy-instamart-scraper).
Purpose: Swiggy Instamart product rows for any delivery location in India, priced per dark store so the same product can be compared across areas and cities.
Minimal input:
{"locations": ["Koramangala, Bengaluru"],"searchQueries": ["milk"],"maxItems": 50}
Output: one row per pack-size variant × location: rowType, productId, parentProductId, variantId, skuId, productUrl, name, brand, description, mrp, sellingPrice, discount, discountPercent, unitPrice, offerText, packSize, weightInGms, inStock, lowStockText, maxAllowedQuantity, category, subCategory, superCategory, rating, ratingCount, images, isSponsored, searchRank, storeId, location, latitude, longitude, sourceQuery, scrapedAt. Money fields are in ₹.
Behaviors an agent should know:
locationsandsearchQueriesare both required; every keyword is searched once per location.- Locations accept area text, 6-digit pincodes or
lat,lng. Unserviceable locations are skipped with a log line, not an error. - Set
maxItems(whole run, default 1000) andmaxItemsPerQuery(per keyword × location, default 1000). - Instamart rate-limits per store; the actor waits it out, so a deep multi-keyword run can take several minutes. More locations in parallel do not slow each other down.
- Billing: one paid
productevent per row; see the Pricing tab on the actor page.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Swiggy Limited or any of its subsidiaries or affiliates. Swiggy and Instamart are trademarks of their respective owners.
The scraper accesses only publicly available Instamart product catalogue data: no login, no account-only features, no order placement. Users are responsible for ensuring their use complies with Swiggy's Terms of Service, applicable data-protection law (including India's DPDP Act, GDPR and CCPA where relevant) and any contractual obligations of their own organisation.
SEO Keywords
instamart scraper, swiggy instamart scraper, scrape instamart, instamart price scraper, swiggy instamart api, instamart product data, quick commerce scraper india, instamart price tracker, grocery price scraper india, instamart search rank, instamart sponsored products, q-commerce price monitoring, instamart competitor analysis, indian grocery delivery scraper, instamart mrp discount scraper, zepto blinkit instamart data, dynamic pricing grocery india, instamart stock availability, scrape indian quick commerce, instamart bengaluru mumbai delhi prices