Zepto APIzepto.com ↗
Access Zepto grocery data via API: search products, browse categories, check delivery serviceability by pincode, get product details, and fetch live ETA estimates.
What is the Zepto API?
The Zepto API exposes 5 endpoints covering India's quick-commerce grocery platform, letting you search products by keyword, retrieve full product details by variant ID, check delivery serviceability for any Indian pincode, list top-level categories, and fetch real-time delivery ETA estimates. The search_products endpoint returns per-product fields including MRP, selling price, discount percentage, brand, pack size, and stock status.
curl -X GET 'https://api.parse.bot/scraper/9323a803-9e53-4c9b-bd5b-e61f1da838b9/search_products?page=0&query=milk' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace zepto-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.zepto_grocery_api import Zepto, Product, Category, DeliveryLocation, DeliveryEta
zepto = Zepto()
# Search for milk products with pagination
for product in zepto.products.search(query="milk", limit=5):
print(product.name, product.brand, product.price, product.in_stock)
# Get detailed product info by pvid
detail = zepto.products.get(pvid="ba77f9b3-0525-4ce8-bc4b-a2480419b780")
print(detail.name, detail.mrp, detail.packsize)
# List all categories
for category in zepto.categories.list():
print(category.id, category.name)
# Set delivery location and check serviceability
location = zepto.deliverylocations.set(pincode="400001")
print(location.store_id, location.serviceable, location.short_address)
# Check delivery ETA
eta = zepto.deliveryetas.get()
print(eta.eta_minutes, eta.is_deliverable, eta.display_text)
Full-text search over Zepto's grocery product catalog for a configured store location. Returns product details including name, brand, pricing (MRP and discounted selling price), stock availability, category, and images. Results are paginated by page number (0-indexed). The store location defaults to Bangalore; use set_delivery_location to change it.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (0-indexed) |
| queryrequired | string | Search keyword (e.g. 'milk', 'bread', 'chips') |
{
"type": "object",
"fields": {
"page": "integer — the page number returned",
"query": "string — the search keyword used",
"products": "array of product objects with id, pvid, name, brand, description, packsize, mrp, price, discount_percent, discount_amount, in_stock, available_quantity, category_name, category_id, images, product_url"
},
"sample": {
"data": {
"page": 0,
"query": "milk",
"products": [
{
"id": "a9c4c45e-4fe4-5762-ad8f-b29c1d0814ed",
"mrp": 27,
"name": "Godrej Jersey Toned Fresh Milk | Pouch",
"pvid": "ba77f9b3-0525-4ce8-bc4b-a2480419b780",
"brand": "Godrej Jersey",
"price": 26,
"images": [
"cms/product_variant/8fd1fa19-56f7-4f23-8a0d-625fc669cec2.jpeg"
],
"in_stock": true,
"packsize": "1 pack (490 ml or 500 ml)",
"category_id": "4b938e02-7bde-4479-bc0a-2b54cb6bd5f5",
"description": [
"Godrej Jersey Toned Milk"
],
"product_url": "https://www.zepto.com/pn/a9c4c45e-4fe4-5762-ad8f-b29c1d0814ed",
"category_name": "Dairy, Bread & Eggs",
"discount_amount": 1,
"discount_percent": 3,
"available_quantity": 4
}
]
},
"status": "success"
}
}About the Zepto API
Product Search and Details
The search_products endpoint accepts a required query string (e.g., 'milk', 'chips') and an optional zero-indexed page integer for pagination. Each result in the products array includes id, pvid, name, brand, description, packsize, mrp, price, discount_percent, discount_amount, and in_stock. The pvid field is a UUID that feeds directly into get_product_details, which returns the full product record including an images array of image path strings and the canonical product_url on Zepto.
Location Setup and Serviceability
Before fetching location-sensitive data, use set_delivery_location with a 6-digit Indian pincode (e.g., '400001' for Mumbai, '110001' for Delhi). The response returns a store_id UUID identifying the nearest Zepto store, a serviceable boolean, resolved lat/lng coordinates, and a short_address string. This call establishes the store context used by search_products and get_categories.
Categories and Delivery ETA
get_categories returns all top-level categories for the configured location, each with an id, name, image, and deeplink. get_delivery_eta returns the current estimated delivery window as eta_minutes, a display_text label, a human-readable secondary_text (e.g., '4 minutes'), and an is_deliverable boolean. Both endpoints require no additional parameters beyond an active delivery location.
Coverage Notes
The API covers Zepto's Indian service area only. Prices and stock status are location-dependent and reflect the nearest store resolved for the supplied pincode. Product prices are denominated in INR.
The Zepto API is a managed, monitored endpoint for zepto.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zepto.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official zepto.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor price and discount changes on specific products using
mrp,price, anddiscount_percentfromsearch_products - Build a grocery price comparison tool across Indian pincodes using
set_delivery_locationandsearch_products - Check whether Zepto delivers to a given pincode using the
serviceablefield fromset_delivery_location - Display real-time delivery ETA in a last-mile logistics dashboard using
eta_minutesandis_deliverablefromget_delivery_eta - Populate a category navigation menu for an Indian quick-commerce aggregator using
get_categories - Track in-stock status of specific product variants over time using
in_stockfromget_product_details - Build a product catalog enrichment pipeline using
images,brand,packsize, andproduct_urlfromget_product_details
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Zepto have an official public developer API?+
What does `set_delivery_location` actually control, and do I need to call it before searching?+
set_delivery_location resolves a 6-digit Indian pincode to coordinates and identifies the nearest Zepto store via a store_id UUID. Product search results, category listings, and stock availability are all store-specific, so the delivery location should be set before calling search_products or get_categories. The response also includes a serviceable boolean so you can confirm Zepto operates in that area before making further calls.Does `search_products` support filtering by category, brand, or price range?+
search_products endpoint accepts a query string and an optional page integer. It does not expose filter parameters for category, brand, or price range directly. Each returned product includes brand, price, mrp, and discount_percent, so client-side filtering is possible on those fields. You can fork this API on Parse and revise it to add a category-scoped browse or brand-filter endpoint.Does the API expose order placement, cart management, or user account data?+
Is coverage limited to India, and which cities are supported?+
set_delivery_location endpoint accepts only 6-digit Indian pincodes. Coverage depends on Zepto's active store network — the serviceable field in the response confirms whether a given pincode is currently served. Cities like Mumbai (400001), Bangalore (560001), and Delhi (110001) are among the documented examples, but actual coverage is determined by Zepto's store footprint at the time of the request.