# Instamart Category API. Pay per record.

> One Swiggy Instamart category shelf at one dark store as JSON: every product with price, MRP, stock and rank. From $0.0009 each.

Canonical: https://apiforagents.dev/platforms/instamart/category-api · Updated 2026-10-21

Read one shelf of the Swiggy Instamart menu at one dark store: every product on it, in order, with price, MRP, discount, stock and rank.

- Price: $0.0009 / product
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/instamart

## What people build with the Instamart Category API

- **Category share of shelf.** See how many of a shelf's slots your brand holds at each store, and in which positions.
- **Assortment gaps.** Compare the same shelf across pincodes and spot the stores where a product is missing.
- **Category pricing.** Take every price and discount on a shelf in one call, ready to compare with your own.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta, Rice and Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50,"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/instamart \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta, Rice and Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}'
```

## Inputs

Everything you can send in one category call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| category * | string | The top-level aisle as the app names it ("Dairy, Bread & Eggs"). ≤80 chars |
| subCategory * | string | The shelf inside it, again as the app names it ("Milk"). Both are required: the listing is one shelf at one store. ≤80 chars |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | integer | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | integer | Longitude in decimal degrees; only read together with lat. |
| limit | integer | 1-100 |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| productName | brand | price | mrp | discountPct | packSize |
|---|---|---|---|---|---|
| Orange Juice, No Added Sugar | Squeezy | 120 | 135 | 11 | 1 L |
| Coconut Water | Tenderco | 60 | 65 | 8 | 200 ml |
| Cold Coffee | Brewlab | 45 | 50 | 10 | 180 ml |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One product | 1 | $0.0009 |
| 10 products | 10 | $0.009 |
| A full page | 100 | $0.09 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Instamart Category API in the playground](https://apiforagents.dev/dashboard/run?platform=instamart&op=category): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Swiggy Instamart account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Swiggy Instamart in n8n](https://apiforagents.dev/integrations/n8n/instamart)
- [Swiggy Instamart in Make](https://apiforagents.dev/integrations/make/instamart)
- [Swiggy Instamart in Zapier](https://apiforagents.dev/integrations/zapier/instamart)
- [Swiggy Instamart in Python](https://apiforagents.dev/integrations/python/instamart)
- [Swiggy Instamart in LangChain](https://apiforagents.dev/integrations/langchain/instamart)
- [Swiggy Instamart in Claude Code](https://apiforagents.dev/integrations/claude-code/instamart)

## Questions

### What does the Instamart Category API return?

One row per product on the shelf, in order: name, brand, price, MRP, discount percent, pack size, in-stock flag, category, rank, rating and rating count, product and store ids, images and the product URL.

### What do I pass in?

A category and a subCategory exactly as the app names them, for example "Atta, Rice and Dal" and "Atta", one store, and a limit of up to a hundred products. Both names are required and must belong together.

### What if the category name is wrong?

A name that is not on the app's menu is refused and nothing is charged.

### How much does it cost?

$0.0009 per product at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=instamart&op=category (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md
