Zepto Summarize Search Facets API
Send a query and location to summarize brands, price bands and availability in the products analyzed. Counts describe that sample.
- 1 credit per call
- Failed calls are free
- Updated
- zepto.search.facets
{ "captured_at": "2026-10-04T12:05:20.84372853Z", "discount_unknown": 0, "has_more": true, "location_eta_in_minutes": 11, "location_eta_serviceable": true, "location_latitude": 12.9967012, "location_longitude": 77.758197, "location_serviceable": true, "location_store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "price_max_paise": 261900, "price_min_paise": 5300, "price_unknown": 0, "products_analyzed": 50, "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" ] }, "availability": { "in_stock": 50, "out_of_stock": 0, "unknown": 0 }, "context": { "source": "resolved_location", "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64" }, "brands": [ { "count": 12, "id": "8f0fa49a-9afe-41b5-b9bc-7fdea8af7d15", "value": "Daawat" }, { "count": 8, "id": "06b3a6c8-9762-46d2-83c5-1623b7d3a508", "value": "Daily Good" } ], "categories": [ { "count": 49, "id": "2f7190d0-7c40-458b-b450-9a1006db3d95", "value": "Atta, Rice, Oil & Dals" } ], "discount_ranges": [ { "count": 3, "label": "1% - 9%", "max": 10, "min": 1 }, { "count": 22, "label": "10% - 24%", "max": 25, "min": 10 } ], "location_secondary_store_ids": [ "0059ff6a-7eb0-477a-a7f5-69256f2c444b" ], "location_store_ids": [ "e58fff62-7695-44c2-aba0-6bc96074bc64", "0059ff6a-7eb0-477a-a7f5-69256f2c444b" ], "price_ranges": [ { "count": 14, "label": "₹50 - ₹100", "max": 10000, "min": 5000 }, { "count": 7, "label": "₹100 - ₹200", "max": 20000, "min": 10000 } ], "subcategories": [ { "count": 15, "id": "9798b797-0db0-4b04-b198-31b0a5849318", "value": "Rice & More" } ]}
What you send
The input
object of the request, with every field the endpoint accepts.
- Send a search term. Analyse 1 to 100 search products from 1 to 20 pages.
- For one place's summary, send a store ID, a six-digit pincode, or latitude and longitude together; not a pincode and coordinates at once.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| query | string | yes | Search query string. | rice |
| latitude | number | one of | Latitude for location-based store resolution. From -90 to 90. | |
| longitude | number | one of | Longitude for location-based store resolution. From -180 to 180. | |
| pincode | string | one of | Six-digit Indian pincode. When provided, Upscrape resolves coordinates and the Zepto delivery store automatically. | 560067 |
| limit | integer | no | Number of search results to analyze. Facet counts describe this sample, not the full result set. From 1 to 100. Default: 100. |
50 |
| max_pages | integer | no | Maximum number of pages to fetch. From 1 to 20. Default: 10. |
|
| store_id | string | no | Zepto store ID. Defaults to the public Bangalore sample store. |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| 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… |
| availability | object | Products counted by stock: in stock, out of stock, unknown. | 3 fields |
| availability.in_stock | integer | Explicit stock flag for the selected store, when returned. | 50 |
| availability.out_of_stock | integer | How many products were out of stock. | 0 |
| availability.unknown | integer | How many products had no stock information. | 0 |
| brands | array | Brands among the results, with counts. | 15 records |
| brands[].count | integer | Number of products returned for this delivery context. | 12 |
| brands[].id | string | Brand identity in the sampled summary. | 8f0fa49a-9afe-41b5-b9bc-7fdea8af7d15 |
| brands[].value | string | Brand name in the sampled search summary. | Daawat |
| captured_at | string | When this result was collected. | 2026-10-04T12:05:20.84372853Z |
| categories | array | Zepto's categories. | 1 records |
| categories[].count | integer | Number of products returned for this delivery context. | 49 |
| categories[].id | string | Brand identity in the sampled summary. | 2f7190d0-7c40-458b-b450-9a1006db3d95 |
| categories[].value | string | Brand name in the sampled search summary. | Atta, Rice, Oil & Dals |
| 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 |
| discount_ranges | array | Products counted by discount range. | 4 records |
| discount_ranges[].count | integer | Number of products returned for this delivery context. | 3 |
| discount_ranges[].label | string | The range's label, such as 1% - 9%. | 1% - 9% |
| discount_ranges[].max | integer | The range's upper end. | 10 |
| discount_ranges[].min | integer | The range's lower end. | 1 |
| discount_unknown | integer | How many products had no discount information. | 0 |
| has_more | boolean | Whether catalog traversal can continue; this does not certify a complete store snapshot. | true |
| location_eta_in_minutes | integer | Estimated delivery time at the location, in minutes. | 11 |
| location_eta_serviceable | boolean | Whether Zepto delivers to the location. | true |
| location_latitude | number | Latitude of the location. | 13.0 |
| location_longitude | number | Longitude of the location. | 77.76 |
| location_secondary_store_ids | array | Backup stores serving the location. | 0059ff6a-7eb0-477a-a7f5-69256f2c444b |
| location_serviceable | boolean | Whether the resolved location is served by Zepto. | true |
| location_store_id | string | The serving store found by the location lookup or the access check. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| location_store_ids | array | Zepto stores serving the location. | e58fff62-7695-44c2-aba0-6bc96074bc64, 0059ff6a-7eb0-477a-a7f5-6… |
| price_max_paise | integer | Highest price among the results, in paise. | 261,900 |
| price_min_paise | integer | Lowest price among the results, in paise. | 5300 |
| price_ranges | array | Products counted by price range. | 5 records |
| price_ranges[].count | integer | Number of products returned for this delivery context. | 14 |
| price_ranges[].label | string | The range's label, such as 1% - 9%. | ₹50 - ₹100 |
| price_ranges[].max | integer | The range's upper end. | 10,000 |
| price_ranges[].min | integer | The range's lower end. | 5000 |
| price_unknown | integer | How many products had no price. | 0 |
| products_analyzed | integer | How many products these counts are based on. | 50 |
| subcategories | array | The subcategories inside a category. | 1 records |
| subcategories[].count | integer | Number of products returned for this delivery context. | 15 |
| subcategories[].id | string | Brand identity in the sampled summary. | 9798b797-0db0-4b04-b198-31b0a5849318 |
| subcategories[].value | string | Brand name in the sampled search summary. | Rice & More |
What this endpoint covers
- The response says how many products were analysed, and whether more search products may lie beyond them.
- Brands, categories, subcategories, price and discount ranges and availability counts describe only the products analysed. Unknown prices and discounts are counted apart, not as zero.
- This is a summary of the products read, not Zepto's own search filters and not the spread across every matching product.
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.facets", "input": { "limit": 50, "pincode": "560067", "query": "rice" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zepto.search.facets", "input": { "limit": 50, "pincode": "560067", "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.facets", "input": { "limit": 50, "pincode": "560067", "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, summarize the brands in Zepto’s rice search sample at pincode 560067 with limit 50. Show the number of products analyzed, counts by brand, price bands and availability. Explain that these are sample counts when reviewing the competing range.
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 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 Health Check API1 credit
The same data from other platforms
Zepto Summarize Search Facets API FAQ
The short answers. The docs have the long ones.
How much does the Zepto Summarize Search Facets 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. 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.facets, 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.