REWALTO / DEVELOPERS / API / JIOMART
JioMart dark store API
GET /v1/data/dark-stores with platform=jiomart returns each JioMart dark store Rewalto holds, with its store id, name, city, pin code, map point and the pin codes it serves. For JioMart, Rewalto holds price readings: 820 pins held · 2,89,937 readings on 4 Nov 2026 (measured 4 Nov 2026), and 3,108 open dark stores in 612 cities (counted 5 Nov 2026). It needs an API key and costs 5 credits per dark store; the sample record below is free.
Last updated 5 Nov 2026.
Key facts
| Endpoint | GET /v1/data/dark-stores |
|---|---|
| App filter | platform=jiomart |
| Cost | 5 credits per dark storeOnly delivered records use credits |
| Key | API key needed |
A real JioMart record
One record from the free samples route (GET /v1/data/samples?dataset=dark_stores), exactly as the paid read returns it, with long lists cut to three items. Samples are at least a week old; this set holds records up to 29 Oct 2026.
{
"day": "2026-11-05",
"platform": "jiomart",
"storeId": "U062",
"name": "Groceries-U062",
"source": "core_sweep",
"city": "Surat",
"cityTier": "tier_2",
"status": "open",
"sweepStatus": "seen",
"catchmentPins": [
"394101",
"394105",
"394518"
],
"catchmentPoints": [],
"firstSeen": "2026-10-14T04:03:37.000000Z",
"lastSeen": "2026-11-04T23:14:19.452000Z",
"closedAt": null,
"seenSweeps": null,
"missedSweeps": 0,
"lat": 21.20445,
"lon": 72.83089,
"id": "2481",
"sources": [
"app_reading",
"core_sweep",
"old_sweep"
],
"homePincode": "395003",
"pincodeSource": "app_reading",
"area": "Surat",
"address": "SURAT, GUJARAT, 395003",
"state": "GUJARAT",
"country": "IN",
"coordSource": "app_reading"
}Call the JioMart endpoint
Set REWALTO_API_KEY to a key from your account, then run any of these.
cURL
curl -H "Authorization: Bearer $REWALTO_API_KEY" \
"https://api.rewalto.com/v1/data/dark-stores?platform=jiomart&city=Surat&limit=20"Python
import os
import requests
r = requests.get(
"https://api.rewalto.com/v1/data/dark-stores",
params={"platform": "jiomart", "city": "Surat", "limit": 20},
headers={"Authorization": f"Bearer {os.environ['REWALTO_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
for record in r.json()["data"]:
print(record["name"], record["city"])Node
const res = await fetch("https://api.rewalto.com/v1/data/dark-stores?platform=jiomart&city=Surat&limit=20", {
headers: { Authorization: `Bearer ${process.env.REWALTO_API_KEY}` },
});
if (!res.ok) throw new Error(`Rewalto API ${res.status}`);
const { data } = await res.json();
for (const record of data) console.log(record.name, record.city);JioMart dark stores by city or pin code
Add city, state or pincode to narrow the stores. Each record lists the pin codes the store was seen serving, so a pin code with no store record is one Rewalto has not seen JioMart serve.
Fields in each record
From API contract 0.157.0.
| Field | Type | What it means | Example |
|---|---|---|---|
day | string (date) | The IST day the store was last seen. The order and the from and to filters use this day. | "2026-10-15" |
source | string | Where its status comes from: old_sweep (the weekly sweeps up to 17 Oct 2026) or core_sweep (Core’s weekly serviceability sweeps), the one that saw it most recently; for a store no sweep has seen, app_reading (Rewalto’s other readings of the app: its locator, product readings at a pin) or store_list (a store list Rewalto holds). Every source that holds the store is in sources. | "old_sweep" |
platform | string | The quick-commerce app: blinkit, zepto, instamart, bigbasket, flipkart_minutes or jiomart. | "blinkit" |
storeId | string | The app’s own id for the store; for a store known only from a store list, Rewalto’s own id for it (ds-<id>). | "1234" |
name | null or string | The store name the app states; null when it states none. | "HSR" |
city | null or string | The city the sweep found it in, else the city of its first catchment pin; null when neither is known. | "Bengaluru" |
cityTier | null or string | The city’s tier from the Government of India’s house rent allowance classes (DoE O.M. No. 2/5/2017-E.II(B), 7 Jul 2017): tier_1_metro (X), tier_2 (Y), tier_3 (every other city, Z); null where the city is not known. | "tier_2" |
status | string | open (seen in the sweeps since the first one), opened (first seen after the first sweep of its city: a new store) or closed (no longer seen). | "open" |
sweepStatus | string | The sweep’s own status word. old_sweep: active, opened, flicker (missed in one sweep and seen again) or closed. core_sweep: seen (in the app’s newest sweep week) or missed. | "active" |
catchmentPins | array of string | The pin codes the store was seen serving, ascending. | ["560034","560102"] |
catchmentPoints | array of string | Sweep grid points (latitude,longitude) the store was seen serving that the sweep did not place on a pin code; empty for most stores. | ["22.48303,88.35303"] |
firstSeen | string (date-time) | When a sweep first saw the store (UTC). | "2026-10-13T14:30:26.000Z" |
lastSeen | string (date-time) | When a sweep last saw the store (UTC). | "2026-10-15T16:27:27.000Z" |
closedAt | null or string | When the store was marked closed; null while open. | "2026-10-20T00:00:00.000Z" |
seenSweeps | null or integer | How many sweeps saw the store; null for core_sweep stores. | 2 |
missedSweeps | integer | How many sweeps since it was last seen missed it. | 0 |
lat | null or number | Latitude when located; null otherwise. | 12.9116 |
lon | null or number | Longitude when located; null otherwise. | 77.6389 |
id | string | Rewalto’s own id for the store, stable across refreshes. | "1042" |
sources | array of string | Every kind of source that holds the store (old_sweep, core_sweep, app_reading, store_list). | ["old_sweep","app_reading"] |
homePincode | null or string | The pin code the store is in; null when unknown. pincodeSource says how it is known: an estimate (catchment, catchment_point) is the pin it serves most, not its address. | "560034" |
pincodeSource | null or string | app_reading or store_list (stated), nearest_pin_centre (the pin whose centre is nearest the store’s own point), catchment (its most-seen catchment pin) or catchment_point (the pin nearest a grid point it served); null with no pin. | "catchment" |
area | null or string | The locality the store is in: as a source stated it, else the main locality of its pin code (India Post); null when unknown. | "Koramangala" |
address | null or string | The store’s address as the app or a store list states it; null when none does. | "Sector 110, Gurugram, Haryana, 122017" |
state | null or string | The state: as a source stated it, else its pin code’s; null when unknown. | "Karnataka" |
country | string | ISO 3166-1 alpha-2 country code. | "IN" |
coordSource | null or string | Where lat and lon come from: the app’s own statement of the store’s point (old_sweep, core_sweep, app_reading), or served_points_centroid, the centroid of the points the store served, derived by Rewalto because the app states none; null when not located. | "core_sweep" |
Full reference
Every parameter and error code for this endpoint is in the reference.
Not JioMart's own API
Rewalto is not affiliated with, endorsed by or partnered with JioMart. It reads JioMart's public pages, the way a shopper sees them.
Questions people ask
- Is this the official JioMart API?
- No. Rewalto is not affiliated with, endorsed by or partnered with JioMart. It reads JioMart's public pages, the way a shopper sees them.
- What does a read cost?
- 5 credits per dark store. Every account gets 1,000 free credits a month, and a read that delivers nothing costs nothing.
- Do I need an API key?
- Yes, for this endpoint. The sample on this page comes from GET /v1/data/samples, which is free and needs no key.
- Which pin codes does a JioMart dark store serve?
- Each record lists the pin codes the store was seen serving and how many times it was seen, with the first and last time.
- Can an AI agent read it?
- AI agents can read the same records through Rewalto's MCP server, which is in preview.