Zepto Store Catalog API
Choose a location to collect products across its store’s categories. Each batch includes the store and information for collecting further results.
- 1 credit per call
- Failed calls are free
- Updated
- zepto.catalog
{ "captured_at": "2026-10-04T12:00:30.566253632Z", "count": 100, "cursor": "eyJ2IjoyLCJzY29wZSI6ImIyYmNjMTUyNzgzYjkzNGM5NDA1Y2I1NjUxOTJjMjhhZTQzMWVjMDIwOTVkYTUwM2QxM2JhZjAwM2EzMmQ2ZmEiLCJzIjozLCJwIjoxLCJvIjoyOSwiY29…", "has_more": true, "location": { "eta_minutes": 11, "eta_serviceable": true, "latitude": 12.9967012, "longitude": 77.758197, "pincode": "560067", "serviceable": true, "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "secondary_store_ids": [ "0059ff6a-7eb0-477a-a7f5-69256f2c444b" ], "store_ids": [ "e58fff62-7695-44c2-aba0-6bc96074bc64", "0059ff6a-7eb0-477a-a7f5-69256f2c444b" ] }, "context": { "source": "resolved_location", "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64" }, "results": [ { "name": "Orange Nagpur", "available_quantity": 6, "brand": "Unbranded", "brand_id": "d69ba762-dfca-47f4-8e52-d09a6d1ffbd0", "category_id": "64374cfe-d06f-4a01-898e-c07c46462c36", "category_name": "Fruits & Vegetables", "country_of_origin": "India", "description": null, "discount_amount_paise": 5900, "discount_percent": 49, "discounted_selling_price_paise": 6000, "formatted_pack_size": "500 g (4 - 5 pcs)", "image_url": "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/407ff6db-6ed7-42e7-971f-a194a5de7286.jpeg", "in_stock": true, "is_active": true, "is_primary": true, "l3_category_id": "5b58f67d-1e93-4715-ab41-b090a9c82a82", "max_allowed_quantity": 6, "mrp_paise": 11900, "pack_size": 500, "primary_subcategory_id": "09e63c15-e5f7-4712-9ff8-513250b79942", "product_id": "152f9dde-51eb-4bf2-9967-3091ca758328", "product_type": "SELLABLESKU", "product_url": "https://www.zepto.com/pn/orange-nagpur/pvid/b208fa7b-1d28-4b3a-a821-a17c06f56ef1", "product_variant_id": "b208fa7b-1d28-4b3a-a821-a17c06f56ef1", "quantity": 6, "rank": 1, "selling_price_paise": 6000, "shelf_life_display": "4 days", "shelf_life_hours": 96, "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "store_product_id": "d6c16e0d-77d8-569d-a036-f51ce77cb11a", "subcategory_name": "All", "unit_of_measure": "GRAM", "weight_in_gms": 500, "category_path": [ "Fruits & Vegetables", "All" ], "image_urls": [ "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/407ff6db-6ed7-42e7-971f-a194a5de7286.jpeg" ] }, { "name": "Custard Apple Semi Ripe", "available_quantity": 1, "brand": "Fruits", "brand_id": "d396c794-de67-421c-9af1-dc36df2c2471", "category_id": "64374cfe-d06f-4a01-898e-c07c46462c36", "category_name": "Fruits & Vegetables", "country_of_origin": "India", "description": "Custard apple is a tropical fruit that grows mostly in tropical climates. The fruits are heart-shaped with light green exterior and smooth …", "discount_amount_paise": 8300, "discount_percent": 49, "discounted_selling_price_paise": 8400, "formatted_pack_size": "2 pcs (360 - 450 g)", "image_url": "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/fa6acfce-a598-4f3e-aa28-eb94df49d743.png", "in_stock": true, "is_active": true, "is_primary": true, "l3_category_id": "5942b588-81c1-4195-afca-f776c8c4c094", "max_allowed_quantity": 6, "mrp_paise": 16700, "pack_size": 2, "primary_subcategory_id": "09e63c15-e5f7-4712-9ff8-513250b79942", "product_id": "31e25f4a-c334-4c8a-acce-10a6a0677aed", "product_type": "SELLABLESKU", "product_url": "https://www.zepto.com/pn/custard-apple-semi-ripe/pvid/b5cb2914-895d-4b3e-86d0-9bd9f9234428", "product_variant_id": "b5cb2914-895d-4b3e-86d0-9bd9f9234428", "quantity": 1, "rank": 2, "selling_price_paise": 8400, "shelf_life_display": "4 days", "shelf_life_hours": 96, "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "store_product_id": "a9b4ad31-37f0-5430-8c3a-baeb8dc08268", "subcategory_name": "All", "unit_of_measure": "PIECE", "weight_in_gms": 58, "badges": [ { "name": "Product Discount", "type": "DISCOUNT" } ], "category_path": [ "Fruits & Vegetables", "All" ], "how_to_use": [ "Cut the fruit in half, discard the seeds, and scoop out the flesh. Custard apple is used to make delicious, sweet dishes such as firni, rab…" ], "image_urls": [ "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/fa6acfce-a598-4f3e-aa28-eb94df49d743.png" ] } ]}
| # | Product | Brand | Variant ID | Pack size | Price (paise) | MRP (paise) | In stock | Reported quantity | Store ID | Category name |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Orange Nagpur | Unbranded | b208fa7b-1d28-4b3a-a821-a17c06f56ef1 | 500 g (4 - 5 pcs) | 6000 | 11,900 | true | 6 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
| 2 | Custard Apple Semi Ripe | Fruits | b5cb2914-895d-4b3e-86d0-9bd9f9234428 | 2 pcs (360 - 450 g) | 8400 | 16,700 | true | 1 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
| 3 | Baby Orange (Mandarin) | Exotic Picks | af5a46a1-12de-4d86-9a45-2e4c3dec9206 | 3 pcs | 10,900 | 15,400 | true | 7 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
| 4 | Guava Thai | Exotic Picks | 6ed88f72-38da-433a-8506-d601f4d5916d | 1 pc | 4900 | 9200 | true | 9 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
| 5 | Assorted Roses | Unbranded | a5f9e31f-f04b-42cd-a216-9b912997516c | 100 g | 1700 | 3800 | true | 4 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
| 6 | Onion | Unbranded | 5b5c1960-d2d1-4528-8a74-bc7280174071 | 900 g - 1 kg | 6900 | 12,600 | true | 9 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
| 7 | Mushroom Button | Exotic Picks | 178b3f0f-c01d-4065-8f5c-d1902cbb5d51 | 200 g | 6900 | 9300 | true | 9 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
| 8 | Organically Grown Coriander Leaves | Organic Picks | fac392a6-34be-4190-b35d-81e1562cef9e | 100 g | 1980 | 5100 | true | 9 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
| 9 | Coriander Leaves | Unbranded | 90ec80d3-40d9-46b6-8ccb-e1b8cb65a76d | 100 g | 1800 | 3200 | true | 9 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
| 10 | Banana Robusta | Unbranded | 436c0025-de54-4748-a189-79e292f26071 | 4 pcs | 4400 | 7200 | true | 9 | e58fff62-7695-44c2-aba0-6bc96074bc64 | Fruits & Vegetables |
What you send
The input
object of the request, with every field the endpoint accepts.
- To read one place's store, send a store ID, a six-digit pincode, or latitude and longitude together; not a pincode and coordinates at once.
- Ask for 1 to 500 products from 1 to 100 pages. Keep both small when you are exploring.
- When more products follow, send the value from the previous response back unchanged with the same location. Do not make one up or reuse one from another request.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| latitude | number | one of | Latitude in decimal degrees. From -90 to 90. | |
| longitude | number | one of | Longitude in decimal degrees. From -180 to 180. | |
| pincode | string | one of | Six-digit Indian pincode. When provided, Upscrape resolves coordinates and the Zepto delivery store automatically. | 560067 |
| cursor | string | no | ||
| limit | integer | no | Maximum number of results to return. From 1 to 500. Default: 100. |
100 |
| max_pages | integer | no | Maximum number of result pages to fetch. From 1 to 100. Default: 20. |
5 |
| store_id | string | no | Store identifier. |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| results[].name | string | Product name returned by Zepto. | Orange Nagpur |
| results[].brand | string | Brand attached to the product listing. | Unbranded |
| results[].product_variant_id | string | Identity of the exact product pack or variant. | b208fa7b-1d28-4b3a-a821-a17c06f56ef1 |
| results[].formatted_pack_size | string | Pack description returned for this variant. | 500 g (4 - 5 pcs) |
| results[].discounted_selling_price_paise | integer | Displayed offer price in integer paise; divide by 100 for rupees. | 6000 |
| results[].mrp_paise | integer | MRP in integer paise; divide by 100 for rupees. | 11,900 |
| results[].in_stock | boolean | Explicit stock flag for the selected store, when returned. | true |
| results[].available_quantity | integer | Quantity Zepto reports at this check; keep it apart from pack size and purchase limits. | 6 |
| results[].store_id | string | Store attached to this product or delivery context. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| results[].product_url | string | Link to the product on Zepto. | https://www.zepto.com/pn/orange-nagpur/pvid/b208fa7b-1d28-4b3a-… |
| results[].is_active | boolean | Whether the listing is active. | true |
| results[].selling_price_paise | integer | The price you pay, in paise. | 6000 |
| results[].product_id | string | Zepto's product ID. | 152f9dde-51eb-4bf2-9967-3091ca758328 |
| results[].category_name | string | Parent category name in the local directory. | Fruits & Vegetables |
| results[].primary_subcategory_id | string | Zepto's ID for the product's main subcategory. | 09e63c15-e5f7-4712-9ff8-513250b79942 |
| results[].is_primary | boolean | Whether this is the main listing for the product. | true |
| results[].image_urls | array | Links to the product images. | https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-tr… |
| results[].subcategory_name | string | The subcategory name. | All |
| results[].image_url | string | Image URL published with the placement. | https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-tr… |
| results[].rank | integer | Position in the list. | 1 |
| results[].shelf_life_display | string | Shelf life as Zepto shows it, such as 4 days. | 4 days |
| results[].l3_category_id | string | Zepto's ID for the product's third-level category. | 5b58f67d-1e93-4715-ab41-b090a9c82a82 |
| results[].category_id | string | Parent category identity. | 64374cfe-d06f-4a01-898e-c07c46462c36 |
| results[].pack_size | integer | The pack size, in the unit given. | 500 |
| results[].quantity | integer | Units the store has, as Zepto reports it. | 6 |
| results[].brand_id | string | Zepto's ID for the brand. | d69ba762-dfca-47f4-8e52-d09a6d1ffbd0 |
| results[].description | null | Suggested public place and its area. | null |
| results[].max_allowed_quantity | integer | The most of this product one order can hold. | 6 |
| results[].discount_percent | integer | The discount, as a percentage. | 49 |
| results[].store_product_id | string | Zepto's ID for the product at this store. | d6c16e0d-77d8-569d-a036-f51ce77cb11a |
| results[].category_path | array | Where the product sits in Zepto's categories. | Fruits & Vegetables, All |
| results[].country_of_origin | string | Where the product comes from. | India |
| results[].weight_in_gms | integer | Pack weight in grams. | 500 |
| results[].shelf_life_hours | integer | Shelf life in hours. | 96 |
| results[].product_type | string | The kind of product record. | SELLABLESKU |
| results[].unit_of_measure | string | The pack's unit, such as GRAM. | GRAM |
| results[].discount_amount_paise | integer | The discount, in paise. | 5900 |
| location | object | The location the results were read for. | 9 fields |
| location.eta_minutes | integer | Zepto's delivery estimate in minutes, when it gives one. | 11 |
| location.eta_serviceable | boolean | Whether Zepto delivers to this location. | true |
| location.latitude | number | Latitude of the resolved or requested delivery point. | 13.0 |
| location.longitude | number | Longitude of the resolved or requested delivery point. | 77.76 |
| location.pincode | string | Pincode retained in the resolved location, when supplied and returned. | 560067 |
| location.secondary_store_ids | array | Backup stores serving the location. | 0059ff6a-7eb0-477a-a7f5-69256f2c444b |
| location.serviceable | boolean | The endpoint’s serviceability signal; location coverage and delivery-estimate availability are separate checks. | true |
| location.store_id | string | Store attached to this product or delivery context. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| location.store_ids | array | Zepto stores serving the location. | e58fff62-7695-44c2-aba0-6bc96074bc64, 0059ff6a-7eb0-477a-a7f5-6… |
| captured_at | string | When this result was collected. | 2026-10-04T12:00:30.566253632Z |
| context | object | How the location was set for these results. | 2 fields |
| context.source | string | How the location was found. | resolved_location |
| context.store_id | string | Store attached to this product or delivery context. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| count | integer | Number of products returned for this delivery context. | 100 |
| cursor | string | Send it back to get the next page. | eyJ2IjoyLCJzY29wZSI6ImIyYmNjMTUyNzgzYjkzNGM5NDA1Y2I1NjUxOTJjMjh… |
| has_more | boolean | Whether catalog traversal can continue; this does not certify a complete store snapshot. | true |
| results | array | The results returned. | 100 records |
What this endpoint covers
- The next-batch value remembers where you are and which store, not a frozen copy of the stock. If the live catalogue changes it can be refused; start again with a fresh request when that happens.
- Repeats are removed within one call only. Reading a catalogue that changes as you go does not guarantee each product appears once, or a complete stock list at one moment.
- Keep the check time, the store ID and whether more follow with each saved batch.
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": "zepto.catalog", "input": { "limit": 100, "max_pages": 5, "pincode": "560067" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zepto.catalog", "input": { "limit": 100, "max_pages": 5, "pincode": "560067" }}''')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": "zepto.catalog", "input": { "limit": 100, "max_pages": 5, "pincode": "560067" }}),});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
Using Upscrape, collect a Zepto catalog sample of 100 products from up to five pages at pincode 560067. Make a table of brands, packs, prices and stock for my analyst to save. Include pack IDs, the serving store, check time and what is needed to collect more products. Treat it as one snapshot.
More from the Zepto API
- Zepto Products Search API1 credit
- Zepto Product API1 credit
- Zepto Categories API1 credit
- Zepto Category Products API1 credit
- Zepto Ads API1 credit
- Zepto Multi-location Search API1 credit
- Zepto Multi-location Catalog API1 credit
- Zepto Resolve Location API1 credit
- Zepto ETA API1 credit
- Zepto Place Autocomplete API1 credit
- Zepto Place Details API1 credit
- Zepto Resolve Place API1 credit
- Zepto Summarize Search Facets API1 credit
- Zepto Health Check API1 credit
Zepto Store Catalog API FAQ
The short answers. The docs have the long ones.
How much does the Zepto Store Catalog 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 Zepto login?
No. It reads public Zepto data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds zepto.catalog, checks its price and runs it with the same credits as the REST API.
Your first Zepto call is free.
Up to 100 free credits to start, no card needed.