# Croma API — India's Tata electronics chain: price by PIN code (selling price, MRP, discount), bank and card offers, delivery dates, per-store stock, specs and reviews

> Search Croma's catalogue AS PRICED AT ONE PIN CODE: 21 products per page with the LIVE selling price, MRP and discount % at that PIN (from Croma's price service, the same figure `product` returns; the search index's own figure is kept as price_index and differences are flagged), offer lines (bank discount, NeuCard, no-cost EMI), key features, brand, rating, review count, category ids, whether any Croma store or warehouse holds stock and in how many locations, warranty, launch date. Filters: category, brand, price band, discount band, delivery mode (express / home); six sort orders. Returns the source's facet counts (categories with their ids, brands, price and discount bands, specification facets). `pincode` and at least one of `query` / `category` are required.
> ReefAPI engine `croma` · 5 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/croma/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/croma/v1/search — 3 credits
Search Croma's catalogue AS PRICED AT ONE PIN CODE: 21 products per page with the LIVE selling price, MRP and discount % at that PIN (from Croma's price service, the same figure `product` returns; the search index's own figure is kept as price_index and differences are flagged), offer lines (bank discount, NeuCard, no-cost EMI), key features, brand, rating, review count, category ids, whether any Croma store or warehouse holds stock and in how many locations, warranty, launch date. Filters: category, brand, price band, discount band, delivery mode (express / home); six sort orders. Returns the source's facet counts (categories with their ids, brands, price and discount bands, specification facets). `pincode` and at least one of `query` / `category` are required.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: Croma's selling price depends on it (the same TV is 24,990 in Mumbai 400049 and 21,990 in Agartala 799001). A PIN Croma does not serve gets the national price. Echoed in every answer.
- `query` (string, optional) — What to search for, as typed in Croma's search box (iphone 17, washing machine, 55 inch tv ...). The source corrects typos (returned as spelling_suggestion); a query with no match returns 0 rows (search_fallback: true).
- `category` (string, optional) — A Croma category id: from a row's category_ids, the `facets.category[].category_id` list, or the /c/<id> in a croma.com category URL (10 = Mobile Phones, 97 = iPhones). Works alone (browse) or with `query`.
- `brand` (string, optional) — Brand as rows spell it (Samsung, HP, boAt ...). The source is case-sensitive; a 0-result spelling is re-matched against the query's own brand list (brand_resolved). Several brands: comma-separated (any of them).
- `price_band` (enum, optional) — Croma's own price bands (rupees), applied by the source to its search index's national price, which can differ from the live `price` at your PIN. Several: comma-separated (any of them). [one of: 0-500, 501-1000, 1001-1500, 1501-3000, 3001-5000, 5001-10000, 10001-20000, 20001-30000, 30001-40000, 40001-50000, 50001-60000, 60001-70000, 70001-80000, 80001-90000, 90001-100000, 100001-200000, 200001-500000, 500001-plus]
- `discount_band` (enum, optional) — Croma's discount-off-MRP bands. Several: comma-separated. [one of: 0-20, 20-40, 40-60, 60-80, 80-plus]
- `delivery_mode` (enum, optional) — Only products Croma offers with express delivery (from a nearby store) or with standard home delivery. [one of: express, home]
- `sort` (enum, optional, default "relevance") — Result order, as Croma sorts. Price sorts use the search index's national price, so rows can look out of order by the live `price`. [one of: relevance, price_asc, price_desc, discount_desc, latest, top_rated]
- `page` (integer, optional, default 1) — Page number; 21 products per page. Pages past last_page return no rows.

**Returns:** pincode, query, total (the source's own count), page, page_size (21, fixed by the source), last_page, has_next, returned, priced, price_mismatch (rows whose index price differed from the live one), price_missing, search_fallback, spelling_suggestion, brand_resolved, featured_rows, results[]{product_id (-> product.product_id), title, summary, brand, brand_id, url, image, price (LIVE price at the PIN), mrp, discount_percent, price_text, mrp_text, price_text_matches, price_mismatch, price_index (the search index's figure), mrp_index, price_index_text, price_index_text_matches, discount_text_index, currency, offer_messages[], key_features[], rating, rating_count, review_count, category_ids[], in_stock, stock_location_count, standard_warranty_months, launch_date, rank}, facets{category[]{value, category_id, count}, brand[], price_band[], discount_band[], delivery_mode[], specifications[]}

**Example request body:**
```json
{
  "query": "iphone 17",
  "pincode": "400049"
}
```

### POST https://api.reefapi.com/croma/v1/product — 3 credits
One Croma product at one PIN code, by the `product_id` a search row returns (or its croma.com URL): selling price, MRP, discount (computed and the source's own), the bank / card offers running on it (bank, card type, minimum spend, validity), the product's delivery-mode flags (home, express, store pickup, cash on delivery — product-level, NOT checked against the PIN: use `availability` for that), rating, review and rating counts, and the full record — EAN, brand, description, key features, every specification group, images, videos, category breadcrumbs, colour / storage variants with their ids, current store offer notes, warranty, EMI flag.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: Croma's selling price depends on it (the same TV is 24,990 in Mumbai 400049 and 21,990 in Agartala 799001). A PIN Croma does not serve gets the national price. Echoed in every answer.
- `product_id` (string, optional) — The product's `product_id` exactly as a search row returns it (e.g. 317418), or its croma.com URL (…/p/317418). Required.

**Returns:** pincode, product{product_id, title, summary, brand, brand_url, ean, url, description, key_features[], specifications[]{group, features[]{name, value, unit}}, images[], videos[], breadcrumbs[]{category_id, name, url}, category_ids[], variant_attributes{}, variant_axes[]{name, values[]}, variants[]{product_id, title, attributes{}, url}, offer_messages[], store_offers[]{code, label, text, from, to}, standard_warranty_months, emi_applicable, review_count, rating_count, approval_status}, price{price, mrp, discount_percent, discount_percent_source, discount_amount, currency, price_text, mrp_text, price_text_matches}, delivery_flags{in_stock, home_delivery, express_delivery, store_pickup, cash_on_delivery, pin_specific (false: product-level flags, see `availability`)}, bank_offers[]{offer_id, title, offer_type, benefit_type, payment_mode, payment_provider, card_type, min_transaction, starts, expires, terms_url}, rating{average_rating, review_count}

**Example request body:**
```json
{
  "product_id": "317418",
  "pincode": "400049"
}
```

### POST https://api.reefapi.com/croma/v1/availability — 3 credits
Can a product reach a PIN code, when, and from where: the home-delivery date and the node it ships from, the express-delivery date and the Croma store that would ship it, and for every Croma store within the radius the number of units it holds for pickup (with distance and address) — plus the source's reason for each mode that is not possible.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: Croma's selling price depends on it (the same TV is 24,990 in Mumbai 400049 and 21,990 in Agartala 799001). A PIN Croma does not serve gets the national price. Echoed in every answer.
- `product_id` (string, optional) — The product's `product_id` exactly as a search row returns it (e.g. 317418), or its croma.com URL (…/p/317418). Required.
- `radius_km` (integer, optional, default 25) — Which stores to check for pickup stock: those within this many km of the PIN code (Croma's own default is 25).

**Returns:** pincode, product_id, location{lat, lng, place}, stores_checked, stores_with_stock, home_delivery{available, delivery_date, ships_from, carrier}, express_delivery{available, delivery_date, store_id, store_name, carrier}, store_pickup[]{store_id, store_name, units, distance_km, address, pickup_from}, unavailable[]{fulfillment, reason}

**Example request body:**
```json
{
  "product_id": "317418",
  "pincode": "400049"
}
```

### POST https://api.reefapi.com/croma/v1/stores — 2 credits
Croma stores near a PIN code, nearest first: store id (the id `availability` reports stock under), name, full address, city, state, store PIN, phone numbers, coordinates, distance, opening hours, amenities, store manager, photo.

**Parameters:**
- `pincode` (string, required) — 6-digit Indian PIN code to shop from. REQUIRED: Croma's selling price depends on it (the same TV is 24,990 in Mumbai 400049 and 21,990 in Agartala 799001). A PIN Croma does not serve gets the national price. Echoed in every answer.
- `radius_km` (integer, optional, default 25) — Search radius around the PIN code, in km (default 25).

**Returns:** pincode, location{lat, lng, place}, store_count, stores[]{store_id, name, address, city, state, pincode, phone, other_phones[], lat, lng, distance_km, opening_hours, features[], store_manager, image, url}

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

### POST https://api.reefapi.com/croma/v1/reviews — 1 credit
Customer reviews of one Croma product, newest first, 50 per page: star rating, text, reviewer name as shown, date, verified-purchase flag — plus the product's average rating, its true review count and (when one page holds every review) the star split. Optional filter to one star level.

**Parameters:**
- `product_id` (string, optional) — The product's `product_id` exactly as a search row returns it (e.g. 317418), or its croma.com URL (…/p/317418). Required.
- `rating` (integer, optional) — Only reviews with this many stars.
- `page` (integer, optional, default 1) — Page number (50 reviews per page).

**Returns:** product_id, average_rating, review_count, page, page_size, last_page, has_next, returned, rating_distribution{1..5}, rating_distribution_complete, reviews[]{review_id, rating, text, title, author, date, verified_purchase}

**Example request body:**
```json
{
  "product_id": "307023"
}
```

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