# Blinkit product data API reference

Last updated 5 Nov 2026.

GET /v1/data/observations with retailer=blinkit returns each Blinkit product Rewalto has read: title, brand, pack size, price, MRP and stock at a pin code, with the time of the reading. For Blinkit, Rewalto holds price readings: 1022 pins held · 2,35,681 readings on 4 Nov 2026 (measured 4 Nov 2026), and 5,228 open dark stores in 453 cities (counted 5 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=blinkit |
| Cost | 1 credit per 10 readings (Only delivered records use credits) |
| Key | API key needed |

## Request

GET https://api.rewalto.com/v1/data/observations, with an API key sent as Authorization: Bearer. Price and availability history for listings, newest first. Charged 1 credit per 10 records delivered, rounded up; re-reading the same records within 7 days is free, and an empty page costs nothing. When the credits cannot cover the page: 402 credits_exhausted and no data.

cURL:

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

## Parameters

| Name | In | Required | Type | What it means | Example |
| --- | --- | --- | --- | --- | --- |
| `retailer` | query | no | string | Only this retailer (a key from /v1/data/retailers). Use blinkit for Blinkit. | `"blinkit"` |
| `pincode` | query | no | string | Only readings for this six-digit pin code, or national for readings that are not pin-scoped. | `"110092"` |
| `location` | query | no | string | A Core location id from the free lookup (GET /v1/data/locations, /cities or /stores): a pin, a city, an area or a dark store. It resolves to an explicit list of pin codes (see GET /v1/data/locations/filter). Never combine with pincode. More than one pin needs confirmPins. A store id (IN:store:<retailer>:<store id>) means the pin codes that dark store serves (its catchment as the sweeps saw it). Readings are kept per pin code, not per store, so it reads every kept reading at those pin codes, whichever store served them; no reading is attributed to the store itself. | `"IN:city:karnataka:bengaluru"` |
| `confirmPins` | query | no | string | Your consent to a multi-pin read: the number of pins the location resolves to, as GET /v1/data/locations/filter showed it. A different number is refused with the current count, so a place is never silently broadened. | `"112"` |
| `brand` | query | no | string | Only records with exactly this brand text, as the retailer wrote it (exact match, case-sensitive). | `"Aashirvaad"` |
| `productId` | query | no | string | Only records matched to this Rewalto product id. | `"0d6b4a52-4b6e-4c1a-9a7e-5b0d2f8f1a11"` |
| `retailerSku` | query | no | string | Only this retailer product id (use together with retailer). | `"prd-88213"` |
| `from` | query | no | string (date-time) | Only readings at or after this time. Default: 30 days before now. | `"2026-10-01T00:00:00Z"` |
| `to` | query | no | string (date-time) | Only readings before this time. Default: now. | `"2026-10-15T00:00:00Z"` |
| `limit` | query | no | string | How many records to return, 1 to 500. Default 100. | `"100"` |
| `cursor` | query | no | string | The nextCursor of the previous page, sent back with exactly the same filters. A cursor from other filters is refused. | `"eyJ0IjoiMjAyNi0xMC0xNFQwOToyNzowMC4wMDBaIiwiaSI6NDgyMTAzNzcsImYiOiJhYmMxMjMifQ"` |

## Record fields

| 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. |  |

## Errors

Errors share one shape: error.code, a retry advice and a request id.

| Status | error.code |
| --- | --- |
| 400 | `invalid_request` |
| 401 | `key_expired, key_revoked, session_expired, unauthenticated` |
| 402 | `credits_exhausted, plan_required` |
| 403 | `org_missing, scope_missing` |
| 429 | `rate_limited` |
| 500 | `internal` |
| 503 | `unavailable` |

- [What to do for each error](https://rewalto.com/developers/docs/errors)

## Credit cost

1 credit per 10 readings. Every account gets 1,000 free credits a month, and a read that delivers nothing costs nothing.

## A real Blinkit 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 29 Oct 2026.

```json
{
  "id": 93922989,
  "retailer": "blinkit",
  "retailerSku": "782873",
  "pincode": "411045",
  "observedAt": "2026-10-29T18:28:43.000000Z",
  "ingestedAt": "2026-10-29T18:29:46.284791Z",
  "title": "Miss Nails Minis Nail Paint (Wish You Were Mine)",
  "brand": "Miss Nails",
  "packSizeRaw": "6 ml",
  "priceMinor": 10900,
  "mrpMinor": 10900,
  "currency": "INR",
  "inStock": true,
  "category": "personal_care_qc",
  "productId": null,
  "sourceUrl": "https://blinkit.com/v1/layout/search?offset=24&limit=12&actual_query=nail+polish&last_snippet_type=product_card_snippet_type_2&last_widget_type=listing_conta...",
  "recipeVersion": 7,
  "source": "harvest",
  "evidence": {
    "sha256": "15cd464f654e744ea7e5e52bfdba608e18b24728807c6b24c060bb8ac8f2437c",
    "missing": false
  }
}
```

## Related

- [Blinkit product data API overview](https://rewalto.com/developers/api/blinkit/products)
- [Blinkit API documentation](https://rewalto.com/developers/docs/api/blinkit)
- [Full API contract (OpenAPI)](https://rewalto.com/developers/openapi.json)
- [Data catalogue for agents](https://rewalto.com/developers/catalog.json)
- [MCP server tools (preview)](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/docs/api/blinkit/products
Last content change: 2026-11-05
