API Documentation
QuickCommerce API v1 — Real-time product search, pricing, and delivery data across quick commerce and e-commerce platforms in India and the UAE.
18 platforms in India and the UAE. India: 7 quick commerce apps, Amazon, Nykaa, Myntra, Flipkart and Meesho for search and item, plus electronics platforms Reliance Digital, Croma, vivo & OnePlus for item price & stock. UAE: Noon Minutes & talabat mart for search, item and delivery ETA, priced in AED. Delivery ETA covers all 9 quick commerce apps.
UAE platforms 🇦🇪
Noon Minutes & talabat mart work on search, item, and ETA like the India apps — pass a UAE lat/lon (e.g. Downtown Dubai 25.1972, 55.2744); no pincode needed. Prices are in AED: every product and item carries a currency field (AED or INR). Platform names: NoonMinutes, TalabatMart.
https://api.quickcommerceapi.comAuthentication
All /v1/* endpoints require an API key passed via the X-API-Key header.
curl -H "X-API-Key: your-api-key" \
"https://api.quickcommerceapi.com/v1/search?q=milk&lat=12.9021&lon=77.6639&platform=BlinkIt"
# Or pass API key as a query parameter:
curl "https://api.quickcommerceapi.com/v1/search?q=milk&lat=12.9021&lon=77.6639&platform=BlinkIt&api_key=your-api-key"Get your API key from the Dashboard after signing up. Each API call costs 1 credit per platform (group endpoints cost 1 credit for each platform that answers). API key can be passed via X-API-Key header or api_key query parameter.
/v1/searchSearch Products
Search for products on a specific platform by location. Supports quick commerce and marketplace platforms.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| q | string | Required | Search query (e.g. 'pizza', 'amul taza') |
| lat | float | Required | Latitude (e.g. 12.9021) |
| lon | float | Required | Longitude (e.g. 77.6639) |
| platform | string | Required | BlinkIt, Zepto, Swiggy, BigBasket, DMart, JioMart, Minutes, Amazon, Nykaa, Myntra, Flipkart, Meesho, NoonMinutes, or TalabatMart |
| pincode | string | Optional | Pincode (required for DMart, JioMart, Minutes) |
Supported Platforms (search)
BlinkIt · Zepto · Swiggy · BigBasket · DMart · JioMart · Minutes · Amazon · Nykaa · Myntra · Flipkart · Meesho · NoonMinutes · TalabatMart
GET /v1/search?q=pizza&lat=12.9021&lon=77.6639&platform=BlinkIt
{
"status": "success",
"request_id": "a1b2c3d4-...",
"credits_remaining": 49,
"data": {
"query": "pizza",
"platform": "BlinkIt",
"lat": 12.9021,
"lon": 77.6639,
"total_results": 30,
"products": [
{
"id": "501346",
"name": "Margherita Pizza",
"brand": "Amul",
"available": true,
"images": ["https://cdn.grofers.com/..."],
"mrp": 120,
"offer_price": 120,
"quantity": "210 g",
"deeplink": "https://blinkit.com/prn/x/prid/501346",
"rating": 4.06,
"rating_count": 1891,
"inventory": 6,
"platform": {
"name": "BlinkIt",
"sla": "8 mins",
"open": true,
"icon": "https://d2chhaxkq6tvay.cloudfront.net/..."
}
}
]
}
}/v1/itemItem Details
Get real-time price, stock, and availability for a specific item on a platform. Use the id from search results.
Response note: data.items is always an array. Most platforms return a single item; some (like Swiggy) may return multiple variants.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| item_id | string | Required | Platform-specific item ID (from search results or a product link) |
| lat | float | Required | Latitude (e.g. 12.9021) |
| lon | float | Required | Longitude (e.g. 77.6639) |
| platform | string | Required | BlinkIt, Zepto, Swiggy, BigBasket, DMart, JioMart, Minutes, Amazon, Nykaa, Myntra, Flipkart, Meesho, NoonMinutes, TalabatMart, RelianceDigital, Croma, Vivo, or OnePlus |
| pincode | string | Optional | Pincode (required for DMart, JioMart, Minutes; optional for Croma/RelianceDigital, else derived from lat/lon) |
GET /v1/item?item_id=362674&lat=12.9021&lon=77.6639&platform=BlinkIt
{
"status": "success",
"request_id": "a1b2c3d4-...",
"credits_remaining": 48,
"data": {
"item_id": "362674",
"platform": "BlinkIt",
"lat": 12.9021,
"lon": 77.6639,
"count": 1,
"items": [
{
"item_id": "362674",
"name": "Tender Coconut (Thengina Kayi)",
"brand": null,
"quantity": "1 pc",
"available": true,
"price": 65,
"mrp": 82,
"inventory": 20,
"deeplink": "https://blinkit.com/prn/x/prid/362674",
"rating": null,
"rating_count": null,
"platform": "BlinkIt",
"store_id": "45342",
"fetched_at": "16-03-2026 06:52:12 AM",
"gallery": [
{ "type": "image", "url": "https://cdn.grofers.com/da/cms-assets/cms/product/..." },
{ "type": "image", "url": "https://cdn.grofers.com/da/cms-assets/cms/product/..." }
]
}
]
}
}Swiggy variants
Swiggy items can include multiple pack sizes/SKUs. We normalize these into data.items (one entry per variant).
Electronics platforms (item only)
These support /v1/item and /v1/items only — no search or ETA. Take the item ID from the product link (or use the Item ID Finder):
RelianceDigital— the product slug after /product/ in a reliancedigital.in link, e.g.poco-m8x-5g-128-gb-4-gb-ram-smartphone-blue-mt782n-10555462Croma— the number after /p/ in a croma.com link, e.g.317418Vivo— <spuId>:<skuId> from a mshop.vivo.com/in/product/<spuId>?skuId=<skuId> link (bare spuId = default variant), e.g.10373:19585OnePlus— <productCode>:<skuCode> from the OnePlus store (bare productCode = first in-stock variant), e.g.P1120230:5011122818
/v1/etaDelivery ETA
Get estimated delivery time and store availability for a quick commerce platform at a given location. ETA is not available for Amazon, Nykaa, Myntra, Flipkart, Meesho, or the item-only electronics stores. If the platform times out or errors, the call costs no credit and the platform is listed in failed_platforms.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| lat | float | Required | Latitude (e.g. 12.9021) |
| lon | float | Required | Longitude (e.g. 77.6639) |
| platform | string | Required | BlinkIt, Zepto, Swiggy, BigBasket, DMart, JioMart, Minutes, NoonMinutes, or TalabatMart |
| pincode | string | Optional | Pincode (required for DMart, JioMart, Minutes) |
GET /v1/eta?lat=12.9021&lon=77.6639&platform=BlinkIt
{
"status": "success",
"request_id": "a1b2c3d4-...",
"credits_remaining": 47,
"data": {
"platform": "BlinkIt",
"eta": "14 mins",
"open": true,
"store_id": "45342",
"store_ids": ["36475", "38212", "42814", "45342"],
"icon": "https://d2chhaxkq6tvay.cloudfront.net/platforms/blinkit.webp",
"url": "https://blinkit.com",
"lat": 12.9021,
"lon": 77.6639,
"failed_platforms": []
}
}/v1/groupsearchGroup Search (Multi-Platform)
Search for products across multiple platforms at once in a single API call. Credits charged = number of platforms that answer.
Credit Cost
1 credit per platform that answers. For example, searching 3 platforms costs 3 credits; if one times out or errors, it costs 2 and that platform is listed in failed_platforms.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| q | string | Required | Search query (e.g. 'atta', 'milk') |
| lat | float | Required | Latitude (e.g. 12.9021) |
| lon | float | Required | Longitude (e.g. 77.6639) |
| platforms | string | Required | Comma-separated platform names (e.g. BlinkIt,Zepto,Amazon,Flipkart) |
| group | boolean | Optional | If true, return raw grouped response from platform instead of per-platform results |
| pincode | string | Optional | Pincode (required if platforms include DMart, JioMart, or Minutes) |
GET /v1/groupsearch?q=atta&lat=12.9021&lon=77.6639&platforms=BlinkIt,Zepto
{
"status": "success",
"request_id": "a1b2c3d4-...",
"credits_remaining": 45,
"data": {
"query": "atta",
"platforms": ["BlinkIt", "Zepto"],
"lat": 12.9021,
"lon": 77.6639,
"credit_cost": 2,
"failed_platforms": [],
"results": {
"BlinkIt": [
{
"id": "501346",
"name": "Aashirvaad Atta",
"mrp": 280,
"offer_price": 265,
"available": true,
"platform": { "name": "BlinkIt", "sla": "8 mins" }
}
],
"Zepto": [
{
"id": "zp-9823",
"name": "Aashirvaad Atta",
"mrp": 280,
"offer_price": 270,
"available": true,
"platform": { "name": "Zepto", "sla": "10 mins" }
}
]
}
}
}Raw Grouped Response (group=true)
Pass group=true to get the raw grouped response from the platform instead of per-platform results.
GET /v1/groupsearch?q=atta&lat=12.9021&lon=77.6639&platforms=BlinkIt,Zepto&group=true
{
"status": "success",
"request_id": "a1b2c3d4-...",
"credits_remaining": 45,
"data": {
"query": "atta",
"platforms": ["BlinkIt", "Zepto"],
"lat": 12.9021,
"lon": 77.6639,
"credit_cost": 2,
"failed_platforms": [],
"groups": [
{
"data": [
{
"id": "501346",
"name": "Aashirvaad Atta",
"brand": "Aashirvaad",
"available": true,
"images": ["https://cdn.grofers.com/..."],
"mrp": 280,
"offer_price": 265,
"quantity": "5 kg",
"deeplink": "https://blinkit.com/prn/x/prid/501346",
"rank": 1,
"inventory": 6,
"rating": 4.68,
"ratingCount": 52060,
"platform": {
"name": "BlinkIt",
"sla": "8 mins",
"storeId": 45342,
"open": true
},
"siblings": ["501346"]
}
]
}
]
}
}/v1/groupetaGroup ETA (Multi-Platform)
Get delivery ETA across multiple platforms at once in a single API call. Credits charged = number of platforms that answer.
Credit Cost
1 credit per platform that answers. For example, checking ETA for 4 platforms costs 4 credits; if one times out or errors, it costs 3 and that platform is listed in failed_platforms.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| lat | float | Required | Latitude (e.g. 12.9021) |
| lon | float | Required | Longitude (e.g. 77.6639) |
| platforms | string | Required | Comma-separated quick commerce platform names (e.g. BlinkIt,Zepto,DMart) |
| pincode | string | Optional | Pincode (required if platforms include DMart, JioMart, or Minutes) |
GET /v1/groupeta?lat=12.9021&lon=77.6639&platforms=BlinkIt,Zepto,Swiggy
{
"status": "success",
"request_id": "a1b2c3d4-...",
"credits_remaining": 42,
"data": {
"platforms": ["BlinkIt", "Zepto", "Swiggy"],
"lat": 12.9021,
"lon": 77.6639,
"credit_cost": 3,
"failed_platforms": [],
"results": [
{
"platform": "BlinkIt",
"eta": "14 mins",
"open": true,
"store_id": "45342"
},
{
"platform": "Zepto",
"eta": "10 mins",
"open": true,
"store_id": "zp-1234"
},
{
"platform": "Swiggy Instamart",
"eta": "20 mins",
"open": true,
"store_id": "sw-5678"
}
]
}
}/v1/screenshotProduct Page Screenshot
Capture a platform's own product page at a delivery location, as proof of the price shoppers there see. You get a PNG (with a banner recording platform, item, location, store and time), a one-page PDF report and, if you ask, a video of the session. Works for BlinkIt, Swiggy (Instamart), Zepto, BigBasket, JioMart, Minutes and DMart, the marketplaces Amazon, Flipkart, Myntra and Nykaa, and the electronics stores Croma, Reliance Digital, OnePlus and Vivo.
Credit Cost
50 credits per screenshot, whatever the options. A capture that fails is refunded: at once with sync=true, otherwise when you next check its status.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| platform | string | Required | BlinkIt, Swiggy, Zepto, BigBasket, JioMart, Minutes, DMart, Amazon, Flipkart, Myntra, Nykaa, Croma, RelianceDigital, OnePlus or Vivo |
| item_id | string | Required | Platform-specific item ID (from /v1/search or /v1/item); for a marketplace you can pass url instead |
| url | string | Optional | Marketplaces only: a product page link instead of item_id |
| lat | float | Optional | Latitude (e.g. 12.9116); quick commerce needs lat and lon, or a pincode |
| lon | float | Optional | Longitude (e.g. 77.6389) |
| pincode | string | Optional | 6-digit pincode; worked out from lat/lon when omitted. Enough on its own for marketplaces |
| device | string | Optional | desktop (default) or mobile, the platform's phone website (BlinkIt, Swiggy, Zepto, BigBasket, JioMart and Minutes only) |
| capture | string | Optional | visible (default, the first screen) or full (the whole page) |
| format | string | Optional | png, pdf, both (default), video, all, or a list like png,video |
| video | boolean | Optional | true also records a WebM video of the session |
| sync | boolean | Optional | true waits for the result in this call |
| wait | integer | Optional | Seconds to wait with sync, 1 to 90 (default 90) |
GET /v1/screenshot?platform=BlinkIt&item_id=36961&lat=12.9116&lon=77.6389&sync=true
{
"status": "success",
"request_id": "a1b2c3d4-...",
"credits_remaining": 950,
"data": {
"job_id": "777c7cd464e34fcb802460504ed3a19d",
"status": "done",
"platform": "BlinkIt",
"item_id": "36961",
"device": "desktop",
"capture": "visible",
"formats": ["png", "pdf"],
"location": { "lat": 12.9116, "lon": 77.6389, "pincode": "560102", "precision": "exact" },
"api_price": { "price": 63, "mrp": 63, "available": true, "name": "Mother Dairy Salted Butter" },
"result": {
"png_url": "https://...",
"pdf_url": "https://...",
"video_url": null,
"expires_in_seconds": 3600,
"captured_at": "2026-10-26T09:33:39+00:00",
"page_url": "https://blinkit.com/prn/x/prid/36961",
"page_price": "63",
"price_match": true,
"location_shown": "Sector 4, HSR Layout, Bengaluru, Karnataka 560102",
"truncated": false,
"sha256": { "png": "5b6b90ad...", "pdf": "f1bf7a61..." }
},
"error": null,
"credit_refunded": false
}
}How long it takes
About 15 to 20 seconds for BlinkIt, BigBasket and Swiggy, 30 to 50 seconds for Zepto and JioMart, and about 35 seconds for Minutes. Without sync (or if the wait runs out) you get status: queued or running with a job_id; poll Screenshot Status every poll_after_seconds. With sync, allow a 100-second HTTP timeout.
api_price is what the platform's app API reported when the job started; price_match says whether the page showed that price. Files are kept 30 days; links last 1 hour, so call Screenshot Status again for fresh ones.
Amazon, Flipkart, Myntra and Nykaa
These deliver by pincode, so pincode alone is enough. Pass the item ID you get from /v1/search (an ASIN, a Flipkart pid, a Myntra style id or a Nykaa product id) or the product link as url. The page's own price is read from the page and returned as page_price, with result.product_name and result.available as the page states them. Desktop site only; about 10 to 25 seconds. Meesho can't be captured. DMart, Croma, Reliance Digital, OnePlus and Vivo are also desktop only: Croma, Reliance Digital and Vivo set the pincode, DMart the store for your location, and OnePlus prices are the same everywhere.
GET /v1/screenshot?platform=Amazon&item_id=B071Z8M4KX&pincode=560034&sync=true/v1/screenshot/statusScreenshot Status
A screenshot job's state and, once it is done, its download links. Only the API key that started the job can read it.
Free
Checking a job costs no credits.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| job_id | string | Required | job_id returned by /v1/screenshot |
GET /v1/screenshot/status?job_id=777c7cd464e34fcb802460504ed3a19d
{
"status": "success",
"request_id": "e5f6a7b8-...",
"credits_remaining": 950,
"data": {
"job_id": "777c7cd464e34fcb802460504ed3a19d",
"status": "running",
"poll_after_seconds": 10,
"result": null,
"error": null,
"credit_refunded": false,
"...": "same fields as /v1/screenshot"
}
}status is queued, running, done or failed. A failed job carries an error and credit_refunded: true. An unknown job, or one started with a different key, returns 404 job_not_found.
/v1/creditsCheck Credits
Check your available credits, usage summary, and per-recharge breakdown. This endpoint is free — it does not consume any credits.
Free Endpoint
No credits are deducted for calling this endpoint. Use it to monitor your balance programmatically.
GET /v1/credits
{
"summary": {
"total_available": 2450,
"total_used": 50,
"active_packs": 2
},
"active": [
{
"id": "a1b2c3d4-...",
"pack_name": "starter",
"credits_total": 2500,
"credits_remaining": 2450,
"credits_used": 50,
"amount_paid": 500.0,
"is_trial": false,
"status": "active",
"purchased_at": "2026-03-16T05:14:03Z",
"expires_at": "2026-04-15T05:14:03Z"
}
],
"inactive": [
{
"id": "e5f6g7h8-...",
"pack_name": "trial",
"credits_total": 50,
"credits_remaining": 0,
"credits_used": 50,
"amount_paid": 0.0,
"is_trial": true,
"status": "exhausted",
"purchased_at": "2026-03-10T10:00:00Z",
"expires_at": "2026-04-09T10:00:00Z"
}
]
}Response Fields
| Parameter | Type | Required | Description |
|---|---|---|---|
| summary.total_available | integer | Required | Total credits available across all active packs |
| summary.total_used | integer | Required | Total credits consumed across all packs |
| summary.active_packs | integer | Required | Number of active (non-expired, non-exhausted) packs |
| active | array | Required | List of active credit packs with remaining credits |
| inactive | array | Required | List of exhausted or expired credit packs |
/v1/supported-platformsSupported Platforms
Returns platform names by endpoint (14 for search, 18 for item, 9 for ETA) and, under countries, the platforms and price currency for each country. This endpoint is free — no authentication or credits required.
Free & Public
No API key or credits needed. Use this to dynamically populate platform dropdowns in your app.
GET /v1/supported-platforms
{
"platforms": [
"BlinkIt",
"Zepto",
"Swiggy",
"BigBasket",
"DMart",
"JioMart",
"Minutes",
"Amazon",
"Nykaa",
"Myntra",
"Flipkart",
"Meesho",
"NoonMinutes",
"TalabatMart",
"RelianceDigital",
"Croma",
"Vivo",
"OnePlus"
],
"count": 18,
"search": [
"BlinkIt",
"Zepto",
"Swiggy",
"BigBasket",
"DMart",
"JioMart",
"Minutes",
"Amazon",
"Nykaa",
"Myntra",
"Flipkart",
"Meesho",
"NoonMinutes",
"TalabatMart"
],
"item": [
"BlinkIt",
"Zepto",
"Swiggy",
"BigBasket",
"DMart",
"JioMart",
"Minutes",
"Amazon",
"Nykaa",
"Myntra",
"Flipkart",
"Meesho",
"NoonMinutes",
"TalabatMart",
"RelianceDigital",
"Croma",
"Vivo",
"OnePlus"
],
"eta": [
"BlinkIt",
"Zepto",
"Swiggy",
"BigBasket",
"DMart",
"JioMart",
"Minutes",
"NoonMinutes",
"TalabatMart"
],
"countries": {
"IN": {
"platforms": [
"BlinkIt",
"Zepto",
"Swiggy",
"BigBasket",
"DMart",
"JioMart",
"Minutes",
"Amazon",
"Nykaa",
"Myntra",
"Flipkart",
"Meesho",
"RelianceDigital",
"Croma",
"Vivo",
"OnePlus"
],
"currency": "INR"
},
"AE": {
"platforms": [
"NoonMinutes",
"TalabatMart"
],
"currency": "AED"
}
}
}Catalogue & datasets
The QuickCommerce API returns live search and item results for 18 platforms, plus delivery ETA for 9 quick commerce platforms at a latitude/longitude. For national product catalogues, brand rollups, dark store maps, and bulk exports, start with API vs datasets, then browse and license on QuickCommerceData.
Error Codes
| Code | Meaning |
|---|---|
| 401 | Invalid or missing API key |
| 402 | No credits remaining (purchase more) |
| 404 | Item not found or platform unavailable at location, or screenshot job not found |
| 422 | Invalid query parameters or platform name |
| 429 | Rate limit exceeded (100 req/min) |
| 500 | Internal server error |
| 502 | Platform upstream error |
| 504 | Platform request timed out |
A call that returns an error costs no credits. On /v1/items, IDs that aren't found are free too.
Response Headers
Every API response includes these headers:
| Header | Description |
|---|---|
| X-Request-Id | Unique request identifier (UUID) |
| X-Credits-Remaining | Your total remaining credits |
| X-Credits-Expiry | Earliest credit expiry date (ISO 8601) |