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.
swiggy-instamart.products.search
/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`.
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
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`.
store_id
string
optional
Instamart store ID (alternative to pincode; takes precedence when both are given)
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 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 |
|---|---|---|
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