Zeptonow APIzeptonow.com ↗
Access Zepto's product catalog via API: search products, browse categories, get product details with pricing, stock status, and more for Indian grocery delivery.
What is the Zeptonow API?
The Zepto API provides 4 endpoints covering Zepto's Indian quick-commerce grocery catalog, including product search, category browsing, and detailed product data. The get_product_detail endpoint returns over 10 fields per product including MRP in paise, discounted price, shelf life, country of origin, weight in grams, and multiple product images. Store-level scoping lets you target specific Zepto fulfillment locations by passing a store_id UUID.
curl -X GET 'https://api.parse.bot/scraper/c5228c28-985b-40df-897c-f7d889d9c67a/search_products?query=milk&store_id=b4dc8d65-ed2e-4142-81b6-373982b13500' \ -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 zeptonow-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.
"""Walkthrough: Zepto SDK — bounded, re-runnable; every call capped."""
from parse_apis.zeptonow_com_api import Zepto, ProductNotFound
client = Zepto()
# Browse all available categories and their subcategories.
for category in client.categories.list(limit=3):
print(category.name, category.group, len(category.subcategories))
# Search for products by query.
for product in client.products.search(query="milk", limit=3):
print(product.name, product.discounted_price, product.quantity)
# Drill into a category's subcategory to list its products.
cat = client.categories.list(limit=1).first()
if cat and cat.subcategories:
subcat = cat.subcategories[0]
for item in subcat.products(limit=3):
print(item.name, item.mrp, item.in_stock)
# Fetch full product detail from a search result.
hit = client.products.search(query="coffee", limit=1).first()
if hit:
try:
detail = hit.detail()
print(detail.name, detail.brand, detail.weight_quantity, detail.discount_percent)
except ProductNotFound as e:
print("gone:", e.product_id)
print("exercised: categories.list / products.search / subcategory.products / product.detail")
Returns product recommendations from the store's catalog. Products include name, brand, price, image, availability, and quantity. Results are server-rendered product listings associated with the store; the number of items per call is determined by the platform (typically 5-15 products).
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search query term for product lookup. |
| store_id | string | UUID of the Zepto store to search within. Defaults to a Bangalore store when omitted. |
{
"type": "object",
"fields": {
"query": "the search query used",
"products": "array of product objects with product_id, name, brand, mrp, discounted_price, image_url, in_stock, quantity"
},
"sample": {
"data": {
"query": "milk",
"products": [
{
"mrp": 0,
"name": "Sleepy Owl Assorted Premium Instant Coffee Sachets",
"brand": "Sleepy Owl",
"in_stock": true,
"quantity": "1 pack (10 x 2 g)",
"image_url": "https://cdn.zeptonow.com/production/cms/product_variant/c98e9195-d3aa-4342-9087-01057eeaa217.jpeg",
"product_id": "6a7a5e55-a718-405f-8435-536276c19f92",
"discounted_price": 9900
}
]
},
"status": "success"
}
}About the Zeptonow API
Product Search and Category Navigation
The search_products endpoint accepts a query string and an optional store_id, returning an array of product objects with fields including product_id, name, brand, mrp, discounted_price, image_url, in_stock, and quantity. Result counts vary per query (typically 5–15 items) based on store inventory. The get_categories endpoint retrieves the full category tree for a given store, returning each category's id, name, group, image_url, and a nested subcategories array — the subcategory IDs from this response are the required input for get_products_by_category.
Category Product Listings
The get_products_by_category endpoint lists products within a specific subcategory using its UUID (subcategory_id). It supports zero-based pagination via the page_number parameter and returns an end_of_list boolean so you can stop paginating without guessing. The product fields mirror those from search: product_id, name, brand, mrp, discounted_price, image_url, in_stock, and quantity. Note that some subcategories may return empty results depending on the store's current inventory.
Full Product Detail
The get_product_detail endpoint takes a product_variant_id (obtainable from search or category listing results) and returns the most complete product record in the API: name, brand, description, mrp (in paise — divide by 100 for INR), images (array of full URLs), in_stock, weight_in_gms, shelf_life, highlights (key-value pairs for attributes like nutritional info or certifications), and country_of_origin. All four endpoints accept an optional store_id; when omitted, requests default to a Bangalore store.
The Zeptonow API is a managed, monitored endpoint for zeptonow.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zeptonow.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 zeptonow.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?+
- Track real-time price changes between
mrpanddiscounted_priceacross Zepto product listings. - Build a category-aware grocery comparison tool using
get_categoriessubcategory IDs andget_products_by_category. - Monitor
in_stockstatus for specific products by pollingget_product_detailwith knownproduct_idvalues. - Aggregate product metadata (shelf life, country of origin, highlights) for nutritional or sourcing research.
- Populate a grocery product database by paginating through subcategories using
page_numberandend_of_list. - Search Zepto's catalog programmatically with
search_productsto compare pricing with other Indian grocery platforms. - Extract brand-level catalog coverage per store by grouping
brandfields returned across category listings.
| 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 offer an official public developer API?+
What does `get_product_detail` return that the listing endpoints don't?+
search_products and get_products_by_category) return a concise set of fields: product_id, name, brand, mrp, discounted_price, image_url, in_stock, and quantity. get_product_detail adds description, an images array with multiple URLs, weight_in_gms, shelf_life, country_of_origin, and a highlights array of key-value attribute pairs.How does `mrp` pricing work in the response?+
mrp and discounted_price fields in all endpoints are returned in paise (Indian subunit). Divide by 100 to get the value in Indian Rupees. For example, an mrp of 9900 represents ₹99.00.Does the API cover multiple cities or stores across India?+
store_id UUID parameter, so you can target specific Zepto stores. When store_id is omitted, the API defaults to a Bangalore store. The API does not include an endpoint to enumerate all available stores or city-level store IDs. You can fork this API on Parse and add an endpoint to expose store discovery if your use case requires multi-city coverage.