
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape Zepto quick-commerce product search results: names, brands, prices, MRP, discounts, stock, ratings, categories, pack sizes and images.
Turn any Zepto search into a clean product table: name, brand, pack size, MRP, selling price, discount, stock, ratings, category, images and product links. Search as many keywords as you like, pick the delivery city whose store you want to see, and export to JSON, CSV or Excel. No Zepto account or login needed.
snake_case layout used by other Zepto datasets (selling_price, discount_percent, rating_average, ...).milk, dark chocolate, basmati rice), or paste Zepto search URLs.| Field | What it does |
|---|---|
searchQueries | Keywords to search, one per line. |
startUrls | Zepto search URLs (https://www.zepto.com/search?query=paneer). |
maxItems | Products to save per search (0 = all, usually 60 to 190). |
onlyInStock, excludeSponsored | Skip out-of-stock items or ads. |
minPrice, maxPrice, minDiscountPercent | Price range in rupees and minimum discount. |
city / coordinates | Delivery location that decides the store (default: Zepto's Bengaluru default store). |
proxyConfiguration | Residential proxy in India (default). |
{
"searchQueries": ["milk", "chocolate"],
"maxItems": 20,
"city": "mumbai",
"onlyInStock": true,
"proxyConfiguration": { "useScrapelyProxy": true, "scrapelyProxyGroups": ["RESIDENTIAL"] }
}
One row per product and search. Prices are in Indian rupees.
| Field | Description |
|---|---|
search_query, position, page_number | The search and the product's rank in it. |
name, brand, product_url, image_url, images | Product identity, link and pictures. |
formatted_packsize, packsize, unit_of_measure, weight_in_gms | Pack details. |
mrp, selling_price, discounted_selling_price | MRP and current price. |
discount_amount, discount_percent | Saving off MRP. |
super_saver_selling_price, zepto_pass_price | Special prices when Zepto shows them (0 when none). |
out_of_stock, available_quantity, catalog_quantity, max_allowed_quantity | Stock at the store. |
rating_average, rating_count | Customer ratings. |
is_sponsored, is_best_offer, is_new_product, attribute_tags | Badges and ad placements. |
primary_category_name, primary_subcategory_name, l3_category_name (+ ids) | Category tree. |
description, country_of_origin, manufacturer_name, fssai_license, shelf_life_hours | Product details when published. |
store_product_id, product_id, product_variant_id, brand_id, store_id | Zepto identifiers. |
location, latitude, longitude, scraped_at | Where and when it was scraped. |
Example (from a real run, trimmed):
{
"search_query": "chocolate",
"page_number": 0,
"position": 1,
"name": "Hershey's Kisses Milk | Chocolate Share Bag",
"brand": "Hershey's",
"product_url": "https://www.zepto.com/pn/hershey-s-kisses-milk-chocolate-share-bag/pvid/2cf47c3b-3ab3-4e01-a558-99ac70e06ad5",
"image_url": "https://cdn.zeptonow.com/production/cms/product_variant/460694a1-033a-4835-8160-ba5d5b6d3b96.png",
"formatted_packsize": "1 pack (36 g)",
"currency": "INR",
"mrp": 55,
"selling_price": 51,
"discounted_selling_price": 51,
"discount_amount": 4,
"discount_percent": 7,
"out_of_stock": false,
"available_quantity": 15,
"rating_average": 4.6,
"rating_count": 68326,
"is_sponsored": false,
"primary_category_name": "Sweet Cravings",
"country_of_origin": "India",
"manufacturer_name": "The Hershey's Company",
"shelf_life_hours": 8760,
"weight_in_gms": 36,
"store_product_id": "42570276-a691-529a-8a53-2e1a9bb768b9",
"product_variant_id": "2cf47c3b-3ab3-4e01-a558-99ac70e06ad5",
"store_id": "b4dc8d65-ed2e-4142-81b6-373982b13500",
"location": "Default store (Bengaluru)",
"scraped_at": "2026-10-21T05:16:20.896Z"
}
You pay $0.60 per 1,000 products saved ($0.0006 per product), plus platform usage for the run (compute, the short browser check and residential proxy traffic).
Filtered-out, duplicate and failed products are never charged. You can cap the cost of any run with the maximum charge setting.
Is it legal to scrape Zepto? The actor only reads public product listings that anyone can see without logging in. You are responsible for how you use the data; check Zepto's terms and the laws that apply to you.
Do I need a Zepto account or a proxy? No account. A residential proxy in India is used by default, because Zepto blocks datacenter traffic; it is included in the platform usage.
How many results can I get? Zepto lists roughly 60 to 190 products per keyword (for example 104 for "milk" and 184 for "chocolate" in our tests). Use several queries to cover a category.
Why is a field empty? Zepto only publishes some details (manufacturer, FSSAI license, subcategory name, tags) for some products. Ratings are empty when a product has none yet.
Why do prices differ from my app? Prices and stock depend on the store that delivers to you. Pick your city or enter your coordinates. Member-only and cart-level offers are not included.
Can I schedule it or use the API? Yes. Save the input as a task, schedule it daily for price tracking, or start runs and read datasets through the API.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch queries
Products to search for on Zepto, one per line, e.g. 'milk', 'dark chocolate', 'atta 5kg'. Each query is searched separately.
startUrlsarrayOptionalZepto search URLs
Zepto search page URLs such as https://www.zepto.com/search?query=paneer. The search keyword is taken from the URL.
maxItemsintegerOptionaldefault 20Max products per search
How many products to save for each query or URL. 0 saves every product Zepto returns for the search (usually 60 to 190).
onlyInStockbooleanOptionaldefault falseOnly in-stock products
Skip products that are out of stock at the selected store.
excludeSponsoredbooleanOptionaldefault falseExclude sponsored products
Skip products Zepto marks as ads (Sponsored).
minPriceintegerOptionalMin price (₹)
Only save products whose current selling price is at least this many rupees.
maxPriceintegerOptionalMax price (₹)
Only save products whose current selling price is at most this many rupees.
minDiscountPercentintegerOptionalMin discount (%)
Only save products discounted by at least this percentage off MRP.
Prices, stock and assortment depend on the Zepto store that delivers to the location.
cityenumOptionaldefault "default"Delivery city
City whose central Zepto store is used for prices and stock.
coordinatesstringOptionalExact location (latitude, longitude)
Optional. A delivery point as 'latitude, longitude', e.g. '19.0596, 72.8295' for Bandra, Mumbai. Overrides the city.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Zepto blocks datacenter IPs, so residential proxies in India are the default.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| search_query | string | null | Search query |
| page_number | number | null | Result page (0 = first) |
| position | number | null | Rank in the search results (1 = first) |
| name | string | null | Product name |
| brand | string | null | Brand |
| product_url | string | null | Product page URL |
| image_url | string | null | Main product image |
| formatted_packsize | string | null | Pack size as shown |
| packsize | number | null | Pack size value |
| unit_of_measure | string | null | Pack size unit |
| currency | string | null | Currency (INR) |
| mrp | number | null | MRP in rupees |
| selling_price | number | null | Selling price in rupees |
| discounted_selling_price | number | null | Price after discount in rupees |
| discount_amount | number | null | Discount in rupees |
| discount_percent | number | null | Discount % off MRP |
| super_saver_selling_price | number | null | Super Saver price in rupees |
| zepto_pass_price | number | null | Zepto Pass price in rupees (0 when none) |
| out_of_stock | boolean | null | Out of stock at the store |
| available_quantity | number | null | Units available to order |
| catalog_quantity | number | null | Units in the store's catalog |
| max_allowed_quantity | number | null | Max units per order |
| rating_average | number | null | Average rating (1-5) |
| rating_count | number | null | Number of ratings |
| is_sponsored | boolean | null | Sponsored (ad) placement |
| is_active | boolean | null | Listed as active |
| is_best_offer | boolean | null | Best offer badge |
| is_new_product | boolean | null | New product badge |
| attribute_tags | array | null | Product card tags (e.g. Full Cream, Bestseller) |
| primary_category_name | string | null | Category |
| primary_category_id | string | null | Category ID |
| primary_subcategory_name | string | null | Subcategory |
| primary_subcategory_id | string | null | Subcategory ID |
| l3_category_name | string | null | Detailed category |
| description | string | null | Description |
| country_of_origin | string | null | Country of origin |
| manufacturer_name | string | null | Manufacturer |
| fssai_license | string | null | FSSAI license number |
| shelf_life_hours | number | null | Shelf life in hours |
| weight_in_gms | number | null | Weight in grams |
| product_type | string | null | Product type |
| images | array | null | All image URLs |
| store_product_id | string | null | Zepto store product ID (unique per store) |
| product_id | string | null | Product ID |
| product_variant_id | string | null | Product variant ID |
| brand_id | string | null | Brand ID |
| store_id | string | null | Store ID |
| location | string | null | Delivery location used |
| latitude | number | null | Location latitude |
| longitude | number | null | Location longitude |
| scraped_at | string | null | Scrape time (UTC, ISO 8601) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Product | One Zepto product saved to the dataset. | $0.0006 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/zepto-scraper').call({
"searchQueries": [
"milk",
"chocolate"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/zepto-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/zepto-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Prices and stock from the Mumbai store; out-of-stock items skipped.
Price range filter with sponsored products removed.
Delivery point given as latitude, longitude.
Deeper search with duplicate products removed.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.