# DMart price history API

Last updated 8 Nov 2026.

GET /v1/data/observations with retailer=dmart returns every reading of a DMart product's price, MRP and stock at a pin code, newest first, between two dates. Rewalto holds 12,55,715 DMart price readings, for days from 26 Sept 2026 to 8 Nov 2026. It needs an API key and costs 1 credit per 10 readings; the sample record below is free.

## Key facts

| | |
| --- | --- |
| Endpoint | GET /v1/data/observations |
| App filter | retailer=dmart |
| Cost | 1 credit per 10 readings (Only delivered records use credits) |
| Key | API key needed |
| Records held | 12,55,715, 26 Sept 2026 to 8 Nov 2026 (From the coverage matrix) |

## A real DMart record

One record from the free samples route (GET /v1/data/samples?dataset=price_history), 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 1 Nov 2026.

```json
{
  "id": 98633364,
  "retailer": "dmart",
  "retailerSku": "12024",
  "pincode": "400703",
  "observedAt": "2026-11-01T18:03:08.000000Z",
  "ingestedAt": "2026-11-01T18:04:15.991125Z",
  "title": "Pediasure Vanilla Delight",
  "brand": "Pediasure",
  "packSizeRaw": "Pediasure Nutritional Powder - Vanilla Flavour : 375 g",
  "priceMinor": 69000,
  "mrpMinor": 72000,
  "currency": "INR",
  "inStock": null,
  "category": "dairy_benchmark_dmart",
  "productId": null,
  "sourceUrl": "https://digital.dmart.in/api/v3/search/amul taaza milk?page=1&buryOOS=true&size=100&channel=web",
  "recipeVersion": 3,
  "source": "harvest",
  "evidence": {
    "sha256": "1fe72ed6c65d6ea21eb9cb7ee3f8cdb06ea8198cd7b5d4dc0c6929b0ef45d589",
    "missing": false
  }
}
```

## Call the DMart endpoint

Set REWALTO_API_KEY to a key from your account, then run any of these.

cURL:

```bash
curl -H "Authorization: Bearer $REWALTO_API_KEY" \
  "https://api.rewalto.com/v1/data/observations?retailer=dmart&pincode=400703&retailerSku=12024&limit=20"
```

Python:

```python
import os
import requests

r = requests.get(
    "https://api.rewalto.com/v1/data/observations",
    params={"retailer": "dmart", "pincode": "400703", "retailerSku": "12024", "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["title"], record["priceMinor"])
```

Node:

```javascript
const res = await fetch("https://api.rewalto.com/v1/data/observations?retailer=dmart&pincode=400703&retailerSku=12024&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.title, record.priceMinor);
```

## Track a DMart price over time

Pass retailerSku (or productId) with from and to to get one product's readings between two dates, and pincode for one pin code. Each reading carries its own time, so a price change shows on the day it was read.

## Fields in each record

From API contract 0.179.0.

| Field | Type | What it means | Example |
| --- | --- | --- | --- |
| `id` | integer | Stable identifier of this reading; cite it when disputing a value. | `48210377` |
| `retailer` | string | The retailer key, as listed by /v1/data/retailers. | `"blinkit"` |
| `retailerSku` | string | The retailer's own product identifier. Unique within one retailer only. | `"prd-88213"` |
| `pincode` | string | The Indian pin code the page was read for, or national when the page is not pin-scoped. | `"110092"` |
| `observedAt` | string (date-time) | When the retailer's page was read. | `"2026-10-14T09:27:00Z"` |
| `ingestedAt` | string (date-time) | When the reading entered Rewalto's store. | `"2026-10-14T10:40:00Z"` |
| `title` | null or string | The product title as the retailer showed it. | `"Aashirvaad Atta 5 kg"` |
| `brand` | null or string | The brand as the retailer attributed it; often absent or wrong. | `"Aashirvaad"` |
| `packSizeRaw` | null or string | The pack size exactly as printed, unparsed. | `"5 kg"` |
| `priceMinor` | null or integer | Selling price in paise; null when it could not be read, never 0 for unknown. | `28500` |
| `mrpMinor` | null or integer | Maximum retail price in paise; null when the retailer published none. | `31000` |
| `currency` | string | ISO 4217 code of the amounts. | `"INR"` |
| `inStock` | null or boolean | Availability as the page showed it; null when the page carried no signal. Always null for Flipkart. | `true` |
| `category` | null or string | The retailer's own category, not normalised across retailers. | `"atta-rice-dal"` |
| `productId` | null or string | The matched Rewalto product, when the listing is matched to one. | `"0d6b4a52-4b6e-4c1a-9a7e-5b0d2f8f1a11"` |
| `sourceUrl` | null or string | The page this reading was taken from. | `"https://blinkit.com/prn/aashirvaad-atta/prid/88213"` |
| `recipeVersion` | null or integer | Version of the extraction recipe that produced the reading. | `5` |
| `source` | string | Always harvest: Rewalto's own collection. | `"harvest"` |
| `evidence` | object | Proof of where the record came from: the SHA-256 of the fetched response. The response itself is not kept; the hash, the source URL and the time are. |  |

## Full reference

Every parameter and error code for this endpoint is in the reference.

- [DMart price history API reference](https://rewalto.com/developers/docs/api/dmart/price-history)

## DMart search rank data

Rewalto records where each DMart product ranks in the app's search, by search term, pin code and day. Read it with the search rank endpoint and retailer=dmart; the terms, pin codes and dates covered are on the search rank data page.

- [Search rank and sponsored slots data](https://rewalto.com/data/commerce/quick-commerce-search-rank)

## Not DMart's own API

Rewalto is not affiliated with, endorsed by or partnered with DMart. It reads DMart's public pages, the way a shopper sees them.

## Questions people ask

**Is this the official DMart API?** No. Rewalto is not affiliated with, endorsed by or partnered with DMart. It reads DMart's public pages, the way a shopper sees them.

**What does a read cost?** 1 credit per 10 readings. 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.

**How do I build a DMart price tracker?** Read this endpoint each day for the products you follow, keep the records, and compare each new price with the last. Re-reading the same records within a week is free.

**Can an AI agent read it?** AI agents can read the same records through Rewalto's MCP server.

## Related

- [DMart API](https://rewalto.com/developers/api/dmart)
- [DMart dark store API](https://rewalto.com/developers/api/dmart/dark-stores)
- [DMart product data API](https://rewalto.com/developers/api/dmart/products)
- [DMart price and dataset page](https://rewalto.com/data/commerce/dmart)
- [DMart dark store map](https://rewalto.com/data/dark-stores/app/dmart)
- [DMart API contract for agents (OpenAPI)](https://api.rewalto.com/openapi/dmart.json)
- [Full API contract (OpenAPI)](https://rewalto.com/developers/openapi.json)
- [Data catalogue for agents](https://rewalto.com/developers/catalog.json)
- [MCP server tools](https://rewalto.com/developers/mcp)
- [Quickstart: your first request](https://rewalto.com/developers/docs/quickstart)
- [Pricing and free credits](https://rewalto.com/pricing)

---

Canonical page: https://rewalto.com/developers/api/dmart/price-history
Last content change: 2026-11-08
