Blinkit Products & Prices Scraper avatar

Blinkit Products & Prices Scraper

Pricing

Pay per event

Go to Apify Store
Blinkit Products & Prices Scraper

Blinkit Products & Prices Scraper

Scrape Blinkit product data by search term, category or product URL: prices, MRP, discounts, pack sizes, stock levels, delivery ETAs and ratings — for any Indian city, PIN code or coordinates.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Zapticx

Zapticx

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

⚡ Blinkit Products & Prices Scraper

Extract live Blinkit products, prices, discounts, stock levels, delivery ETAs and ratings — across any Indian location.

🔎 Search products · 💰 Track prices · 📦 Check stock · 📍 Compare locations · ⚡ Fast extraction


🛒 ProductsSearch terms, whole categories, or specific product URLs
💰 PricingPrice, MRP, discount amount & percent, price per 100 g/ml
📦 AvailabilityStock status plus live inventory counts per store
🚚 DeliveryLocation-specific delivery ETA in minutes
📍 LocationsCity name, 6-digit PIN code, or exact coordinates
📊 ComparisonThe same product priced across as many locations as you like

📍 Blinkit prices are set per dark store — not nationally

In a verified three-city run, 26 of the 69 products found in more than one city were priced differently, and stock diverged completely:

ProductDelhiMumbaiBengaluru
English Oven Zero Maida Multigrain Bread₹70₹65₹70
Amul Moti Toned Milk₹33₹30
Amul Taaza Toned MilkOut of stock12 in stock

A national average would hide every one of these. This Actor returns one row per product per location, so the gaps stay visible.


🚀 Get started in seconds

Paste this, click Start, and you'll have products in about 8 seconds:

{
"searchQueries": ["chocolate"],
"locations": ["Delhi"]
}

That's the whole setup — no account, no login, no cookies, nothing to configure. To compare cities, just add more locations:

{
"searchQueries": ["amul milk"],
"locations": ["Delhi", "Mumbai", "560001"],
"maxResults": 100
}

What you can use it for

  • Price monitoring — track competitor pricing on FMCG products over time
  • Multi-city price comparison — quantify how the same SKU is priced across metros
  • Stockout tracking — live per-store inventory counts, not just an in/out flag
  • Discount monitoring — find where the MRP-to-price gap is widening
  • Brand monitoring — follow your own products' listings, ratings and shelf presence
  • Catalogue extraction — pull an entire Blinkit category for market research

What makes this different

This ActorTypical Blinkit scrapers
DiscountsNumeric discountAmount and discountPercentA text badge like "10% OFF" you have to parse
Pack sizesParsed to unitQuantity + unitMeasure, plus price per 100 g/mlRaw string only
Paid placementsFlagged with isSponsoredMixed silently into results
InputsSearch and categories and product URLsUsually search only
LocationsCity name, PIN code, or coordinatesOften raw latitude/longitude only
Missing dataReported as nullSometimes zero-filled or invented

Why isSponsored matters

Blinkit injects paid placements into results, heavily concentrated at the top. Measured across 1,000 products collected by this Actor:

Result positionsShare that are ads
1–12 (first screen)58%
13–2447%
25–5032%
51–1005%
100+0%

If you sample the first page to measure share of shelf or organic ranking and can't tell ads apart, more than half your sample is advertising rather than ranking.


How it works

  1. You give it search terms, categories or product URLs, plus one or more locations.
  2. Each location is resolved to coordinates and checked against Blinkit's serviceability API. Unserviceable locations are reported and skipped — the run carries on.
  3. For each location, the Actor collects products exactly as a customer in that area would see them, following Blinkit's own pagination.
  4. Rows are normalised, de-duplicated per location, and streamed to your dataset.

There is no browser involved, which is why runs are measured in seconds and fit comfortably in 256 MB.

Input

Everything is optional — the defaults run as-is. Provide at least one of search terms, categories or product URLs.

FieldTypeDefaultWhat it does
searchQueriesarray["chocolate"]Search terms, e.g. Amul milk, Red Bull
locationsarray["Delhi"]City, PIN code, or "28.6139,77.2090"
maxResultsinteger50Max products per location
categoriesarray[]Category name (ice cream) or a Blinkit category URL
productUrlsarray[]Specific Blinkit product links
brandFilterarray[]Keep only these brands
includeOutOfStockbooleantrueKeep products the store has run out of
includeSponsoredbooleantrueKeep paid placements (always flagged)
maxRequestRetriesinteger3Retries before giving up on a request
proxyConfigurationobjectApify residentialPre-configured; see Proxies

Output

One row per product, per location.

FieldTypeDescription
productIdstringBlinkit's stable SKU id
name · brandstringProduct name and brand
subcategorystringBlinkit's product type, e.g. Potato Chips
price · mrpnumberSelling price and maximum retail price, in INR
discountAmount · discountPercentnumberCalculated from MRP and price
packSizestringAs shown by Blinkit, e.g. 500 ml, 4 x 250 ml
unitQuantity · unitMeasurenumber · stringPack size normalised to grams or millilitres
pricePerUnit · pricePerUnitBasisnumber · stringPrice per 100 g / 100 ml, for fair comparison
availability · stockStatusboolean · stringWhether it can be bought right now
inventoryCountintegerUnits on hand at that dark store
deliveryEtaMinutesintegerDelivery estimate for that store
ratingnumberAverage customer rating, 0–5
isSponsoredbooleantrue for Blinkit paid placements
productUrl · imageUrl · imageUrlsstring · arrayLinks and images (up to 5)
variantGroupIdstringLinks variants of the same product
merchantId · merchantTypestringWhich dark store served this price
location · cityName · pincodestringThe location this row was priced for
latitude · longitudenumberCoordinates used
source · sourceTermstringWhether the row came from a search, category or product URL — and which one
currencystringINR
scrapedAtstringISO 8601 UTC timestamp

Example output

{
"productId": "212722",
"name": "Nestle KitKat 4 Fingers Choco Coated Wafer Bar",
"brand": "Nestle KitKat",
"subcategory": "Chocolates",
"price": 30.0,
"mrp": 30.0,
"discountAmount": 0.0,
"discountPercent": 0.0,
"currency": "INR",
"packSize": "38.5 g",
"unitQuantity": 38.5,
"unitMeasure": "g",
"pricePerUnit": 77.9221,
"pricePerUnitBasis": "per 100 g",
"availability": true,
"stockStatus": "in_stock",
"inventoryCount": 50,
"deliveryEtaMinutes": 13,
"rating": 4.72,
"isSponsored": false,
"productUrl": "https://blinkit.com/prn/nestle-kitkat-4-fingers-choco-coated-wafer-bar/prid/212722",
"imageUrl": "https://cdn.grofers.com/da/cms-assets/cms/product/....png",
"variantGroupId": "1097667",
"merchantId": "36778",
"merchantType": "express",
"location": "Delhi",
"cityName": "Delhi",
"pincode": null,
"latitude": 28.6139,
"longitude": 77.209,
"source": "search",
"sourceTerm": "chocolate",
"scrapedAt": "2026-08-27T14:31:05+00:00"
}

The dataset ships with four ready-made views: Products & prices, Compare across locations, Discounts & unit economics, and Search placement (which flags paid placements alongside organic results).

To exclude paid placements from the data altogether, set includeSponsored to false in the input. Dataset views select columns rather than filtering rows, so the filtering happens at collection time.

More examples

Track one product across cities — the fastest way to see location pricing:

{
"productUrls": ["https://blinkit.com/prn/amul-gold-milk/prid/14639"],
"locations": ["Delhi", "Mumbai", "560001"],
"maxResults": 10
}

Monitor your brand inside a category, excluding ads:

{
"categories": ["chips"],
"brandFilter": ["Lay's", "Bingo"],
"locations": ["Gurugram"],
"maxResults": 300,
"includeSponsored": false
}

Pull a whole category catalogue for one city:

{
"categories": ["https://blinkit.com/cn/munchies/cid/1237/940"],
"locations": ["Mumbai"],
"maxResults": 2000
}

Multi-location scraping

Blinkit assigns every customer a dark store from their coordinates, and that store sets the price, the stock and the delivery time. Specify a location three ways:

InputExampleResolves to
City nameMumbaiCity centre
PIN code110001The PIN's city
Coordinates19.1176,72.9060That exact point

City names and PIN codes resolve to a city-level point, which is enough to reach the right city's store. For a specific neighbourhood's store, pass coordinates.

Because pricing is per store, rows are de-duplicated per location: one SKU scraped for three cities gives three rows. That is what makes the comparison possible.

Proxies

Blinkit refuses connections from data-centre IP ranges, so runs use Apify residential proxies. This is already configured in the default input and you should not need to touch it.

Residential traffic is billed by Apify separately from this Actor's price. Responses are compressed, so 1,000 products moves only about 1 MB — well under a cent.

Performance

Measured on the Apify platform at 256 MB:

RunProductsTime
Default, 1 location507–19 s
3 locations × 10030030 s
1 location × 1,0001,0002 min 6 s

Rows stream to the dataset in batches, so memory stays flat no matter how large maxResults is.

Pricing

EventPrice
Actor start$0.00005
Per product scraped$0.0015

1,000 products costs about $1.50, plus a fraction of a cent in residential proxy traffic. You are charged per product actually written to your dataset — a run that finds nothing costs only the start fee.

Limitations

  • No review counts. Blinkit's web API publishes an average rating but no number of reviews, so that field is not offered rather than shipped permanently empty.
  • No top-level category field. Blinkit leaves its category hierarchy blank in the responses used here, so it is omitted. subcategory (its product type, e.g. Potato Chips) is populated on essentially every row, and sourceTerm records which category a row came from.
  • One store per location. Prices reflect the dark store Blinkit assigns to those coordinates, not a city-wide average.
  • Out-of-stock products may have no price. Blinkit reports 0 for products a store isn't selling; that is returned as null, not as free.
  • City and PIN inputs are city-level. Use coordinates for neighbourhood precision.
  • Ambiguous category names are rejected, not guessed. If a name could mean several categories, the run lists the candidates instead of silently scraping the wrong one. Paste a category URL when in doubt.
  • Blinkit operates only in India, and only in the cities it serves.

FAQ

Do I need a Blinkit account? No. Only publicly accessible catalogue data is collected — no login, no cart, no personal data.

Why did I get fewer products than maxResults? Blinkit ran out of matching results for that term at that store. maxResults is a ceiling, not a target.

Can I compare one SKU across cities? Yes — put its URL in productUrls and list several locations.

Why are some rows marked isSponsored? Blinkit injects paid placements into results. They're kept and flagged by default; set includeSponsored: false to drop them.

How do I find a category URL? Open the category on blinkit.com and copy the address — it looks like https://blinkit.com/cn/munchies/cid/1237/940.

How often should I run it? Quick-commerce pricing moves daily. Most price-monitoring users schedule a daily run; stockout tracking benefits from a few runs a day.


Collects publicly accessible data only. Blinkit is a trademark of its respective owner; this Actor is not affiliated with or endorsed by Blinkit. You are responsible for ensuring your use of the data complies with applicable laws and Blinkit's terms.