Zepto data, ready when you are.

A product's price and stock at one dark store, right now, from Zepto.

Try in playground From $0.0009 a record · $0.10 free

What you can get.

  • $0.0009per record

    Products

    Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.

    Try it →
  • $0.0009per record

    Search

    Search the app as a shopper at that store would. Listings with price, MRP, stock and rank.

    Try it →
  • $0.0009per record

    Category

    One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.

    Try it →

What the data looks like.

productNamebrandpricemrpdiscountPctpackSizeinStockcategoryrankratingratingCountproductIdvariantIdstoreIdvendorProductIdimagesproductUrldetails
Tomato, HybridFresh324020500 gtrueVegetables14.31,2001563872094178317064216137905222511739480
  • https://img.zeptonow.com/tomato-hybrid.jpg
https://www.zeptonow.com/tomato-hybrid-1000
  • {}
OnionFresh3845161 kgtrueVegetables24.31,2001331370611128828977222377833202449101274
  • https://img.zeptonow.com/onion.jpg
https://www.zeptonow.com/onion-1001
  • {}
Coriander LeavesFresh121520100 gtrueVegetables34.31,200398420225827067542324270324662665141668
  • https://img.zeptonow.com/coriander-leaves.jpg
https://www.zeptonow.com/coriander-leaves-1002
  • {}
18 fields, scroll sideways for all. Example rows: made-up names, real field names. Live calls return real data.

For developers

API reference.

One endpoint, POST /v1/zepto. Open an operation to see its fields.

Read the docs
Productsproducts

Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.

FieldTypeMeaning
subjects *list of string · 1-10 itemsProduct URLs at that store.
store *object
store.storeIdstringThe dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others.
store.citystringThe city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given.
store.pincodestringA 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous.
store.latnumberLatitude in decimal degrees, with lon: the store serving that point.
store.lonnumberLongitude in decimal degrees; only read together with lat.

Response fields, each row of data

FieldType
productIdstring
variantIdstring
storeScopestring
storeIdstring
vendorProductIdstring
productNamestring
brandstring
pricenumber
mrpnumber
discountPctnumber
packSizestring
inStockboolean
stockCountinteger
ratingnumber
ratingCountinteger
categorystring
rankinteger
sponsoredboolean
imageslist of string
productUrlstring
descriptionstring
countryOfOriginstring
manufacturerstring
sellerstring
specificationsany
latitudenumber
longitudenumber
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · products
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.zepto.com/pn/<product-name>/pvid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}'

Example response rows

data · made-up names, real field names
[
  {
    "productName": "Tomato, Hybrid",
    "brand": "Fresh",
    "price": 32,
    "mrp": 40,
    "discountPct": 20,
    "packSize": "500 g",
    "inStock": true,
    "category": "Vegetables",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "1563872094",
    "variantId": "1783170642",
    "storeId": "1613790522",
    "vendorProductId": "2511739480",
    "images": [
      "https://img.zeptonow.com/tomato-hybrid.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/tomato-hybrid-1000",
    "details": {}
  },
  {
    "productName": "Onion",
    "brand": "Fresh",
    "price": 38,
    "mrp": 45,
    "discountPct": 16,
    "packSize": "1 kg",
    "inStock": true,
    "category": "Vegetables",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "1331370611",
    "variantId": "1288289772",
    "storeId": "2237783320",
    "vendorProductId": "2449101274",
    "images": [
      "https://img.zeptonow.com/onion.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/onion-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try products in the playground Examples and pricing for products
Categorycategory

One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.

FieldTypeMeaning
category *string · ≤80 charsThe top-level aisle as the app names it ("Dairy, Bread & Eggs").
subCategory *string · ≤80 charsThe shelf inside it, again as the app names it ("Milk"). Both are required: the listing is one shelf at one store.
store *object
store.storeIdstringThe dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others.
store.citystringThe city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given.
store.pincodestringA 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous.
store.latnumberLatitude in decimal degrees, with lon: the store serving that point.
store.lonnumberLongitude in decimal degrees; only read together with lat.
limitinteger · 1-100

Response fields, each row of data

FieldType
productIdstring
variantIdstring
storeScopestring
storeIdstring
vendorProductIdstring
productNamestring
brandstring
pricenumber
mrpnumber
discountPctnumber
packSizestring
inStockboolean
stockCountinteger
ratingnumber
ratingCountinteger
categorystring
rankinteger
sponsoredboolean
imageslist of string
productUrlstring
descriptionstring
countryOfOriginstring
manufacturerstring
sellerstring
specificationsany
latitudenumber
longitudenumber
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · category
curl -X POST https://apiforagents.dev/v1/zepto \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"category","category":"Atta Rice Oil Dals","subCategory":"Atta","store":{"city":"Bengaluru","pincode":"560001"},"limit":50}'

Example response rows

data · made-up names, real field names
[
  {
    "productName": "Potato Chips, Salted",
    "brand": "Crunchio",
    "price": 20,
    "mrp": 20,
    "discountPct": 0,
    "packSize": "52 g",
    "inStock": true,
    "category": "Snacks",
    "rank": 1,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "1498328296",
    "variantId": "2377874407",
    "storeId": "3345945435",
    "vendorProductId": "1303579314",
    "images": [
      "https://img.zeptonow.com/potato-chips-salted.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/potato-chips-salted-1000",
    "details": {}
  },
  {
    "productName": "Roasted Peanuts",
    "brand": "Nutbox",
    "price": 55,
    "mrp": 60,
    "discountPct": 8,
    "packSize": "200 g",
    "inStock": true,
    "category": "Snacks",
    "rank": 2,
    "rating": 4.3,
    "ratingCount": 1200,
    "productId": "877985001",
    "variantId": "2418411808",
    "storeId": "3612682689",
    "vendorProductId": "4241202604",
    "images": [
      "https://img.zeptonow.com/roasted-peanuts.jpg"
    ],
    "productUrl": "https://www.zeptonow.com/roasted-peanuts-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try category in the playground Examples and pricing for category
Historyhistoryfree

The stored price/stock series of products already held at a store. Free.

FieldTypeMeaning
subjects *list of string · 1-10 items
store *object
store.storeIdstringThe dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others.
store.citystringThe city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given.
store.pincodestringA 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous.
store.latnumberLatitude in decimal degrees, with lon: the store serving that point.
store.lonnumberLongitude in decimal degrees; only read together with lat.
metricenumprice · mrp · discount_pct · stock_count · rating · rating_count
daysinteger · 1-730
Try history in the playground

Guides and ideas.

Use it from your tools.

More in commerce.

All platforms