# JioMart API — India's Reliance grocery + marketplace: prices (MRP, selling price, discount, unit price), stock and seller per PIN code, product data, delivery stores

> Search JioMart's catalogue AS SEEN FROM ONE PIN CODE: 12 products per page with selling price, MRP, discount %, unit price (per ml / g / L / kg), pack size, brand, category path (department > L1 > L2 > L3), seller type (Reliance = 1p or marketplace = 3p), the serving store ids, in-stock flag and pack-size variants. Filters: brand, category, department (with a query), seller type, price range, discount range; six sort orders; delivery=quick limits to what the pin's local stores deliver in minutes. `pincode` and at least one of `query` / `category` / `brand` are required.
> ReefAPI engine `jiomart` · 5 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/jiomart/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/jiomart/v1/search — 2 credits
Search JioMart's catalogue AS SEEN FROM ONE PIN CODE: 12 products per page with selling price, MRP, discount %, unit price (per ml / g / L / kg), pack size, brand, category path (department > L1 > L2 > L3), seller type (Reliance = 1p or marketplace = 3p), the serving store ids, in-stock flag and pack-size variants. Filters: brand, category, department (with a query), seller type, price range, discount range; six sort orders; delivery=quick limits to what the pin's local stores deliver in minutes. `pincode` and at least one of `query` / `category` / `brand` are required.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: JioMart's catalogue, prices, stock and delivery all depend on it (Mumbai 400020, Bengaluru 560001, Delhi 110001 ... give different totals and prices). Echoed in every answer.
- `query` (string, optional) — What to search for, as typed in the JioMart search box (atta, amul milk, iphone 15, saree ...).
- `category` (string, optional) — A category slug at any level, as rows return it in category_l1/l2/l3.slug or `facets` lists it (milk, milk-milk-products, fresh-l1, atta-flours-sooji ...).
- `brand` (string, optional) — Brand exactly as a row's `brand` spells it — CASE-SENSITIVE at the source ('amul' matches 57 milk products, 'Amul' none). Several brands: comma-separated (amul,Nestle).
- `department` (enum, optional) — Only this top-level department. Needs `query`: the source ignores a department filter on its own. [one of: groceries, fashion, electronics, home-lifestyle, industrial-professional-supplies, furniture, wellness, jewellery, sports-toys-luggage, crafts-of-india, local-shops, books-music-stationery]
- `seller_type` (enum, optional) — Only products sold by Reliance Retail (1p) or by marketplace sellers (3p). [one of: 1p, 3p]
- `min_price` (number, optional) — Lowest selling price in rupees. The source's price filter can let a few marketplace rows through; they are counted in rows_outside_price_filter.
- `max_price` (number, optional) — Highest selling price in rupees.
- `min_discount` (integer, optional) — Lowest discount off MRP, in percent.
- `max_discount` (integer, optional) — Highest discount off MRP, in percent.
- `sort` (enum, optional, default "relevance") — Result order, as JioMart sorts (not strictly monotonic: price_asc showed one small inversion per 12 rows; discount_desc follows the source's own discount figure). [one of: relevance, popular, price_asc, price_desc, discount_desc, latest]
- `page` (integer, optional, default 1) — Page number; 12 products per page. Pages past last_page return no rows.
- `delivery` (enum, optional, default "standard") — standard = the pin's normal catalogue; quick = only what the pin's local JioMart stores deliver in minutes (their store ids are returned). [one of: standard, quick]

**Returns:** pincode, delivery, quick_store_ids (delivery=quick), total (the source's own count), page, page_size (12, fixed by the source), last_page, has_next, returned, rows_outside_price_filter (with a price filter), results[]{product_id, slug (-> product.slug), item_code, name, brand, url, image, image_count, price, mrp, discount_percent, currency, unit_price{amount, per}, unit_price_text, net_quantity, net_quantity_unit, pack_size, sizes[], seller_type, seller_id, store_ids[], sellable, variants[]{product_id, slug, value, is_available}, department{name, slug}, category_l1, category_l2, category_l3, vertical, country_of_origin, food_type, is_vegetarian, max_qty_per_order, tags[], journey, rank}

**Example request body:**
```json
{
  "query": "aashirvaad atta",
  "pincode": "400020"
}
```

### POST https://api.reefapi.com/jiomart/v1/product — 3 credits
One JioMart product at one PIN code, by the `slug` a search row returns (or its jiomart.com/product/ URL): full record (EAN, brand, description, key features, images, category path, pack size, net quantity, dimensions, veg/non-veg mark, max quantity per order, rating count, every catalogue attribute) + pack-size variants + for EACH size the offer the site would fill at that pin: selling price, MRP, discount, price per unit, quantity available, seller (Reliance Retail or the marketplace seller's name), serving store, ship-from pin and distance, return policy, manufacturer / importer / marketer — or the source's own reason when the size cannot be delivered there (e.g. Out of Stock).

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: JioMart's catalogue, prices, stock and delivery all depend on it (Mumbai 400020, Bengaluru 560001, Delhi 110001 ... give different totals and prices). Echoed in every answer.
- `slug` (string, optional) — The product's `slug` exactly as a search row returns it, or its https://www.jiomart.com/product/<slug> URL. Required.
- `size` (string, optional) — Only this size (as in the row's `sizes`, e.g. OS, 500 ML, FREE SIZE, M). Default: every size.

**Returns:** pincode, product{product_id, slug, item_code, ean, name, brand, brand_id, url, description, short_description, key_features[], highlights[], images[], department, category_path[], categories[], country_of_origin, pack_size, size_label, net_quantity, net_quantity_unit, dimensions{}, seller_type, food_type, is_vegetarian, max_qty_per_order, rating_count, has_variants, tags[], attributes{}}, availability{sellable, store_count, discount_text, price_range{}, sizes[]{size, display, is_available, quantity_all_stores, seller_identifiers[], shipping_weight_g, price_type}}, offers[]{size, available, unavailable_reason, price, mrp, selling_price, discount_percent, discount_text, currency, price_per_unit{price, unit}, mrp_text, mrp_text_matches, quantity_available, seller{id, name, is_reliance_retail}, store{id, name}, article_id, ships_from_pincode, distance_m, handover_time_s, returnable, return_window, trader{}}, variants[]{product_id, slug, value, is_available}

**Example request body:**
```json
{
  "slug": "aashirvaad-superior-whole-wheat-mp-atta-5-kg-mr0mye-132487553",
  "pincode": "400020"
}
```

### POST https://api.reefapi.com/jiomart/v1/sellers — 1 credit
Every seller offering one size of a product at one PIN code: seller name and whether it is Reliance Retail, serving store, price, MRP, discount, quantity, cash on delivery, the delivery window promised to that pin, ship-from pin.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: JioMart's catalogue, prices, stock and delivery all depend on it (Mumbai 400020, Bengaluru 560001, Delhi 110001 ... give different totals and prices). Echoed in every answer.
- `slug` (string, optional) — The product's `slug` from a search row (or its URL). Required.
- `size` (string, required) — The size, as in the row's `sizes` (OS, 500 ML, FREE SIZE, M ...).
- `page` (integer, optional, default 1) — Page of sellers (10 per page).

**Returns:** pincode, slug, size, total, page, has_next, sellers[]{seller{id, name, is_reliance_retail}, store{id, name}, price, mrp, discount_percent, discount_text, quantity_available, cash_on_delivery, is_gift, delivery_from, delivery_by, ships_from_pincode, seller_tags[], mrp_text, article_id}

**Example request body:**
```json
{
  "slug": "aashirvaad-superior-whole-wheat-mp-atta-5-kg-mr0mye-132487553",
  "size": "OS",
  "pincode": "400020"
}
```

### POST https://api.reefapi.com/jiomart/v1/pincode — 1 credit
Which JioMart stores deliver to a PIN code and how fast: per store and department (Groceries, Electronics ...) the delivery journey (quick commerce / standard), the promised window and message ('Delivery in 31 mins'), ETA minutes, distance, store pin/city/coordinates, opening hours, whether it is accepting orders, minimum basket value. An empty list = no store serves the pin.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: JioMart's catalogue, prices, stock and delivery all depend on it (Mumbai 400020, Bengaluru 560001, Delhi 110001 ... give different totals and prices). Echoed in every answer.

**Returns:** pincode, serviceable, quick_commerce, store_count, stores[]{store_id, store_code, name, department, journey, delivery_message, eta_minutes, delivery_from, delivery_by, distance_m, pincode, city, state, lat, lng, is_open, opens, closes, accepting_orders, min_basket_value, zone}

**Example request body:**
```json
{
  "pincode": "560001"
}
```

### POST https://api.reefapi.com/jiomart/v1/facets — 3 credits
The category tree and brand list WITH PRODUCT COUNTS at a PIN code, for a query or a category (or the whole catalogue): departments, L1/L2/L3 categories (slugs for search.category), up to 500 brands, discount bands, price bands, the price span, country of origin, and category-specific facets (capacity, colour ...).

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: JioMart's catalogue, prices, stock and delivery all depend on it (Mumbai 400020, Bengaluru 560001, Delhi 110001 ... give different totals and prices). Echoed in every answer.
- `query` (string, optional) — Facets of this search. Empty = the whole catalogue.
- `category` (string, optional) — Facets inside this category slug.
- `delivery` (enum, optional, default "standard") — standard or quick (local stores only). [one of: standard, quick]

**Returns:** pincode, total, facets{department[]{value, label, count}, l1_category[], l2_category[], l3_category[], brand[], discount_range[], price_range[], min_price_effective[]{label, min, max, count}, discount[], country_of_origin[], ...}

**Example request body:**
```json
{
  "query": "milk",
  "pincode": "400020"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=jiomart
- Human docs page: https://reefapi.com/docs/jiomart
- Overview page: https://reefapi.com/jiomart-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
