# BigBasket API — India's Tata online supermarket (incl. BB Now): price, MRP, discount, unit price, pack sizes, stock per PIN code, full product data

> Search bigbasket AS SEEN FROM ONE PIN CODE (a search term, or a category / brand page): products with selling price, MRP, discount, unit price (per 100 g / per litre ...), pack size and the price of every other pack size, stock state, brand, category path, EAN, rating and the shelf offer text. Filters: brand, price band, discount band, minimum rating; six sort orders. `pincode` and one of `query` / `category` / `brand` are required.
> ReefAPI engine `bigbasket` · 4 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/bigbasket/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/bigbasket/v1/search — 3 credits
Search bigbasket AS SEEN FROM ONE PIN CODE (a search term, or a category / brand page): products with selling price, MRP, discount, unit price (per 100 g / per litre ...), pack size and the price of every other pack size, stock state, brand, category path, EAN, rating and the shelf offer text. Filters: brand, price band, discount band, minimum rating; six sort orders. `pincode` and one of `query` / `category` / `brand` are required.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: bigbasket's catalogue, prices and stock depend on it (Bangalore 560004 and Mumbai 400020 give different totals and prices). Echoed.
- `query` (string, optional) — What to search for, as typed in the bigbasket search box.
- `category` (string, optional) — A category slug (row category.leaf/mid/top slugs or `categories`): lists that category. Not combined with `query`.
- `brand` (string, optional) — A brand slug as rows return it in `brand_slug`. Alone: the brand's page; with `query` or `category`: a brand filter.
- `price_band` (enum, optional) — Selling-price band, as the site offers it. The source matches the product family, so a row whose shown pack is outside the band can appear (counted in rows_outside_price_filter). [one of: under_20, 21_50, 51_100, 101_200, 201_500, over_500]
- `discount_band` (enum, optional) — Discount band off MRP. [one of: upto_5, 5_10, 10_15, 15_25, over_25]
- `min_rating` (enum, optional) — Minimum product star rating. [one of: 3, 4, 5]
- `sort` (enum, optional, default "relevance") — Result order as bigbasket sorts (not strictly monotonic). [one of: relevance, price_asc, price_desc, saving_desc, saving_asc, discount_desc]
- `page` (integer, optional, default 1) — Page number (40 rows per search page, 48 per category / brand page).

**Returns:** pincode, location{city_id}, serviceable, query, category, brand, total (the source's own count), page, last_page, has_next, returned, substituted_results (true = the source found nothing and filled the page with its own suggestions), substituted_for, rows_outside_price_filter (with price_band), results[]{product_id (-> product.product_id), name, brand, brand_slug, pack_size, pack_description, url, image, image_count, ean (check-digit-valid GTIN only), ean_code_raw, price, mrp, discount_percent, discount_text, currency, unit_price{amount, per}, unit_price_consistent, offer_text, offer_type, in_stock, availability_code, not_for_sale, button, eta, is_best_value, category{top, top_slug, mid, mid_slug, leaf, leaf_id}, rating{average, ratings, reviews}, food_type, other_packs[]{product_id, pack_size, url, price, mrp, discount_percent, discount_text, unit_price, unit_price_consistent, in_stock, availability_code, is_best_value}, store_id, rank}

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

### POST https://api.reefapi.com/bigbasket/v1/product — 3 credits
One bigbasket product at one PIN code, by the `product_id` a search row returns (or its bigbasket.com/pd/ URL): price, MRP, discount, unit price, stock, pack size, EAN, brand, breadcrumb, rating and review counts, images, the product page sections (about, ingredients, nutritional facts, storage, other info incl. manufacturer and best-before), tags — plus EVERY pack size of the product with its own price and stock.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code. REQUIRED, echoed.
- `product_id` (string, required) — The product's `product_id` exactly as a search row returns it, or its https://www.bigbasket.com/pd/<id>/... URL.

**Returns:** pincode, location, serviceable, product{product_id, name, brand, pack_size, url, ean, ean_code_raw, ean_on_page, price, mrp, discount_percent, discount_text, unit_price, unit_price_consistent, offer_text, in_stock, availability_code, category, rating, food_type, breadcrumb[], images[], description, ingredients, nutrition, storage, other_info, sections{}, tags[]}, packs[]{product_id, pack_size, url, price, mrp, discount_percent, discount_text, unit_price, in_stock, availability_code, is_best_value}

**Example request body:**
```json
{
  "product_id": "30006887",
  "pincode": "400020"
}
```

### POST https://api.reefapi.com/bigbasket/v1/pincode — 3 credits
Whether bigbasket delivers to a PIN code and how: the place it resolves to, the serviceability of each bigbasket service (bb-b2c slot delivery, bbnow quick delivery ...), and for the located visitor the stores (service areas) with their delivery promise ('Get it in 10 mins') and the next available slot.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code.

**Returns:** pincode, place, lat, lng, area, city, state, serviceable, services{<service>: <state>}, location{city_id}, stores[]{store_id, services[], eta, eta_message}, next_slots[]{store_id, message, eta_minutes, slot_time, slots_full}

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

### POST https://api.reefapi.com/bigbasket/v1/categories — 3 credits
bigbasket's category tree (top level > sub > leaf) with slugs for search.category.

**Parameters:** none

**Returns:** categories[]{name, slug, id, url, children[]{...}}, count

## 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=bigbasket
- Human docs page: https://reefapi.com/docs/bigbasket
- Overview page: https://reefapi.com/bigbasket-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
