Zepto Store Catalog
zepto.catalog
Choose a location to collect products across its store’s categories. Each batch includes the store and information for collecting further results.
At a glance
- Endpoint ID
zepto.catalog- Price
- 3–10 credits per call; failed calls are free
- Runs for up to
- 180 seconds
Request
Send the endpoint ID as capability and its fields as input. Set UPSCRAPE_API_KEY to your key first.
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));
Input
- 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. |
Response
A finished call answers with HTTP 200; the data is in results[0].data, and billing.credits_charged is what it cost. A call still running after the wait answers 202: see jobs and results.
This is results[0].data from a real run:
{ "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" ] } ]}
Fields
| 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 to know
- 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.
If a call fails
A failed call costs nothing. The response carries an error.code you can branch on; Errors and retries lists every code and which ones to retry.
Other Zepto endpoints
zepto.adsAdszepto.catalog.multi_locationMulti-location catalogzepto.categoriesCategorieszepto.category.productsCategory productszepto.etaETAzepto.healthHealth checkzepto.locationResolve locationzepto.place.autocompletePlace autocompletezepto.place.detailsPlace detailszepto.place.resolveResolve placezepto.productProductzepto.searchProducts searchzepto.search.facetsSummarize search facetszepto.search.multi_locationMulti-location search
Something missing or unclear? Ask the team that builds the Zepto endpoints.