Skip to documentation
Browse documentation

Search products

Search Zepto products by keyword or supported search URL with local product fields, bounded filters, sample-scoped sorting and continuation.

Capability ID zepto.search
Maximum runtime 180 seconds
View raw

POST /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`.

Example 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`.

Example 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.

Example 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.

Example 560067
query string optional

Search query string.

Example 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`.

Available values relevanceprice_ascprice_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 sample The example response is shown in the response panel.

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.

PathObserved typeExample
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