Blinkit data, ready when you are.
A product's price and stock at one dark store, right now, from Blinkit.
- See the price before every call
- Pay only for records that come back
- No subscription. Your balance never expires
What you can get.
- $0.0009per recordTry it →
Products
Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.
- $0.0009per recordTry it →
Search
Search the app as a shopper at that store would. Listings with price, MRP, stock and rank.
- $0.0009per recordTry it →
Category
One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.
What the data looks like.
| productName | brand | price | mrp | discountPct | packSize | inStock | category | rank | rating | ratingCount | productId | variantId | storeId | vendorProductId | images | productUrl | details |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Toned Milk | Dairyfield | 27 | 28 | 4 | 500 ml | true | Dairy & Breakfast | 1 | 4.3 | 1,200 | 2109488896 | 939572139 | 267557837 | 1840821662 |
| https://blinkit.com/toned-milk-1000 |
|
| Brown Bread | Bakehouse | 45 | 50 | 10 | 400 g | true | Bakery | 2 | 4.3 | 1,200 | 3344686621 | 799874867 | 612408852 | 478340074 |
| https://blinkit.com/brown-bread-1001 |
|
| Basmati Rice, Premium | Ricewell | 189 | 230 | 18 | 1 kg | true | Atta, Rice & Dal | 3 | 4.3 | 1,200 | 1539065595 | 2179219305 | 423260883 | 2093195110 |
| https://blinkit.com/basmati-rice-premium-1002 |
|
For developers
API reference.
One endpoint, POST /v1/blinkit. Open an operation to see its fields.
Productsproducts
Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.
| Field | Type | Meaning |
|---|---|---|
| subjects * | list of string · 1-10 items | Product URLs at that store. |
| store * | object | |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | number | Longitude in decimal degrees; only read together with lat. |
Response fields, each row of data
| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |
Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.
curl -X POST https://apiforagents.dev/v1/blinkit \
-H "Authorization: Bearer $AFA_KEY" \
-H "Content-Type: application/json" \
-d '{"op":"products","subjects":["https://blinkit.com/prn/<product-name>/prid/<id>"],"store":{"city":"Bengaluru","pincode":"560001"}}'Example response rows
[
{
"productName": "Toned Milk",
"brand": "Dairyfield",
"price": 27,
"mrp": 28,
"discountPct": 4,
"packSize": "500 ml",
"inStock": true,
"category": "Dairy & Breakfast",
"rank": 1,
"rating": 4.3,
"ratingCount": 1200,
"productId": "2109488896",
"variantId": "939572139",
"storeId": "267557837",
"vendorProductId": "1840821662",
"images": [
"https://img.blinkit.com/toned-milk.jpg"
],
"productUrl": "https://blinkit.com/toned-milk-1000",
"details": {}
},
{
"productName": "Brown Bread",
"brand": "Bakehouse",
"price": 45,
"mrp": 50,
"discountPct": 10,
"packSize": "400 g",
"inStock": true,
"category": "Bakery",
"rank": 2,
"rating": 4.3,
"ratingCount": 1200,
"productId": "3344686621",
"variantId": "799874867",
"storeId": "612408852",
"vendorProductId": "478340074",
"images": [
"https://img.blinkit.com/brown-bread.jpg"
],
"productUrl": "https://blinkit.com/brown-bread-1001",
"details": {}
}
]An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.
Searchsearch
Search the app as a shopper at that store would. Listings with price, MRP, stock and rank.
| Field | Type | Meaning |
|---|---|---|
| query * | string · ≤300 chars | |
| store * | object | |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | number | Longitude in decimal degrees; only read together with lat. |
| limit | integer · 1-100 |
Response fields, each row of data
| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |
Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.
curl -X POST https://apiforagents.dev/v1/blinkit \
-H "Authorization: Bearer $AFA_KEY" \
-H "Content-Type: application/json" \
-d '{"op":"search","query":"Amul butter","store":{"city":"Bengaluru","pincode":"560001"},"limit":20}'Example response rows
[
{
"productId": "212722",
"variantId": "212722",
"storeScope": "pin:560034",
"storeId": "44371",
"vendorProductId": "212722",
"productName": "Nestle KitKat 4 Fingers Choco Coated Wafer Bar",
"brand": "Nestle KitKat",
"price": 30,
"mrp": 30,
"discountPct": 0,
"packSize": "38.5 g",
"inStock": true,
"stockCount": 50,
"rating": 4.7,
"ratingCount": 500000,
"category": "Wafer Chocolate",
"rank": 2,
"sponsored": false,
"images": [
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786506151062-353.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-233.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-234.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-236.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-237.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-235.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-238.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-239.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786426172675-240.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1786593189552-187.png?bg_token=color.surface.quaternary"
],
"productUrl": "https://blinkit.com/prn/x/prid/212722",
"latitude": 27.1956,
"longitude": 78.0092,
"details": {}
},
{
"productId": "536255",
"variantId": "536255",
"storeScope": "pin:560034",
"storeId": "44371",
"vendorProductId": "536255",
"productName": "Cadbury Nutties Milk Chocolate Pack",
"brand": "Cadbury Nutties",
"price": 130,
"mrp": 135,
"discountPct": 3.7,
"packSize": "30 g",
"inStock": true,
"stockCount": 43,
"rating": 4.5,
"ratingCount": 92044,
"category": "Milk Chocolate Pack",
"rank": 1,
"sponsored": true,
"images": [
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1497.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1498.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1499.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1500.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1501.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1502.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1503.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1504.png?bg_token=color.surface.quaternary",
"https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1778243110777-1505.png?bg_token=color.surface.quaternary"
],
"productUrl": "https://blinkit.com/prn/x/prid/536255",
"latitude": 27.1956,
"longitude": 78.0092,
"details": {}
}
]Rows from an earlier run. The rows show the most used fields; a live row carries every field in the table above.
Categorycategory
One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.
| Field | Type | Meaning |
|---|---|---|
| category * | string · ≤80 chars | The top-level aisle as the app names it ("Dairy, Bread & Eggs"). |
| subCategory * | string · ≤80 chars | The shelf inside it, again as the app names it ("Milk"). Both are required: the listing is one shelf at one store. |
| store * | object | |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | number | Longitude in decimal degrees; only read together with lat. |
| limit | integer · 1-100 |
Response fields, each row of data
| Field | Type |
|---|---|
| productId | string |
| variantId | string |
| storeScope | string |
| storeId | string |
| vendorProductId | string |
| productName | string |
| brand | string |
| price | number |
| mrp | number |
| discountPct | number |
| packSize | string |
| inStock | boolean |
| stockCount | integer |
| rating | number |
| ratingCount | integer |
| category | string |
| rank | integer |
| sponsored | boolean |
| images | list of string |
| productUrl | string |
| description | string |
| countryOfOrigin | string |
| manufacturer | string |
| seller | string |
| specifications | any |
| latitude | number |
| longitude | number |
| details | object |
Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.
curl -X POST https://apiforagents.dev/v1/blinkit \
-H "Authorization: Bearer $AFA_KEY" \
-H "Content-Type: application/json" \
-d '{"op":"category","category":"Atta, Rice & Dal","subCategory":"Atta","store":{"city":"Delhi","pincode":"110001"},"limit":50}'Example response rows
[
{
"productName": "Fresh Paneer",
"brand": "Dairyfield",
"price": 90,
"mrp": 95,
"discountPct": 5,
"packSize": "200 g",
"inStock": true,
"category": "Dairy & Breakfast",
"rank": 1,
"rating": 4.3,
"ratingCount": 1200,
"productId": "4192785922",
"variantId": "123170715",
"storeId": "3026289712",
"vendorProductId": "128062296",
"images": [
"https://img.blinkit.com/fresh-paneer.jpg"
],
"productUrl": "https://blinkit.com/fresh-paneer-1000",
"details": {}
},
{
"productName": "Greek Yogurt, Plain",
"brand": "Cultura",
"price": 60,
"mrp": 65,
"discountPct": 8,
"packSize": "100 g",
"inStock": true,
"category": "Dairy & Breakfast",
"rank": 2,
"rating": 4.3,
"ratingCount": 1200,
"productId": "793487613",
"variantId": "3782716101",
"storeId": "1999865175",
"vendorProductId": "248104020",
"images": [
"https://img.blinkit.com/greek-yogurt-plain.jpg"
],
"productUrl": "https://blinkit.com/greek-yogurt-plain-1001",
"details": {}
}
]An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.
Historyhistoryfree
The stored price/stock series of products already held at a store. Free.
| Field | Type | Meaning |
|---|---|---|
| subjects * | list of string · 1-10 items | |
| store * | object | |
| store.storeId | string | The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others. |
| store.city | string | The city the pincode is in ("Agra"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given. |
| store.pincode | string | A 6-digit Indian postal code ("282003"); the nearest serving store is used. Give city too when the pincode is ambiguous. |
| store.lat | number | Latitude in decimal degrees, with lon: the store serving that point. |
| store.lon | number | Longitude in decimal degrees; only read together with lat. |
| metric | enum | price · mrp · discount_pct · stock_count · rating · rating_count |
| days | integer · 1-730 |