Search products
Search Zepto products by keyword or supported search URL with local product fields, bounded filters, sample-scoped sorting and continuation.
zepto.search
/execute
Shared execution endpoint
Input parameters
Provide query, or a supported Zepto/Zeptonow /search?query=... URL. If both are supplied, the decoded URL query and explicit query must agree. query is 1 to 500 characters.
For location-specific results, provide store_id, a six-digit pincode, or both latitude and longitude. Do not combine pincode with coordinates.
limit accepts 1 to 100 matching products and max_pages accepts 1 to 20 native product pages. page and legacy page_number are zero-based starting-page controls.
Optional filters are brand_ids, brand_names, min_price_paise, max_price_paise, min_discount and in_stock. Brand lists accept up to 64 values each. sort is relevance, price_asc or price_desc. Price ordering applies only to the bounded matching sample.
For sequential continuation, pass next_cursor back as cursor with the same query, filters, limit and delivery inputs, and omit page fields.
brand_ids
array<string>
optional
Case-insensitive exact IDs; union with brand_names.
brand_names
array<string>
optional
Trimmed case-insensitive exact names; union with brand_ids.
cursor
string
optional
Returned next_cursor; preserve query, filters, limit and delivery inputs; omit page fields.
in_stock
boolean
optional
Match observed stock state only; unknown stock never matches.
latitude
number
optional
Latitude for location-based store resolution. From -90 to 90.
limit
integer
optional
Maximum matching sample size. Sorting is limited to this sample. From 1 to 100. Default: `20`.
5
longitude
number
optional
Longitude for location-based store resolution. From -180 to 180.
max_pages
integer
optional
Maximum native product pages fetched, including continuation refetches and skipped prefixes. A zero-match slice can still have continuation. Location and category enrichment are separate bounded requests. From 1 to 20. Default: `10`.
1
max_price_paise
integer
optional
Inclusive observed effective price maximum. From 0 to 1000000000.
min_discount
integer
optional
Minimum known discount percentage. From 0 to 100.
min_price_paise
integer
optional
Inclusive observed effective price minimum; unknown prices never match. From 0 to 1000000000.
page
integer
optional
Optional zero-based starting page (0-99). Takes precedence over page_number only when supplied. From 0 to 99.
0
page_number
integer
optional
Legacy zero-based page alias (0-99). Prefer page. From 0 to 99.
pincode
string
optional
Six-digit Indian pincode. When provided, Upscrape resolves coordinates and the Zepto delivery store automatically.
560067
query
string
optional
Search query string.
rice
sort
string
optional
Price order applies only to the bounded returned matching sample; unknown prices last, ties by variant ID. Allowed values: `relevance`, `price_asc`, `price_desc`.
store_id
string
optional
Zepto store ID. Defaults to the public Bangalore sample store.
url
string
optional
Zepto or zeptonow HTTPS /search?query=... link. Explicit query must agree.
Response
Successful output is returned in results[0].data.
rank is relative to the returned slice. Search visibility is not a stock verdict; check a known product variant directly at the same location when availability matters.
Check has_more, next_cursor, rows_scanned, pages_fetched and stop_reason before treating the sample as complete. stop_reason page_budget means the bounded scan ended before traversal was exhausted.
sort_scope reports upstream or bounded_sample. A price_asc result with bounded_sample is not guaranteed to be globally ascending across all matching Zepto products.
applied_filters and sample_size describe the normalized filter/sort settings and the returned matching sample.
Illustrative output fields
Values illustrate one response. Read the guidance above for missing values and limits; fields can vary with the requested operation and the data available.
| Path | Observed type | Example |
|---|---|---|
applied_filters |
object |
1 fields |
applied_filters.sort |
string |
relevance |
captured_at |
string |
2026-10-01T23:59:41.590294178Z |
context |
object |
2 fields |
context.source |
string |
resolved_location |
context.store_id |
string |
e0e12ce6-3431-4ed8-a74b-b0de26426220 |
count |
integer |
5 |
has_more |
boolean |
true |
location |
object |
9 fields |
location.eta_minutes |
integer |
9 |
location.eta_serviceable |
boolean |
true |
location.is_nightly_store |
boolean |
true |
location.latitude |
number |
12.9967012 |
location.longitude |
number |
77.758197 |
location.pincode |
string |
560067 |
location.serviceable |
boolean |
true |
location.store_id |
string |
e0e12ce6-3431-4ed8-a74b-b0de26426220 |
location.store_ids |
array |
1 items |
location_eta_in_minutes |
integer |
9 |
location_eta_serviceable |
boolean |
true |
location_is_nightly_store |
boolean |
true |
location_latitude |
number |
12.9967012 |
location_longitude |
number |
77.758197 |
location_serviceable |
boolean |
true |
location_store_id |
string |
e0e12ce6-3431-4ed8-a74b-b0de26426220 |
location_store_ids |
array |
1 items |
location_store_ids |
array |
1 items |
next_cursor |
string |
[redacted:token] |
page |
integer |
0 |
page_number |
integer |
0 |
pages_fetched |
integer |
1 |
query |
string |
rice |
results |
array |
3 items |
results |
array |
3 items |
rows_scanned |
integer |
27 |
sample_size |
integer |
5 |
sort_scope |
string |
upstream |
stop_reason |
string |
limit |
Execution behavior
A 200 response completed inline. A 202 response was queued; poll
GET /jobs/:id until the job reaches completed or
failed.
Overview, pricing and sample data for every endpoint: Zepto API