JioMart Multi-location Product Availability API
Compare one product across up to 20 Indian PINs with listing, price, sellability, serving-store and delivery signals per location.
- 1 credit per call
- Failed calls are free
- Updated
- jiomart.product.availability.scan
{ "locations": [ { "price": 265, "mrp": 280, "currency": "INR", "delivery_message": "Delivery in 28 mins", "eta_minutes": 28, "journey": "quickcommerce", "listed": true, "pincode": "560001", "quick_delivery_tagged": true, "sellable": true, "serviceable": true, "store_ids": [ "27608" ] }, { "price": null, "mrp": null, "eta_minutes": null, "listed": false, "pincode": "400001", "quick_delivery_tagged": false, "sellable": null, "serviceable": true, "store_ids": [] } ]}
| # | Price | Mrp | Currency | Delivery message | Eta minutes | Journey | Listed | Pincode | Quick delivery tagged | Sellable |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 265 | 280 | INR | Delivery in 28 mins | 28 | quickcommerce | true | 560001 | true | true |
| 2 | false | 400001 | false |
What you send
The input
object of the request, with every field the endpoint accepts.
- Send the numeric product ID and 1 to 20 locations, each with a six-digit pincode.
- Each location can also carry a city, state, latitude and longitude, but the comparison uses only its PIN.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| locations | array<object> | yes | […] | |
| product_id | string | yes | Product identifier. | 7511070 |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| locations[].price | integer | Selling price shown from the returned effective price for the sampled catalogue row. | 265 |
| locations[].mrp | integer | MRP shown from the returned marked price for the sampled catalogue row. | 280 |
| locations[].currency | string | Currency of the price, usually INR where a product price is present. | INR |
| locations[].delivery_message | string | Delivery text returned for the checked PIN when available. | Delivery in 28 mins |
| locations[].eta_minutes | integer | Delivery estimate when the local store serving the PIN gives one; it is not a promised checkout time. | 28 |
| locations[].journey | string | Listing context. quickcommerce is scoped to resolved serving stores; standard is national-catalogue presence and is not delivery confirmation. | quickcommerce |
| locations[].listed | boolean | Whether the product was found for the checked location workflow. | true |
| locations[].pincode | string | The PIN code checked. | 560001 |
| locations[].quick_delivery_tagged | boolean | Whether the product is marked for quick delivery. | true |
| locations[].sellable | boolean | Whether a matching local store listing can sell it. A national catalogue entry alone does not make this a local stock signal. | true |
| locations[].serviceable | boolean | Whether a JioMart local store serves the PIN. This alone does not prove that the requested product is locally listed. | true |
| locations[].store_ids | array | Store identifiers attached to the returned context. Presence in national catalogue data is not delivery confirmation. | 27608 |
| locations | array | Each PIN code checked, with its result. | 2 records |
What this endpoint covers
- Each location can return serviceable, listed, journey, price, MRP, currency, sellability, serving-store IDs, quick-delivery tag, ETA and delivery message. Price and sellability can be null.
- Not listed is a normal answer, not an error. A missing local listing or a failed check is not the same as unavailable.
- Results keep the order you sent, duplicates included. Keep each PIN's row on its own when comparing markets.
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
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": "jiomart.product.availability.scan", "input": { "locations": [ { "pincode": "560001" }, { "pincode": "400001" } ], "product_id": "7511070" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "jiomart.product.availability.scan", "input": { "locations": [ { "pincode": "560001" }, { "pincode": "400001" } ], "product_id": "7511070" }}''')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": "jiomart.product.availability.scan", "input": { "locations": [ { "pincode": "560001" }, { "pincode": "400001" } ], "product_id": "7511070" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
With Upscrape, get the JioMart multi-location product availability for product id "7511070". Tell me what it costs before you run it, then show the results as a table.
More from the JioMart API
- JioMart Products Search API1 credit
- JioMart Products API1 credit
- JioMart Collection Products API1 credit
- JioMart Product Detail API1 credit
- JioMart Product Fulfillment API1 credit
- JioMart Autocomplete Search API1 credit
- JioMart Sponsored Products Ads API1 credit
- JioMart Brands API1 credit
- JioMart Categories API1 credit
- JioMart Category Filters API1 credit
- JioMart Collections API1 credit
- JioMart Departments API1 credit
- JioMart Home Listing API1 credit
- JioMart Pincode Location API1 credit
- JioMart Logistics Countries API1 credit
- JioMart Navigations API1 credit
- JioMart Pages API1 credit
JioMart Multi-location Product Availability API FAQ
The short answers. The docs have the long ones.
How much does the JioMart Multi-location Product Availability API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send product_id and locations. The input fields below list every option with its type and limits.
Do I need a JioMart login?
No. It reads public JioMart data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds jiomart.product.availability.scan, checks its price and runs it with the same credits as the REST API.
Your first JioMart call is free.
Up to 100 free credits to start, no card needed.