Zepto Products Search API
Search a term such as rice at your chosen pincode. Review matching packs and their local prices, stock and order in the results.
- 1 credit per call
- Failed calls are free
- Updated
- zepto.search
{ "captured_at": "2026-10-04T11:58:39.865504144Z", "count": 20, "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", "next_cursor": "eyJyZXF1ZXN0IjoiYjY5MjE3OTEzMGQzZTQ2MjhmYTM3NjI3ZTNhZTJiMTg2MzhlNmRmZjlmYmUxMDU3MGMyZjc2YmRjNjcwMDBiYyIsInYiOjIsInNjb3BlIjoiNDNiYzZlMjYzYTE…", "page_number": 0, "rows_scanned": 28, "sample_size": 20, "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" ] }, "applied_filters": { "sort": "relevance" }, "context": { "source": "resolved_location", "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64" }, "location_secondary_store_ids": [ "0059ff6a-7eb0-477a-a7f5-69256f2c444b" ], "location_store_ids": [ "e58fff62-7695-44c2-aba0-6bc96074bc64", "0059ff6a-7eb0-477a-a7f5-69256f2c444b" ], "results": [ { "name": "BestValue Sona Masoori Raw Rice", "available_quantity": 12, "brand": "BestValue", "brand_id": "a37897a1-f7a9-48e9-bc13-f4bcb96dc6e1", "country_of_origin": "India", "description": null, "discount_amount_paise": 2800, "discount_percent": 28, "discounted_selling_price_paise": 7200, "formatted_pack_size": "1 pack (1 kg)", "image_url": "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/1db25844-2d44-44ca-a286-7b5d802d3ca9.png", "in_stock": true, "is_active": true, "is_primary": true, "l3_category_id": "3baaf8d0-e429-4b09-95bf-d6fc49a01360", "manufacturer_name": "Unbranded", "max_allowed_quantity": 12, "mrp_paise": 10000, "pack_size": 1, "primary_category_id": "2f7190d0-7c40-458b-b450-9a1006db3d95", "product_id": "d6348e25-7990-4ffd-b715-877e0d88eeb0", "product_type": "SELLABLESKU", "product_url": "https://www.zepto.com/pn/bestvalue-sona-masoori-raw-rice/pvid/638b44d5-ffcd-49f0-a524-634d48c8ddd6", "product_variant_id": "638b44d5-ffcd-49f0-a524-634d48c8ddd6", "quantity": 62, "rank": 1, "rating_average": 4.5, "selling_price_paise": 7200, "shelf_life_display": "6576 hours", "shelf_life_hours": 6576, "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "store_product_id": "33c96172-a2d0-5a68-8f3a-bda4fc002a6f", "super_saver": true, "unit_of_measure": "KILOGRAM", "weight_in_gms": 1000, "image_urls": [ "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/1db25844-2d44-44ca-a286-7b5d802d3ca9.png" ], "pricing_campaigns": [ { "price_paise": 7200, "type": "SUPER_SAVER" } ] }, { "name": "Daawat Rozana Gold Basmati Rice | Medium Grain", "available_quantity": 4, "brand": "Daawat", "brand_id": "8f0fa49a-9afe-41b5-b9bc-7fdea8af7d15", "country_of_origin": "India", "description": "Daawat Rozana Gold is the finest Basmati Rice and has 3/4th length of the basmati grains. It is specially processed for daily cooking acros…", "discount_amount_paise": 16700, "discount_percent": 27, "discounted_selling_price_paise": 43200, "formatted_pack_size": "1 pack (5 kg)", "image_url": "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/934e256e-ce01-4dc0-bb49-d6a79e84e461.jpg", "in_stock": true, "ingredients": "Basmati Rice", "is_active": true, "is_primary": true, "l3_category_id": "3baaf8d0-e429-4b09-95bf-d6fc49a01360", "manufacturer_address": "L T Foods Limited, 43 milestone, GT road, Nahalgarh, Sonipat, Haryana. 131021.", "manufacturer_name": "L T Foods Limited", "max_allowed_quantity": 12, "mrp_paise": 59900, "pack_size": 5, "primary_category_id": "2f7190d0-7c40-458b-b450-9a1006db3d95", "primary_subcategory_id": "9798b797-0db0-4b04-b198-31b0a5849318", "product_id": "ac15e910-800b-448f-99fc-d2632ab00378", "product_type": "SELLABLESKU", "product_url": "https://www.zepto.com/pn/daawat-rozana-gold-basmati-rice-medium-grain/pvid/43e7fb9a-67eb-4447-998f-7853d8aac77c", "product_variant_id": "43e7fb9a-67eb-4447-998f-7853d8aac77c", "quantity": 4, "rank": 2, "rating_average": 4.6, "selling_price_paise": 43200, "shelf_life_display": "17520 hours", "shelf_life_hours": 17520, "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "store_product_id": "2bcb4dc8-d8fe-48f4-98c4-d946fcd0fcfc", "super_saver": true, "unit_of_measure": "KILOGRAM", "weight_in_gms": 5000, "badges": [ { "name": "Sponsored", "type": "SPONSORED" }, { "name": "Medium Grain", "type": "ATTRIBUTE" } ], "image_urls": [ "https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-true,f-auto,q-80/cms/product_variant/934e256e-ce01-4dc0-bb49-d6a79e84e461.jpg" ], "pricing_campaigns": [ { "price_paise": 43200, "type": "SUPER_SAVER" } ] } ]}
| # | Product | Brand | Variant ID | Pack size | Price (paise) | MRP (paise) | In stock | Reported quantity | Store ID | Country of origin |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | BestValue Sona Masoori Raw Rice | BestValue | 638b44d5-ffcd-49f0-a524-634d48c8ddd6 | 1 pack (1 kg) | 7200 | 10,000 | true | 12 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
| 2 | Daawat Rozana Gold Basmati Rice | Medium Grain | Daawat | 43e7fb9a-67eb-4447-998f-7853d8aac77c | 1 pack (5 kg) | 43,200 | 59,900 | true | 4 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
| 3 | Daily Good Sona Masoori Raw Rice | Daily Good | bfe98cad-c52c-4c3f-9f99-ee9f0f71118f | 1 pack (1 kg) | 8500 | 10,000 | true | 12 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
| 4 | Daawat Rozana Platinum Basmati Rice | Long Grain | Daawat | 9d0b4f46-55c2-4e26-b0c9-3988b78cd671 | 1 pack (5 kg) | 48,000 | 66,500 | true | 1 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
| 5 | GTS Original Kolam Rice | GTS Original | e48a9dce-f3bb-469f-939e-272eb64752a3 | 1 pack (5 kg) | 48,700 | 62,500 | true | 5 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
| 6 | Daawat Rozana Gold Basmati Rice | Medium Grain | Daawat | abed6972-164e-4af0-b674-41260b3829fe | 1 pack (1 kg) | 10,100 | 12,000 | true | 1 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
| 7 | Daawat Rozana Super Basmati Rice | Medium Grain | Daawat | 7851f4a9-cab6-4b75-bae2-bcbc43bf0bdb | 1 pack (5 kg) | 36,200 | 49,900 | true | 12 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
| 8 | Daawat Rozana Super Basmati Rice | Medium Grain | Daawat | 6b78d070-ba4c-459c-9d4d-fe058f71d5cf | 1 pack (1 kg) | 8700 | 10,000 | true | 12 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
| 9 | Zeeba Everyday Basmati Rice | Perfect for Everyday Cooking | Co… | Zeeba | 2a5da16b-3752-48ea-88a6-35221f870ae8 | 1 pack (5 kg) | 37,000 | 57,000 | true | 3 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
| 10 | Shree Akshara Premium Sona Masoori Rice | Steam | Shree Akshara | eeb16c5d-8a67-48f2-b4de-1794d2bbf484 | 1 pack (5 kg) | 35,400 | 39,000 | true | 12 | e58fff62-7695-44c2-aba0-6bc96074bc64 | India |
What you send
The input
object of the request, with every field the endpoint accepts.
- Send a search term of 1 to 500 characters in query, or a Zepto or Zeptonow search link (/search?query=...). If you send both, the term in the link must match query.
- For results at one place, send a store ID, a six-digit pincode, or latitude and longitude together; not a pincode and coordinates at once.
- Ask for 1 to 100 matching products from 1 to 20 of Zepto's pages. The starting page counts from 0.
- You can filter by brand IDs or names (up to 64 each), a price range in paise, a minimum discount, and in stock only. Sort by relevance or price, low or high first; price sorting orders the matching products read in this call.
- To go on, send the returned next-page value back with the same query, filters, limit and location, and leave the page out.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| 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 |
| query | string | one of | Search query string. | rice |
| url | string | one of | Zepto or zeptonow HTTPS /search?query=... link. Explicit query must agree. | |
| brand_ids | array<string> | no | Case-insensitive exact IDs; union with brand_names. | |
| brand_names | array<string> | no | Trimmed case-insensitive exact names; union with brand_ids. | |
| cursor | string | no | Returned next_cursor; preserve query, filters, limit and delivery inputs; omit page fields. | |
| in_stock | boolean | no | Match observed stock state only; unknown stock never matches. | |
| limit | integer | no | Maximum matching sample size. Sorting is limited to this sample. From 1 to 100. Default: 20. |
20 |
| max_pages | integer | no | Maximum native product pages fetched, including continuation refetches and skipped prefixes. A zero-match slice can still have continuation. From 1 to 20. Default: 10. |
3 |
| max_price_paise | integer | no | Inclusive observed effective price maximum. From 0 to 1000000000. | |
| min_discount | integer | no | Minimum known discount percentage. From 0 to 100. | |
| min_price_paise | integer | no | Inclusive observed effective price minimum; unknown prices never match. From 0 to 1000000000. | |
| page | integer | no | Optional zero-based starting page (0-99). Takes precedence over page_number only when supplied. From 0 to 99. | 0 |
| page_number | integer | no | Legacy zero-based page alias (0-99). Prefer page. From 0 to 99. | |
| sort | string | no | unknown prices last, ties by variant ID. Allowed values: relevance, price_asc, price_desc. |
relevance · price_asc · price_desc |
| 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 |
|---|---|---|---|
| results[].name | string | Product name returned by Zepto. | BestValue Sona Masoori Raw Rice |
| results[].brand | string | Brand attached to the product listing. | BestValue |
| results[].product_variant_id | string | Identity of the exact product pack or variant. | 638b44d5-ffcd-49f0-a524-634d48c8ddd6 |
| results[].formatted_pack_size | string | Pack description returned for this variant. | 1 pack (1 kg) |
| results[].discounted_selling_price_paise | integer | Displayed offer price in integer paise; divide by 100 for rupees. | 7200 |
| results[].mrp_paise | integer | MRP in integer paise; divide by 100 for rupees. | 10,000 |
| results[].in_stock | boolean | Explicit stock flag for the selected store, when returned. | true |
| results[].available_quantity | integer | Quantity Zepto reports at this check; keep it apart from pack size and purchase limits. | 12 |
| results[].store_id | string | Store attached to this product or delivery context. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| results[].pricing_campaigns | array | Special prices running on the product. | 1 records |
| results[].pricing_campaigns[].price_paise | integer | The price under this offer, in paise. | 7200 |
| results[].pricing_campaigns[].type | string | The kind of offer, such as SUPER_SAVER. | SUPER_SAVER |
| results[].product_url | string | Link to the product on Zepto. | https://www.zepto.com/pn/bestvalue-sona-masoori-raw-rice/pvid/6… |
| results[].is_active | boolean | Whether the listing is active on Zepto. | true |
| results[].selling_price_paise | integer | The selling price, in paise. | 7200 |
| results[].product_id | string | Zepto's ID for the product. | d6348e25-7990-4ffd-b715-877e0d88eeb0 |
| results[].super_saver | boolean | Whether a Super Saver price applies to the product. | true |
| results[].is_primary | boolean | Whether Zepto marks this as the main listing. | true |
| results[].image_urls | array | Links to the product images. | https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-tr… |
| results[].image_url | string | Image URL published with the placement. | https://cdn.zeptonow.com/production/tr:w-600,ar-1000-1000,pr-tr… |
| results[].rank | integer | Position in this location's list. | 1 |
| results[].shelf_life_display | string | Shelf life in plain form, such as 5 days. | 6576 hours |
| results[].l3_category_id | string | Zepto's ID for the product's third-level category. | 3baaf8d0-e429-4b09-95bf-d6fc49a01360 |
| results[].pack_size | integer | The pack size, in the unit given. | 1 |
| results[].quantity | integer | Units the store has, as Zepto reports it. | 62 |
| results[].brand_id | string | Zepto's ID for the brand. | a37897a1-f7a9-48e9-bc13-f4bcb96dc6e1 |
| results[].description | null | Suggested public place and its area. | null |
| results[].rating_average | number | The average customer rating. | 4.5 |
| results[].primary_category_id | string | Zepto's ID for the product's main category. | 2f7190d0-7c40-458b-b450-9a1006db3d95 |
| results[].max_allowed_quantity | integer | The most units one order can hold. | 12 |
| results[].discount_percent | integer | The discount off the MRP, as a percentage. | 28 |
| results[].manufacturer_name | string | Who makes the product. | Unbranded |
| results[].store_product_id | string | Zepto's ID for the product at this store. | 33c96172-a2d0-5a68-8f3a-bda4fc002a6f |
| results[].country_of_origin | string | Where the product comes from. | India |
| results[].weight_in_gms | integer | The product's weight in grams, as Zepto lists it. | 1000 |
| results[].shelf_life_hours | integer | Shelf life in hours. | 6576 |
| results[].product_type | string | Zepto's product type label, such as SELLABLESKU. | SELLABLESKU |
| results[].unit_of_measure | string | The pack's unit, such as GRAM. | KILOGRAM |
| results[].discount_amount_paise | integer | The discount off the MRP, in paise. | 2800 |
| location | object | The delivery 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… |
| applied_filters | object | The filters used for these results. | 1 fields |
| applied_filters.sort | string | The sort used, such as relevance. | relevance |
| captured_at | string | When this result was collected. | 2026-10-04T11:58:39.865504144Z |
| context | object | How the location was set for these results. | 2 fields |
| context.source | string | How the location was set, such as resolved_location. | resolved_location |
| context.store_id | string | Store attached to this product or delivery context. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| count | integer | Number of products returned for this delivery context. | 20 |
| 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 |
What this endpoint covers
- rank counts within the results returned. Showing up in search is not a stock answer; check a known product pack directly at the same location when availability matters.
- Check whether more results follow, how many rows and pages were read and why the call stopped before treating the results as complete. Stopping at the page limit means there was more to read.
- The response says whether Zepto sorted the results or the call sorted the products it read. A low-to-high result sorted by the call is not in order across every matching Zepto product.
- The response lists the filters and sort applied and how many matching products were read.
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", "input": { "limit": 20, "max_pages": 3, "page": 0, "pincode": "560067", "query": "rice" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zepto.search", "input": { "limit": 20, "max_pages": 3, "page": 0, "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", "input": { "limit": 20, "max_pages": 3, "page": 0, "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, search Zepto for rice at pincode 560067 and compare prices for packs of the same size. Show brand, pack size, offer price and MRP in rupees, and stock. Get up to 20 products from the first three pages. Keep the pack and store IDs with the results.
More from the Zepto API
- 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 Summarize Search Facets API1 credit
- Zepto Health Check API1 credit
Zepto Products Search API FAQ
The short answers. The docs have the long ones.
How much does the Zepto Products Search 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 or url. 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, 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.