Zepto Health Check API
Send a location for a small check of Zepto search, categories and placements before your analyst begins a collection.
- 1 credit per call
- Failed calls are free
- Updated
- zepto.health
{ "ads_category_count": 1, "ads_category_ok": true, "ads_home_count": 1, "ads_home_ok": true, "ads_search_count": 1, "ads_search_ok": true, "categories_count": 223, "categories_ok": true, "checked_at": "2026-10-04T12:04:33.035806405Z", "location_ok": true, "location_store_id": "b4dc8d65-ed2e-4142-81b6-373982b13500", "search_count": 1, "search_ok": true, "status": "ok", "capabilities": { "location": "ok", "ads": "ok", "categories": "ok", "search": "ok" }}
What you send
The input
object of the request, with every field the endpoint accepts.
- To check a particular place, send a six-digit pincode or latitude and longitude together; both are optional. Do not send a pincode and coordinates at once.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| latitude | number | one of | Latitude for location-based health check. From -90 to 90. | 12.96902 |
| longitude | number | one of | Longitude for location-based health check. From -180 to 180. | 77.75395 |
| pincode | string | one of | Six-digit Indian pincode. When provided, Upscrape resolves coordinates and the Zepto delivery store automatically. |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| status | string | Result of the quick data-access check. | ok |
| search_ok | boolean | Whether the check obtained a usable search result. | true |
| categories_ok | boolean | Whether the check obtained the category directory. | true |
| location_ok | boolean | Whether the check resolved the requested location. | true |
| location_store_id | string | The serving store found by the location lookup or the access check. | b4dc8d65-ed2e-4142-81b6-373982b13500 |
| ads_category_count | integer | How many category ads came back. | 1 |
| ads_category_ok | boolean | Whether category ads came back. | true |
| ads_home_count | integer | How many home page ads came back. | 1 |
| ads_home_ok | boolean | Whether home page ads came back. | true |
| ads_search_count | integer | How many search ads came back. | 1 |
| ads_search_ok | boolean | Whether search ads came back. | true |
| capabilities | object | Which parts of Zepto answered, one by one. | 4 fields |
| capabilities.ads | string | Whether ads answered. | ok |
| capabilities.categories | string | Zepto's categories. | ok |
| capabilities.location | string | The location the results were read for. | ok |
| capabilities.search | string | Whether search answered. | ok |
| categories_count | integer | How many categories came back. | 223 |
| checked_at | string | When the check ran. | 2026-10-04T12:04:33.035806405Z |
| search_count | integer | How many search results came back. | 1 |
What this endpoint covers
- The status and the flags and counts for each part describe this one check. They are not an uptime promise, a guarantee for the whole catalogue, or a substitute for calling the endpoint your work needs.
- When a part fails, the response names the first failure.
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.health", "input": { "latitude": 12.96902, "longitude": 77.75395 }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "zepto.health", "input": { "latitude": 12.96902, "longitude": 77.75395 }}''')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.health", "input": { "latitude": 12.96902, "longitude": 77.75395 }}),});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 health check for latitude "12.96902" and longitude "77.75395". 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 ETA 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 API FAQ
The short answers. The docs have the long ones.
How much does the Zepto Health Check API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Every input is optional; the input fields below list what each one does.
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.health, 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.