Track Grocery Prices Across BlinkIt, Zepto & Swiggy with One API
Monitor and track grocery prices across India's top quick commerce platforms. Set up automated price tracking with cron jobs and alerts.
Grocery prices on quick commerce platforms fluctuate more than you might think. The same 5kg bag of Aashirvaad Atta can be Rs 100 on BlinkIt today and Rs 180 on Zepto tomorrow. Festive sales, platform-specific discounts, and dynamic pricing mean that the cheapest platform changes constantly. For budget-conscious families, D2C brands tracking competitors, or deal-hunting apps, real-time price tracking across platforms is essential.
In this guide, we will show you how to set up automated price tracking using the QuickCommerce API. You will learn how to query prices, store them over time, and set up alerts when prices drop below your target. Whether you are a developer building a consumer app or a business monitoring competitor pricing, this approach scales from tracking a single product to thousands of SKUs.
Platforms We Will Track
The QuickCommerce API supports all 7 major quick commerce platforms in India. For comprehensive price tracking, we recommend monitoring at least these key platforms. Each one has different pricing strategies and discount patterns. Visit any platform page below for platform-specific details.
Using the Search Endpoint
The search endpoint is the foundation of price tracking. It queries a single platform and returns product results with prices, MRP, offer prices, and availability. The search endpoint costs just 1 credit per call, making it the most cost-effective way to track prices when you know exactly which platform you want to query. For searching across multiple platforms in one call, use the groupsearch endpoint instead.
Searching on BlinkIt
curl -X GET "https://api.quickcommerceapi.com/api/v1/search?query=Aashirvaad+Atta+5kg&platform=blinkit" \
-H "X-API-Key: YOUR_API_KEY"{
"query": "Aashirvaad Atta 5kg",
"platform": "blinkit",
"products": [
{
"name": "Aashirvaad Superior MP Atta 5 kg",
"price": 327,
"mrp": 365,
"offer_price": 327,
"image": "https://cdn.blinkit.com/aashirvaad-atta-5kg.jpg",
"in_stock": true,
"quantity": "5 kg",
"brand": "Aashirvaad",
"category": "Atta, Flours & Sooji",
"sub_category": "Atta"
},
{
"name": "Aashirvaad Whole Wheat Atta 5 kg",
"price": 331,
"mrp": 369,
"offer_price": 331,
"image": "https://cdn.blinkit.com/aashirvaad-ww-5kg.jpg",
"in_stock": true,
"quantity": "5 kg",
"brand": "Aashirvaad",
"category": "Atta, Flours & Sooji",
"sub_category": "Atta"
}
],
"total_results": 2,
"credits_used": 1,
"response_time_ms": 892
}Comparing with Zepto
curl -X GET "https://api.quickcommerceapi.com/api/v1/search?query=Aashirvaad+Atta+5kg&platform=zepto" \
-H "X-API-Key: YOUR_API_KEY"{
"query": "Aashirvaad Atta 5kg",
"platform": "zepto",
"products": [
{
"name": "Aashirvaad Superior MP Whole Wheat Atta, 5 kg",
"price": 339,
"mrp": 365,
"offer_price": null,
"image": "https://cdn.zepto.co/aashirvaad-5kg.webp",
"in_stock": true,
"quantity": "5 kg",
"brand": "Aashirvaad",
"category": "Foodgrains",
"sub_category": "Atta & Flour"
}
],
"total_results": 1,
"credits_used": 1,
"response_time_ms": 764
}Price Comparison Across Platforms
After querying all platforms, here is what the Aashirvaad Atta 5kg prices look like across 5 major platforms. Notice the significant price variation. DMart consistently offers the lowest prices, while convenience-focused platforms like Zepto and BlinkIt charge a small premium for faster delivery.
| Platform | Price | MRP | Savings | In Stock |
|---|---|---|---|---|
| BlinkIt | Rs 327 | Rs 365 | Rs 38 (10.4%) | Yes |
| Zepto | Rs 339 | Rs 365 | Rs 26 (7.1%) | Yes |
| Swiggy Instamart | Rs 319 | Rs 365 | Rs 46 (12.6%) | Yes |
| BigBasket | Rs 325 | Rs 365 | Rs 40 (11.0%) | Yes |
| DMart Ready | Rs 299 | Rs 365 | Rs 66 (18.1%) | Yes |
Aashirvaad Atta 5kg — Price Trend (7 Days)
Price Comparison: Aashirvaad Atta 5kg
₹45
Price Variance
Across platforms
DMart
Cheapest
Most often
1 credit
Tracking Cost
Per search
7
Platforms
Monitored
Tip
The search endpoint costs just 1 credit per call. So tracking 10 products across 5 platforms every 6 hours uses only 200 credits per day. Check the pricing page for bulk credit packs.
Automated Price Tracking with Node.js
The real power of price tracking comes from automation. Here is a complete Node.js script that queries prices on a schedule, stores them in SQLite, and maintains a historical price database. This script runs every 6 hours using node-cron and tracks the products you configure.
const cron = require("node-cron");
const Database = require("better-sqlite3");
const fetch = require("node-fetch");
const API_KEY = process.env.QC_API_KEY;
const BASE_URL = "https://api.quickcommerceapi.com/api/v1";
// Products and platforms to track
const PRODUCTS = [
"Aashirvaad Atta 5kg",
"Amul Butter 500g",
"Tata Salt 1kg",
"Fortune Sunflower Oil 1L",
"Maggi Noodles 12 Pack",
];
const PLATFORMS = ["blinkit", "zepto", "swiggy", "bigbasket", "dmart"];
// Initialize SQLite database
const db = new Database("prices.db");
db.exec(`
CREATE TABLE IF NOT EXISTS price_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
product TEXT NOT NULL,
platform TEXT NOT NULL,
price REAL,
mrp REAL,
offer_price REAL,
in_stock INTEGER,
tracked_at DATETIME DEFAULT CURRENT_TIMESTAMP
)
`);
const insertPrice = db.prepare(`
INSERT INTO price_history (product, platform, price, mrp, offer_price, in_stock)
VALUES (?, ?, ?, ?, ?, ?)
`);
async function trackProduct(query, platform) {
try {
const url = `${BASE_URL}/search?query=${encodeURIComponent(query)}&platform=${platform}`;
const res = await fetch(url, {
headers: {
"X-API-Key": API_KEY,
"x-geolocation-pincode": "560001", // Bangalore
},
});
const data = await res.json();
const product = data.products?.[0];
if (product) {
insertPrice.run(
query,
platform,
product.price,
product.mrp,
product.offer_price || null,
product.in_stock ? 1 : 0
);
console.log(`[OK] ${platform} | ${query} | Rs ${product.price}`);
}
} catch (err) {
console.error(`[ERR] ${platform} | ${query}: ${err.message}`);
}
}
async function runTrackingCycle() {
console.log(`\n--- Price tracking run: ${new Date().toISOString()} ---`);
for (const product of PRODUCTS) {
for (const platform of PLATFORMS) {
await trackProduct(product, platform);
// Small delay to avoid rate limiting
await new Promise((r) => setTimeout(r, 500));
}
}
console.log("--- Tracking cycle complete ---\n");
}
// Run every 6 hours
cron.schedule("0 */6 * * *", runTrackingCycle);
// Also run immediately on start
runTrackingCycle();
console.log("Price tracker started. Running every 6 hours.");Setting Up Price Drop Alerts
Once you have price data flowing in, you can set up alerts for when prices drop below a threshold. Here is a Python script that checks the latest prices and sends an email alert when it finds a deal. This pairs perfectly with the Node.js tracker above. For a more complete alerting system, check out our dedicated price drop alerts guide.
import sqlite3
import smtplib
from email.mime.text import MIMEText
from datetime import datetime, timedelta
# Configuration
DB_PATH = "prices.db"
ALERT_EMAIL = "your-email@gmail.com"
SMTP_PASSWORD = "your-app-password"
# Products and their target prices
ALERTS = {
"Aashirvaad Atta 5kg": 310, # Alert if below Rs 310
"Amul Butter 500g": 270, # Alert if below Rs 270
"Fortune Sunflower Oil 1L": 145, # Alert if below Rs 145
}
def check_price_drops():
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
since = (datetime.now() - timedelta(hours=7)).isoformat()
deals = []
for product, target in ALERTS.items():
cursor.execute("""
SELECT platform, price, mrp
FROM price_history
WHERE product = ? AND price < ? AND tracked_at > ?
ORDER BY price ASC
""", (product, target, since))
rows = cursor.fetchall()
for platform, price, mrp in rows:
savings = round((1 - price / mrp) * 100, 1)
deals.append(f"{product} on {platform}: Rs {price} "
f"(MRP Rs {mrp}, {savings}% off)")
conn.close()
if deals:
send_alert(deals)
def send_alert(deals):
body = "Price drop alerts:\n\n" + "\n".join(deals)
body += "\n\nPowered by QuickCommerce API"
msg = MIMEText(body)
msg["Subject"] = f"Price Drop Alert - {len(deals)} deals found"
msg["From"] = ALERT_EMAIL
msg["To"] = ALERT_EMAIL
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
server.login(ALERT_EMAIL, SMTP_PASSWORD)
server.send_message(msg)
print(f"Alert sent with {len(deals)} deals!")
if __name__ == "__main__":
check_price_drops()Quick Setup Guide
Create your free account
Head to quickcommerceapi.com/auth/signup and create your account. You will get 50 free credits to start.
Install dependencies
Run: npm install node-cron better-sqlite3 node-fetch. For the Python alert script, you just need the standard library.
Configure your products
Edit the PRODUCTS and PLATFORMS arrays in price-tracker.js to include the products and platforms you want to track.
Set your API key
Export your API key as an environment variable: export QC_API_KEY=your_key_here. Never hardcode API keys in source code.
Run the tracker
Start with: node price-tracker.js. It will run immediately and then every 6 hours. Use PM2 or systemd for production deployments.
Set up alerts
Configure the alert_checker.py with your target prices and email. Run it via cron: 0 */6 * * * python3 alert_checker.py
Test the Search Endpoint Live
Before setting up your tracker, try the search endpoint in our interactive playground. You can test with different products, platforms, and see the exact response format you will be working with.
Info
The API Playground lets you test all endpoints with your API key in a live, interactive environment. Try searching for your favorite grocery items and see prices in real-time.
What You Can Build Next
Price tracking is just the beginning. Once you have historical data, you can build price trend charts, identify the best day to buy certain products, or build a full price comparison app. You can also combine price data with delivery ETA data to recommend the cheapest and fastest platform for each order. For businesses, this data feeds into market intelligence dashboards for competitive analysis.