Skip to documentation
Browse documentation

Search products

Search the Instamart catalogue for a query at a selected store or delivery location, with pack prices, stock, match positions, result kinds, filters and continuation.

Capability ID swiggy-instamart.products.search
Maximum runtime 120 seconds
View raw

POST /execute Shared execution endpoint

Input parameters

Provide store_id, a six-digit pincode, or both lat and lng. Store takes precedence over pincode, which takes precedence over coordinates. Prefer one selector and retain the returned store and delivery point; one pincode does not describe every address in its area.

Provide a nonblank query of at most 200 characters. Use returned next_offset for continuation; there is no result-limit input.

Choose sort from relevance, price_low_to_high, price_high_to_low or discount_high_to_low. Numeric sorts order the packs on the returned page, not the entire catalogue. Choose brands and types from available_filters, with at most ten unique values in each; min_rating accepts 3, 4 or 4.5.

brands array<string> optional

Selected brand values from available_filters

lat number optional

Latitude in decimal degrees. From -90 to 90.

lng number optional

Longitude in decimal degrees. From -180 to 180.

min_rating number optional

Minimum rating facet Allowed values: `3`, `4`, `4.5`.

Available values 344.5
offset string optional

Opaque next_offset from the previous search page, scoped to this query and location. Legacy page:items cursors remain accepted.

pincode string optional

6-digit Indian PIN code; the store serving it is resolved automatically (alternative to store_id)

primary_store_id string optional

Primary store ID; defaults to store_id

query string required

Product search text

Example milk
secondary_store_id string optional

Secondary store ID when the location has one

sort string optional

Listing order; relevance is the default Allowed values: `relevance`, `price_low_to_high`, `price_high_to_low`, `discount_high_to_low`.

Available values relevanceprice_low_to_highprice_high_to_lowdiscount_high_to_low
store_id string optional

Instamart store ID (alternative to pincode; takes precedence when both are given)

Example 1396284
types array<string> optional

Selected type values from available_filters

Response

Successful output is returned in results[0].data.

Use offer_price_paise, mrp_paise and discount_paise for price arithmetic, dividing by 100 to display rupees. Missing monetary fields remain unknown; a real zero stays zero. Compare the same SKU and pack size, and inspect in_stock separately from price.

Follow next_offset unchanged with the same location, store, query, sorting, filters and layout. An empty product page can still have a continuation. Check pagination_status and pagination_reason; limited or unknown states do not establish complete catalogue coverage.

Only result_type: match rows receive position. Keep promoted, sold_out_collection and other rows separate. An absent sponsorship flag is unknown, and search absence is not a stockout. Confirm availability with product.get at the same location.

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
available_filters object 2 fields
available_filters.facets object 3 fields
available_filters.sorts array 3 items
next_offset string im1.[redacted:token]
pagination_status string continuation_available
products array 3 items
products array 3 items

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: Swiggy Instamart API