Zepto ETA API
Choose a location to see its store’s delivery estimate and whether that estimate is available.
- 1 credit per call
- Failed calls are free
- Updated
- zepto.eta
{ "captured_at": "2026-10-04T11:57:16.414752435Z", "eta_available": true, "eta_minutes": 11, "serviceable": true, "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "location": { "eta_minutes": 11, "eta_serviceable": true, "latitude": 12.9967012, "longitude": 77.758197, "pincode": "560067", "serviceable": true, "store_id": "e58fff62-7695-44c2-aba0-6bc96074bc64", "secondary_store_ids": [ "0059ff6a-7eb0-477a-a7f5-69256f2c444b" ], "store_ids": [ "e58fff62-7695-44c2-aba0-6bc96074bc64", "0059ff6a-7eb0-477a-a7f5-69256f2c444b" ] }}
What you send
The input
object of the request, with every field the endpoint accepts.
- Provide either a six-digit Indian pincode or both latitude and longitude. Do not send an incomplete coordinate pair or combine pincode with coordinates.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| latitude | number | one of | Latitude in decimal degrees. From -90 to 90. | |
| longitude | number | one of | Longitude in decimal degrees. From -180 to 180. | |
| pincode | string | one of | Six-digit Indian pincode. When provided, Upscrape resolves coordinates and the Zepto delivery store automatically. | 560067 |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| store_id | string | Store attached to this product or delivery context. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| eta_available | boolean | Whether the selected store returned an available delivery estimate. | true |
| eta_minutes | integer | Zepto's delivery estimate in minutes, when it gives one. | 11 |
| serviceable | boolean | The endpoint’s serviceability signal; location coverage and delivery-estimate availability are separate checks. | true |
| location | object | The location the results were read for. | 9 fields |
| location.eta_minutes | integer | Zepto's delivery estimate in minutes, when it gives one. | 11 |
| location.eta_serviceable | boolean | Whether Zepto delivers to this location. | true |
| location.latitude | number | Latitude of the resolved or requested delivery point. | 13.0 |
| location.longitude | number | Longitude of the resolved or requested delivery point. | 77.76 |
| location.pincode | string | Pincode retained in the resolved location, when supplied and returned. | 560067 |
| location.secondary_store_ids | array | Backup stores serving the location. | 0059ff6a-7eb0-477a-a7f5-69256f2c444b |
| location.serviceable | boolean | The endpoint’s serviceability signal; location coverage and delivery-estimate availability are separate checks. | true |
| location.store_id | string | Store attached to this product or delivery context. | e58fff62-7695-44c2-aba0-6bc96074bc64 |
| location.store_ids | array | Zepto stores serving the location. | e58fff62-7695-44c2-aba0-6bc96074bc64, 0059ff6a-7eb0-477a-a7f5-6… |
| captured_at | string | When this result was collected. | 2026-10-04T11:57:16.414752435Z |
What this endpoint covers
- The response says whether the store gave a valid delivery estimate, zero included. The minutes are left out when it gave none.
- The serviceability fields describe delivery at the resolved point. An estimate is Zepto's at that moment, not a promised checkout time.
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "zepto.eta", "input": { "pincode": "560067" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zepto.eta", "input": { "pincode": "560067" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "zepto.eta", "input": { "pincode": "560067" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
With Upscrape, get the Zepto eta for pincode "560067". Tell me what it costs before you run it, then show the results as a table.
More from the Zepto API
- Zepto Products Search API1 credit
- Zepto Product API1 credit
- Zepto Categories API1 credit
- Zepto Category Products API1 credit
- Zepto Store Catalog API1 credit
- Zepto Ads API1 credit
- Zepto Multi-location Search API1 credit
- Zepto Multi-location Catalog API1 credit
- Zepto Resolve Location API1 credit
- Zepto Place Autocomplete API1 credit
- Zepto Place Details API1 credit
- Zepto Resolve Place API1 credit
- Zepto Summarize Search Facets API1 credit
- Zepto Health Check API1 credit
The same data from other platforms
Zepto ETA API FAQ
The short answers. The docs have the long ones.
How much does the Zepto ETA API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send pincode or latitude or longitude. The input fields below list every option with its type and limits.
Do I need a Zepto login?
No. It reads public Zepto data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds zepto.eta, checks its price and runs it with the same credits as the REST API.
Your first Zepto call is free.
Up to 100 free credits to start, no card needed.