Zepto Multi-location Search API
Send one query and several locations to review the products each area returns. Prices and stock stay grouped by serving store.
- 1 credit per call
- Failed calls are free
- Updated
- zepto.search.multi_location
{ "captured_at": "2026-10-04T12:01:13.043500281Z", "results": [ { "count": 2, "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" ] }, "results": [ { "name": "BestValue Sona Masoori Raw Rice", "available_quantity": 12, "brand": "BestValue", "brand_id": "a37897a1-f7a9-48e9-bc13-f4bcb96dc6e1", "country_of_origin": "India", "description": null, "discount_amount_paise": 2800, "discount_percent": 28, "discounted_selling_price_paise": 7200, "formatted_pack_size": "1 pack (1 kg)", "image_url": "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/1db25844-2d44-44ca-a286-7b5d802d3ca9.png", "in_stock": true, "is_active": true, "is_primary": true, "l3_category_id": "3baaf8d0-e429-4b09-95bf-d6fc49a01360", "manufacturer_name": "Unbranded", "max_allowed_quantity": 12, "mrp_paise": 10000, "pack_size": 1, "primary_category_id": "2f7190d0-7c40-458b-b450-9a1006db3d95", "product_id": "d6348e25-7990-4ffd-b715-877e0d88eeb0", "product_type": "SELLABLESKU", "product_url": "https://www.zepto.com/pn/bestvalue-sona-masoori-raw-rice/pvid/638b44d5-ffcd-49f0-a524-634d48c8ddd6", "product_variant_id": "638b44d5-ffcd-49f0-a524-634d48c8ddd6", "quantity": 61, "rank": 1, "rating_average": 4.5, "selling_price_paise": 7200, "shelf_life_display": "6576 hours", "shelf_life_hours": 6576, "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "store_product_id": "33c96172-a2d0-5a68-8f3a-bda4fc002a6f", "super_saver": true, "unit_of_measure": "KILOGRAM", "weight_in_gms": 1000, "image_urls": [ "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/1db25844-2d44-44ca-a286-7b5d802d3ca9.png" ], "pricing_campaigns": [ { "price_paise": 7200, "type": "SUPER_SAVER" } ] }, { "name": "Daawat Rozana Gold Basmati Rice | Medium Grain", "available_quantity": 4, "brand": "Daawat", "brand_id": "8f0fa49a-9afe-41b5-b9bc-7fdea8af7d15", "country_of_origin": "India", "description": "Daawat Rozana Gold is the finest Basmati Rice and has 3/4th length of the basmati grains. It is specially processed for daily cooking acros…", "discount_amount_paise": 16700, "discount_percent": 27, "discounted_selling_price_paise": 43200, "formatted_pack_size": "1 pack (5 kg)", "image_url": "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/934e256e-ce01-4dc0-bb49-d6a79e84e461.jpg", "in_stock": true, "ingredients": "Basmati Rice", "is_active": true, "is_primary": true, "l3_category_id": "3baaf8d0-e429-4b09-95bf-d6fc49a01360", "manufacturer_address": "L T Foods Limited, 43 milestone, GT road, Nahalgarh, Sonipat, Haryana. 131021.", "manufacturer_name": "L T Foods Limited", "max_allowed_quantity": 12, "mrp_paise": 59900, "pack_size": 5, "primary_category_id": "2f7190d0-7c40-458b-b450-9a1006db3d95", "primary_subcategory_id": "9798b797-0db0-4b04-b198-31b0a5849318", "product_id": "ac15e910-800b-448f-99fc-d2632ab00378", "product_type": "SELLABLESKU", "product_url": "https://www.zepto.com/pn/daawat-rozana-gold-basmati-rice-medium-grain/pvid/43e7fb9a-67eb-4447-998f-7853d8aac77c", "product_variant_id": "43e7fb9a-67eb-4447-998f-7853d8aac77c", "quantity": 4, "rank": 2, "rating_average": 4.6, "selling_price_paise": 43200, "shelf_life_display": "17520 hours", "shelf_life_hours": 17520, "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "store_product_id": "2bcb4dc8-d8fe-48f4-98c4-d946fcd0fcfc", "super_saver": true, "unit_of_measure": "KILOGRAM", "weight_in_gms": 5000, "badges": [ { "name": "Sponsored", "type": "SPONSORED" }, { "name": "Medium Grain", "type": "ATTRIBUTE" } ], "image_urls": [ "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/934e256e-ce01-4dc0-bb49-d6a79e84e461.jpg" ], "pricing_campaigns": [ { "price_paise": 43200, "type": "SUPER_SAVER" } ] } ] }, { "count": 2, "location": { "eta_minutes": 10, "eta_serviceable": true, "latitude": 12.9716, "longitude": 77.5946, "serviceable": true, "store_id": "b1403534-cd6b-49d0-a7cd-ce20e6497768", "secondary_store_ids": [ "843e630a-7896-462d-b7cf-712140483ed3" ], "store_ids": [ "b1403534-cd6b-49d0-a7cd-ce20e6497768", "843e630a-7896-462d-b7cf-712140483ed3" ] }, "results": [ { "name": "BestValue Sona Masoori Raw Rice", "available_quantity": 12, "brand": "BestValue", "brand_id": "a37897a1-f7a9-48e9-bc13-f4bcb96dc6e1", "country_of_origin": "India", "description": null, "discount_amount_paise": 2800, "discount_percent": 28, "discounted_selling_price_paise": 7200, "formatted_pack_size": "1 pack (1 kg)", "image_url": "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/1db25844-2d44-44ca-a286-7b5d802d3ca9.png", "in_stock": true, "is_active": true, "is_primary": true, "l3_category_id": "3baaf8d0-e429-4b09-95bf-d6fc49a01360", "manufacturer_name": "Unbranded", "max_allowed_quantity": 12, "mrp_paise": 10000, "pack_size": 1, "primary_category_id": "2f7190d0-7c40-458b-b450-9a1006db3d95", "product_id": "d6348e25-7990-4ffd-b715-877e0d88eeb0", "product_type": "SELLABLESKU", "product_url": "https://www.zepto.com/pn/bestvalue-sona-masoori-raw-rice/pvid/638b44d5-ffcd-49f0-a524-634d48c8ddd6", "product_variant_id": "638b44d5-ffcd-49f0-a524-634d48c8ddd6", "quantity": 28, "rank": 1, "rating_average": 4.5, "selling_price_paise": 7200, "shelf_life_display": "6576 hours", "shelf_life_hours": 6576, "store_id": "b1403534-cd6b-49d0-a7cd-ce20e6497768", "store_product_id": "3d9d18fd-fe55-557e-a694-6cc153149053", "super_saver": true, "unit_of_measure": "KILOGRAM", "weight_in_gms": 1000, "image_urls": [ "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/1db25844-2d44-44ca-a286-7b5d802d3ca9.png" ], "pricing_campaigns": [ { "price_paise": 7200, "type": "SUPER_SAVER" } ] }, { "name": "Daawat Rozana Gold Basmati Rice | Medium Grain", "available_quantity": 3, "brand": "Daawat", "brand_id": "8f0fa49a-9afe-41b5-b9bc-7fdea8af7d15", "country_of_origin": "India", "description": "Daawat Rozana Gold is the finest Basmati Rice and has 3/4th length of the basmati grains. It is specially processed for daily cooking acros…", "discount_amount_paise": 18900, "discount_percent": 31, "discounted_selling_price_paise": 41000, "formatted_pack_size": "1 pack (5 kg)", "image_url": "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/934e256e-ce01-4dc0-bb49-d6a79e84e461.jpg", "in_stock": true, "ingredients": "Basmati Rice", "is_active": true, "is_primary": true, "l3_category_id": "3baaf8d0-e429-4b09-95bf-d6fc49a01360", "manufacturer_address": "L T Foods Limited, 43 milestone, GT road, Nahalgarh, Sonipat, Haryana. 131021.", "manufacturer_name": "L T Foods Limited", "max_allowed_quantity": 12, "mrp_paise": 59900, "pack_size": 5, "primary_category_id": "2f7190d0-7c40-458b-b450-9a1006db3d95", "primary_subcategory_id": "9798b797-0db0-4b04-b198-31b0a5849318", "product_id": "ac15e910-800b-448f-99fc-d2632ab00378", "product_type": "SELLABLESKU", "product_url": "https://www.zepto.com/pn/daawat-rozana-gold-basmati-rice-medium-grain/pvid/43e7fb9a-67eb-4447-998f-7853d8aac77c", "product_variant_id": "43e7fb9a-67eb-4447-998f-7853d8aac77c", "quantity": 3, "rank": 2, "rating_average": 4.6, "selling_price_paise": 41000, "shelf_life_display": "17520 hours", "shelf_life_hours": 17520, "store_id": "b1403534-cd6b-49d0-a7cd-ce20e6497768", "store_product_id": "b0bebb55-6d3f-48c9-8e86-e80df9c2489a", "super_saver": true, "unit_of_measure": "KILOGRAM", "weight_in_gms": 5000, "badges": [ { "name": "Sponsored", "type": "SPONSORED" }, { "name": "Medium Grain", "type": "ATTRIBUTE" } ], "image_urls": [ "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/934e256e-ce01-4dc0-bb49-d6a79e84e461.jpg" ], "pricing_campaigns": [ { "price_paise": 41000, "type": "SUPER_SAVER" } ] } ] } ]}
| # | Products returned |
|---|---|
| 1 | 2 |
| 2 | 2 |
What you send
The input
object of the request, with every field the endpoint accepts.
- Send a search term and 1 to 10 locations. Give each location either a six-digit pincode or latitude and longitude together.
- Ask for 1 to 100 products per place, from 1 to 20 pages.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| locations | array<object> | yes | […] | |
| query | string | yes | Search query. | rice |
| limit | integer | no | Maximum number of results to return. From 1 to 100. Default: 20. |
2 |
| max_pages | integer | no | Maximum number of result pages to fetch. From 1 to 20. Default: 10. |
1 |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| results[].count | integer | Number of products returned for this delivery context. | 2 |
| results[].results[].name | string | The product name. | BestValue Sona Masoori Raw Rice |
| results[].location | object | The location the results were read for. | 9 fields |
| results[].location.eta_minutes | integer | Zepto's delivery estimate in minutes, when it gives one. | 11 |
| results[].location.eta_serviceable | boolean | Whether Zepto delivers to this location. | true |
| results[].location.latitude | number | Latitude of the resolved or requested delivery point. | 13.0 |
| results[].location.longitude | number | Longitude of the resolved or requested delivery point. | 77.76 |
| results[].location.pincode | string | Pincode retained in the resolved location, when supplied and returned. | 560067 |
| results[].location.secondary_store_ids | array | Backup stores serving the location. | 0059ff6a-7eb0-477a-a7f5-69256f2c444b |
| results[].location.serviceable | boolean | The endpoint’s serviceability signal; location coverage and delivery-estimate availability are separate checks. | true |
| results[].location.store_id | string | Store attached to this product or delivery context. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| results[].location.store_ids | array | Zepto stores serving the location. | e58fff62-7695-44c2-aba0-6bc96074bc64, 0059ff6a-7eb0-477a-a7f5-6… |
| results[].results | array | The results returned. | 2 records |
| results[].results[].pricing_campaigns | array | Special prices running on the product. | 1 records |
| results[].results[].product_url | string | Link to the product on Zepto. | https://www.zepto.com/pn/bestvalue-sona-masoori-raw-rice/pvid/6… |
| results[].results[].is_active | boolean | Whether the listing is active on Zepto. | true |
| results[].results[].selling_price_paise | integer | The selling price, in paise. | 7200 |
| results[].results[].product_id | string | Zepto's ID for the product. | d6348e25-7990-4ffd-b715-877e0d88eeb0 |
| results[].results[].super_saver | boolean | Whether a Super Saver price applies to the product. | true |
| results[].results[].is_primary | boolean | Whether Zepto marks this as the main listing. | true |
| results[].results[].image_urls | array | Links to the product images. | https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-tr… |
| results[].results[].store_id | string | Zepto's ID for the store selling the product. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| results[].results[].product_variant_id | string | Zepto's ID for this exact pack. | 638b44d5-ffcd-49f0-a524-634d48c8ddd6 |
| results[].results[].image_url | string | Link to the main product image. | https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-tr… |
| results[].results[].formatted_pack_size | string | The pack size as Zepto shows it. | 1 pack (1 kg) |
| results[].results[].brand | string | The brand name. | BestValue |
| results[].results[].rank | integer | Position in this location's list. | 1 |
| results[].results[].shelf_life_display | string | Shelf life in plain form, such as 5 days. | 6576 hours |
| results[].results[].l3_category_id | string | Zepto's ID for the product's third-level category. | 3baaf8d0-e429-4b09-95bf-d6fc49a01360 |
| results[].results[].pack_size | integer | The pack size, in the unit given. | 1 |
| results[].results[].quantity | integer | Units the store has, as Zepto reports it. | 61 |
| results[].results[].available_quantity | integer | How many units you can buy at this check. | 12 |
| results[].results[].brand_id | string | Zepto's ID for the brand. | a37897a1-f7a9-48e9-bc13-f4bcb96dc6e1 |
| results[].results[].description | null | The product description, when Zepto gives one. | null |
| results[].results[].mrp_paise | integer | The MRP, in paise. | 10,000 |
| results[].results[].rating_average | number | The average customer rating. | 4.5 |
| results[].results[].primary_category_id | string | Zepto's ID for the product's main category. | 2f7190d0-7c40-458b-b450-9a1006db3d95 |
| results[].results[].max_allowed_quantity | integer | The most units one order can hold. | 12 |
| results[].results[].discount_percent | integer | The discount off the MRP, as a percentage. | 28 |
| results[].results[].in_stock | boolean | Whether the product is in stock at this store. | true |
| results[].results[].manufacturer_name | string | Who makes the product. | Unbranded |
| results[].results[].store_product_id | string | Zepto's ID for the product at this store. | 33c96172-a2d0-5a68-8f3a-bda4fc002a6f |
| results[].results[].country_of_origin | string | Where the product comes from. | India |
| results[].results[].weight_in_gms | integer | The product's weight in grams, as Zepto lists it. | 1000 |
| results[].results[].shelf_life_hours | integer | Shelf life in hours. | 6576 |
| results[].results[].product_type | string | Zepto's product type label, such as SELLABLESKU. | SELLABLESKU |
| results[].results[].discounted_selling_price_paise | integer | The offer price shown, in paise. | 7200 |
| results[].results[].unit_of_measure | string | The pack's unit, such as GRAM. | KILOGRAM |
| results[].results[].discount_amount_paise | integer | The discount off the MRP, in paise. | 2800 |
| captured_at | string | When this result was collected. | 2026-10-04T12:01:13.043500281Z |
| results | array | The results returned. | 2 records |
What this endpoint covers
- Results are grouped by the place you asked about. Keep each group with its place, and treat the same product at different stores as separate rows, not one national record.
- Read it as you would a single search: the rows returned and the limits you set do not prove the full stock.
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.search.multi_location", "input": { "limit": 2, "locations": [ { "pincode": "560067" }, { "latitude": 12.9716, "longitude": 77.5946 } ], "max_pages": 1, "query": "rice" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zepto.search.multi_location", "input": { "limit": 2, "locations": [ { "pincode": "560067" }, { "latitude": 12.9716, "longitude": 77.5946 } ], "max_pages": 1, "query": "rice" }}''')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.search.multi_location", "input": { "limit": 2, "locations": [ { "pincode": "560067" }, { "latitude": 12.9716, "longitude": 77.5946 } ], "max_pages": 1, "query": "rice" }}),});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, compare a small Zepto rice sample at pincode 560067 and at latitude 12.9716, longitude 77.5946, two products from one page at each, with the multi-location search. Show prices and stock by area, and compare only shared packs with the same variant ID.
More from the Zepto API
- Zepto Products Search API1 credit
- Zepto Product API1 credit
- Zepto Categories API1 credit
- Zepto Category Products API1 credit
- Zepto Store Catalog API1 credit
- Zepto Ads 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
The same data from other platforms
Zepto Multi-location Search API FAQ
The short answers. The docs have the long ones.
How much does the Zepto Multi-location Search API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send query and locations. The input fields below list every option with its type and limits.
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.search.multi_location, 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.