[ docs ]Commerce
Zepto
Measured Zepto data, one operation per call — a product's price and stock at ONE dark store, right now. Every op takes `store`: a storeId, or a pincode (with city), or lat/lon. Prices, MRP, discounts and stock are per store and every fetch adds a point to that product's price history at that store. ops: products (full detail for up to ten zepto.com product URLs at the store — price, MRP, discount, stock count, rating, seller, manufacturer, specifications), search (what a shopper at that store sees for a query — listings with price, stock and rank), category (one page of the app's own menu at that store; names must match the app exactly, e.g. category "Atta Rice Oil Dals", subCategory "Atta" — the pair must belong together), history (stored price/stock series for products already held, free). Ops are independent — issue several as PARALLEL tool calls. Fresh fetches cost credits; anything already held is free.
POST https://api.zomler.com/api/v1/platforms/zeptoproducts
from 1 credit · fresh for 6 hoursFull product detail at one store — price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
subjectsrequired | list of string | — | 1-10 items |
storerequired | object | — | — |
store.storeId | string | — | — |
store.city | string | — | — |
store.pincode | string | — | — |
store.lat | number | — | — |
store.lon | number | — | — |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/zepto \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "products",
"subjects": [
"example"
],
"store": {
"pincode": "560001"
}
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/zepto", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "products",
"subjects": [
"example"
],
"store": {
"pincode": "560001"
}
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/zepto",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "products",
"subjects": [
"example"
],
"store": {
"pincode": "560001"
}
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])search
from 20 credits for 20Search the app as a shopper at that store would — listings with price, MRP, stock and rank.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
queryrequired | string | — | ≤300 chars |
storerequired | object | — | — |
store.storeId | string | — | — |
store.city | string | — | — |
store.pincode | string | — | — |
store.lat | number | — | — |
store.lon | number | — | — |
limit | integer | 20 | 1-100 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/zepto \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "search",
"query": "example",
"store": {
"pincode": "560001"
}
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/zepto", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "search",
"query": "example",
"store": {
"pincode": "560001"
}
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/zepto",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "search",
"query": "example",
"store": {
"pincode": "560001"
}
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])category
from 20 credits for 20One category page at one store. Names must match the app's own menu exactly (e.g. category "Baby Care", subCategory "Diapers").
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
categoryrequired | string | — | ≤80 chars |
subCategoryrequired | string | — | ≤80 chars |
storerequired | object | — | — |
store.storeId | string | — | — |
store.city | string | — | — |
store.pincode | string | — | — |
store.lat | number | — | — |
store.lon | number | — | — |
limit | integer | 20 | 1-100 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/zepto \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "category",
"category": "example",
"subCategory": "example",
"store": {
"pincode": "560001"
}
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/zepto", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "category",
"category": "example",
"subCategory": "example",
"store": {
"pincode": "560001"
}
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/zepto",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "category",
"category": "example",
"subCategory": "example",
"store": {
"pincode": "560001"
}
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])history
free · reads what is heldThe stored price/stock series of products already held at a store — free.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
subjectsrequired | list of string | — | 1-10 items |
storerequired | object | — | — |
store.storeId | string | — | — |
store.city | string | — | — |
store.pincode | string | — | — |
store.lat | number | — | — |
store.lon | number | — | — |
metric | enum | price | pricemrpdiscount_pctstock_countratingrating_count |
days | integer | 90 | 1-730 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/zepto \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "history",
"subjects": [
"example"
],
"store": {
"pincode": "560001"
}
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/zepto", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "history",
"subjects": [
"example"
],
"store": {
"pincode": "560001"
}
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/zepto",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "history",
"subjects": [
"example"
],
"store": {
"pincode": "560001"
}
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])