Instamart Product Details by Pincode avatar

Instamart Product Details by Pincode

Pricing

from $7.00 / 1,000 results

Go to Apify Store
Instamart Product Details by Pincode

Instamart Product Details by Pincode

Swiggy Instamart product details for any product id or URL at any Indian pincode: price, MRP, discount, pack size, stock, rating, images, category, variants, store id and delivery ETA. One row per product × pincode, resolved by the store serving that pincode.

Pricing

from $7.00 / 1,000 results

Rating

0.0

(0)

Developer

AtTheRate AI

AtTheRate AI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Reads the full Swiggy Instamart product page for any product id or URL, at any Indian pincode, one row per product and pincode. Instamart prices, stocks and delivers per dark store, so the same item returns a different price, offer and delivery promise depending on the pincode you ask for.

What you get

  • Price economics per store: price, original_price, discount_percent, discount_amount, the offer_text on the page and every promotion in offers.
  • Availability and purchase limits: in_stock, is_avail, low_stock_text, max_quantity.
  • Store and delivery context: store_id, pod_id, store_serviceability, delivery_eta_minutes and a human delivery string.
  • A sponsored marker: is_sponsored_listing is true when the item carries Instamart's ad tracking context.
  • Page content: name, brand, unit, category_path, description, highlights, specifications, images, variants.
  • Nothing is dropped: found: false rows carry a reason of invalid_id, pincode_unresolved, not_serviceable, not_found, blocked or failed.

Input

Both productIds and pincodes are required. Every product is fetched at every pincode.

{
"productIds": ["4M2JLMBEXY", "XC3J58DTKQ"],
"pincodes": ["122002", "560001"],
"maxConcurrency": 2,
"delayMs": 400,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "IN"
}
}
  • productIds: Instamart product ids such as 4M2JLMBEXY, or /instamart/item/<id> URLs.
  • pincodes: 6-digit Indian pincodes, each a separate store resolution.
  • maxConcurrency: fetches in flight per pincode, 1 to 4.
  • proxyConfiguration: residential country IN is the default and required in practice.

Output

One row per product and pincode: two products across two pincodes give four rows.

{
"requested": "XC3J58DTKQ",
"product_id": "XC3J58DTKQ",
"pincode": "122002",
"location_label": "Gurgaon, Gurugram",
"found": true,
"name": "Crunchy Shimla Apple (Seb)",
"brand": "Fruits and Vegetables",
"unit": "2 Pieces x 2",
"price": 168,
"original_price": 212,
"discount_percent": 21,
"in_stock": true,
"low_stock_text": null,
"max_quantity": 1,
"is_sponsored_listing": false,
"store_id": "1394451",
"delivery": "9 mins",
"delivery_eta_minutes": 9,
"fetched_at": "2026-09-11T09:01:18.792Z"
}

Null by design: stock_quantity, seller, seller_rating and review_count are always null, because the product page publishes no unit count, seller or review count. low_stock_text is null unless the app shows a low-stock nudge.

Use cases

  • City-by-city price comparison for a fixed item list from price and discount_percent.
  • Promotion tracking with offer_text and offers, which differ by store far more than base price.
  • Serviceability and delivery mapping from store_serviceability and delivery_eta_minutes.
  • Pack-ladder analysis from variants, which lists sibling sizes with their own price and stock.

Notes and limits

  • An Indian residential proxy is required. Swiggy refuses non-Indian, datacenter and flagged exits, and some residential pools are refused outright. In a verified test the whole run was refused and stopped with a message naming the fix rather than returning partial rows.
  • Retries run on fresh exits three times before stopping, so one bad IP does not end a run. Each session is pinned to one exit IP; in custom proxyUrls, put {session} where your provider takes a session id.
  • One browser mint serves every pincode; only the location changes and Swiggy re-resolves the store. A session serves up to 150 fetches before re-minting.
  • An unknown product id is recorded as reason: not_found, not a failed run.

FAQ

Do I need a proxy? Yes, residential and Indian, which is the default. Some Indian residential pools are still refused by the site; the run then reports the block plainly instead of guessing.

How many results can I get? One row per product and pincode pair, with no cap on either list. Sessions rotate every 150 fetches.

Does it need login or an API key? No Swiggy account or key of your own is required.

How does a pincode pick a store? The pincode is resolved to coordinates that set the delivery location, and Swiggy picks the dark store itself. That store is stamped on the row as store_id, so you can confirm two pincodes really hit two stores.