JioMart Product Fulfillment API
Check one product at a PIN and tell a local quick-commerce listing apart from the national catalogue entry.
- 1 credit per call
- Failed calls are free
- Updated
- jiomart.fulfillment.get
{ "delivery_message": "Delivery in 28 mins", "eta_minutes": 28, "fulfillment_metadata_scope": "national_catalog", "inventory_count": null, "journey": "quickcommerce", "listed": true, "quick_delivery_tagged": true, "sellable": true, "serviceable": true, "slug": "india-gate-super-basmati-rice-1-kg-mffmvi-7511070", "store_open": null, "availability_flags": { "kirana_1p": true, "kirana_3p": false, "rrl_fc": true, "rrl_store": true, "seller_3p": true }, "fulfiller": { "name": "Reliance Retail Limited (400710)", "id": "2147", "number": "3PEGURHKFC01" }, "delivery_slots": [], "store_ids": [ "27608" ]}
What you send
The input
object of the request, with every field the endpoint accepts.
- Send one of: the product's slug, its numeric product ID, or its /p/ link. For a check at a PIN, send a six-digit pincode, or the same PIN inside the location; two different PINs are refused.
- The location can carry a city, state and coordinates, but this check uses only the PIN, so the answer is for that PIN.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| product_id | string | one of | Product identifier. | 7511070 |
| slug | string | one of | Slug from the page URL. | |
| url | string | one of | Public URL of the page to fetch. | |
| location | object | no | ||
| pincode | string | no | Postal code (PIN) that sets the delivery location. | 560001 |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| availability_flags | object | Which kinds of seller can deliver the product. | 5 fields |
| availability_flags.kirana_1p | boolean | Whether JioMart's own partner shops can deliver it. | true |
| availability_flags.kirana_3p | boolean | Whether other partner shops can deliver it. | false |
| availability_flags.rrl_fc | boolean | Whether a Reliance warehouse can deliver it. | true |
| availability_flags.rrl_store | boolean | Whether a Reliance store can deliver it. | true |
| availability_flags.seller_3p | boolean | Whether other sellers can deliver it. | true |
| delivery_message | string | Delivery text returned for the checked PIN when available. | Delivery in 28 mins |
| delivery_slots | array | Delivery slots, when JioMart offers them. | empty in this sample |
| eta_minutes | integer | Delivery estimate when the local store serving the PIN gives one; it is not a promised checkout time. | 28 |
| fulfiller | object | Who would deliver the product. | 3 fields |
| fulfiller.id | string | 2147 | |
| fulfiller.name | string | Product, brand, department, collection or content name as returned for the selected endpoint. | Reliance Retail Limited (400710) |
| fulfiller.number | string | The fulfiller's code. | 3PEGURHKFC01 |
| fulfillment_metadata_scope | string | What the delivery details apply to, such as the national catalogue. | national_catalog |
| inventory_count | null | Units in stock, when JioMart gives it. | null |
| journey | string | Listing context. quickcommerce is scoped to resolved serving stores; standard is national-catalogue presence and is not delivery confirmation. | quickcommerce |
| listed | boolean | Whether the product was found for the checked location workflow. | true |
| quick_delivery_tagged | boolean | Whether the product is marked for quick delivery. | true |
| 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 |
| serviceable | boolean | Whether a JioMart local store serves the PIN. This alone does not prove that the requested product is locally listed. | true |
| slug | string | Product, brand or collection slug returned by JioMart for the sampled record. | india-gate-super-basmati-rice-1-kg-mffmvi-7511070 |
| store_ids | array | Store identifiers attached to the returned context. Presence in national catalogue data is not delivery confirmation. | 27608 |
| store_open | null | Whether the store is open, when JioMart says. | null |
What this endpoint covers
- serviceable means at least one JioMart local store serves the PIN. It does not by itself mean the requested product is locally listed.
- A journey of quickcommerce is a listing at the stores serving that PIN. A journey of standard means the product is in the national catalogue; it does not confirm delivery. sellable is set only for a local listing matched to a store; whether the catalogue marks the product sellable is kept in its own field when JioMart gives it.
- A delivery estimate comes only when a serving store gives one for this product. An empty stock count, store-open state or delivery slot list says nothing about this product.
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.fulfillment.get", "input": { "pincode": "560001", "product_id": "7511070" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "jiomart.fulfillment.get", "input": { "pincode": "560001", "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.fulfillment.get", "input": { "pincode": "560001", "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 product fulfillment for pincode "560001" and 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 Multi-location Product Availability 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 Product Fulfillment API FAQ
The short answers. The docs have the long ones.
How much does the JioMart Product Fulfillment API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Every input is optional; the input fields below list what each one does.
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.fulfillment.get, 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.