Structured Product Details
Collect product and SKU identities, names, brands, quantities, images and product URLs in a structured product object.
Get full details for any Swiggy Instamart product as structured JSON, priced for the location you choose. Pull prices, offers, ratings, stock, other pack sizes and related products using just a product ID, coordinates and a pincode.
{
"search_parameters": { "product_id": "9XJCBD88DO", "pincode": "110001" },
"total_time_taken": 5.65,
"location": { "lat": 28.6327426, "lng": 77.2195969, "address": "New Delhi, Delhi 110001, India" },
"product": {
"spin_id": "9XJCBD88DO",
"sku_id": "5PRPUWP2R3",
"name": "Fidelo 25gm Protein Milk",
"brand": "Fidelo",
"quantity": "200 ml",
"mrp": 129,
"offer_price": 109,
"discount_percent": 16,
"offers": ["15% OFF"],
"in_stock": true,
"max_order_quantity": 3,
"category": "Milk",
"sub_category": "Fresh Milk",
"weight_in_grams": 200,
"images": ["..."],
"variants": [],
"related_products": [],
"product_url": "https://instamart.in/p/9XJCBD88DO"
}
}curl "https://api.scrapingdog.com/swiggy/instamart/product?api_key=APIKEY&product_id=9XJCBD88DO&pincode=110001"
import requests
url = "https://api.scrapingdog.com/swiggy/instamart/product"
params = {
"api_key": "APIKEY",
"product_id": "9XJCBD88DO",
"pincode": "110001"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(data["product"])
else:
print(f"Request failed with status code: {response.status_code}")const axios = require('axios');
axios.get('https://api.scrapingdog.com/swiggy/instamart/product', {
params: { api_key: 'APIKEY', product_id: '9XJCBD88DO', pincode: '110001' }
}).then(response => console.log(response.data.product))
.catch(error => console.error(error.message));<?php
$url = 'https://api.scrapingdog.com/swiggy/instamart/product?' . http_build_query([
'api_key' => 'APIKEY',
'product_id'=> '9XJCBD88DO',
'pincode' => '110001',
]);
echo file_get_contents($url);require 'net/http'
require 'uri'
url = URI.parse("https://api.scrapingdog.com/swiggy/instamart/product")
url.query = URI.encode_www_form('api_key' => 'APIKEY', 'product_id' => '9XJCBD88DO', 'pincode' => '110001')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
puts http.request(Net::HTTP::Get.new(url)).bodyimport java.io.*;
import java.net.*;
public class Main {
public static void main(String[] args) throws Exception {
String apiUrl = "https://api.scrapingdog.com/swiggy/instamart/product?api_key=APIKEY&product_id=9XJCBD88DO&pincode=110001";
URL url = new URL(apiUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = reader.readLine()) != null) System.out.println(line);
conn.disconnect();
}
}spin_idsku_idnamebrandquantityimagesproduct_urlmrpoffer_pricediscount_percentoffersin_stockmax_order_quantityratingrating_countcategorysub_categorysuper_categoryweight_in_gramsvariantsrelated_productslocationlatlngaddresssearch_parameterstotal_time_takenCollect product and SKU identities, names, brands, quantities, images and product URLs in a structured product object.
Instamart prices vary by area, so every request is tied to a location. You get the MRP, offer price, discount and active offers for that area. Always include a location, because prices come back as zero without one.
Use in_stock and max_order_quantity to understand availability and order limits. The maximum order quantity is not an inventory count.
Pass an Indian pincode or both lat and lng. Keep the returned location with your observations to preserve their local pricing context.
Read the variants array to discover the product's other pack sizes when available. An empty array means no variants were returned.
Collect related_products from the page to support product discovery and merchandising research. Related products can be empty, as shown in the documented sample.
Track MRP, offer prices, discount percentages and offers for selected products over time, keeping each observation tied to its location.
Follow stock flags and order limits for chosen products across locations to understand local availability.
Study the returned variants to understand the other pack sizes offered alongside a selected product.
Bring product identities, brands, quantities, images and category information into your research catalog.
Study the related-product rails returned by the page to explore product associations and merchandising choices.
Request the same catalog product for different locations to compare its local pricing, offers and availability.
Sign up for Scrapingdog to start testing Instamart product extraction.
Copy your API key from the dashboard and pass it as api_key.
Pass a search result's spin_id as product_id to /swiggy/instamart/product, with pincode or both lat and lng.
Use product and location together to analyze local prices, stock, variants and related products.
Start your web scraping journey with 100 free credits. Test our service and upgrade to one of the plans below. Cancel anytime.
The API returns one Instamart product priced at one location as structured JSON. It carries the same fields as a search result, including prices, offers, ratings, stock and category information, plus variants for other pack sizes and related_products from the page.
Use the spin_id from the Swiggy Instamart API as product_id. It is Instamart’s catalogue ID. The endpoint also accepts spin_id as an alias. Do not pass sku_id, which is specific to a store.
Supply an Indian pincode, or both lat and lng.
The product page can still load without a location, but every price comes back as 0. Treat location as required and keep the returned location with the product data when comparing observations.
The product includes mrp, offer_price, discount_percent, offers, in_stock and max_order_quantity. The maximum order quantity is an order limit, not the number of units in inventory.
Yes. variants contains other pack sizes, while related_products contains the related-product rails from the page. Either array can be empty, as in the documented response sample.
Get 100 free credits to spin the API. No credit card required!