MindCase
Kritish Puri

Instamart, Zepto, and Blinkit: Comparing India's Quick-Commerce APIs

Same product shape, three different catalogs. Here's how Blinkit, Instamart, and Zepto's data actually compares before you pick one.

quick-commerceproduct
Instamart, Zepto, and Blinkit: comparing India's quick-commerce APIs

Blinkit, Instamart, and Zepto all sell the same category of thing — groceries and household goods, delivered from a dark store in minutes — and Mindcase returns product data from all three in the same shape: same price, stock, and rating fields either way. What isn't the same is how much of each platform you can actually reach, and how each one is built underneath. Picking one over another for a project is a coverage and architecture question, not a pricing one — all three cost the same per product.

If you're an agent (or building one) reading this rather than a human, the full machine-readable schema for every endpoint below lives at mindcase.co/skills.md.

How is each platform's API actually structured?

Blinkit Products is one endpoint that does four jobs: pass a query and it searches, pass category/sub_category and it browses, pass brand and it filters by brand, pass urls and it looks up specific product pages directly. One call shape, four ways to reach it.

Instamart and Zepto split the same three jobs into three separate endpoints each: Instamart Search / Instamart Category / Instamart Products, and the equivalent trio for Zepto. There's no functional gap between the two designs — Blinkit's single endpoint and Instamart or Zepto's three endpoints return the same fields — it's purely a difference in how many calls you write in your integration.

How does city and store coverage compare?

curl -X POST "https://api.mindcase.co/v1/data/blinkit/products/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "params": {
    "query": "Amul Milk",
    "city": "Bangalore",
    "pincode": "560034",
    "maxResults": 20
  }
}'

# $0.001 per product

This isn't close. Blinkit covers 253 cities across roughly 2,100 dark stores. Instamart covers 145 cities across roughly 1,200 stores. Zepto covers 82 cities across a similar ~1,200 stores to Instamart, but spread across under a third of Blinkit's city list. A pincode that resolves to a real dark store on Blinkit can come back empty on Zepto simply because Zepto hasn't launched there yet — that's a coverage gap, not a data-quality problem, and it changes which platform is even queryable for a given city before catalog depth matters at all.

How does category depth compare?

Each platform organizes its catalog into a top-level category and a sub-category underneath it, and the granularity differs by roughly 2x platform to platform: Instamart's taxonomy runs 36 top-level categories and 504 sub-categories, Blinkit runs 28 top-level categories and 302 sub-categories, and Zepto runs the narrowest at 23 top-level categories and 228 sub-categories. Blinkit additionally exposes brand as a first-class filter with 7,714 tracked brand names — neither Instamart nor Zepto's schema exposes an equivalent brand-search input, so a brand-wide catalog sweep (every SKU a specific brand sells, not just what shows up in one category) is a Blinkit-specific capability.

Practically: a deep single-category comparison (every soft drink SKU across all three, say) will find more granularity to filter on with Instamart than with Zepto, since Instamart's sub-categories cut the same grocery aisle into roughly twice as many buckets.

What can't you get from any of these?

Two cases.

None of them return a delivery-time estimate. The core promise of quick-commerce — 10-to-20-minute delivery — isn't a field in the product schema on any of the three platforms. What you get is price, stock, and rating at a specific dark store; whether that store can actually hit its advertised delivery window isn't part of the data.

Coverage numbers shift. City, store, and category counts above are a snapshot — quick-commerce platforms expand into new cities and reorganize categories more often than, say, an e-commerce marketplace does. Confirm current counts via GET /v1/data/<platform>/products?expand=options before treating a specific city or category as covered.

Which endpoint should you use for which job?

EndpointCitiesStoresTop categoriesPriceBest for
Blinkit Products~253~2,10028$0.001 / productBroadest city reach, brand-level search
Instamart Products / Search / Category~145~1,20636$0.001 / productDeepest category granularity
Zepto Products / Search / Category~82~1,20223$0.001 / productStore density in the cities it does cover

For pulling the same product across all three platforms at once and turning it into one live feed, see Turning Blinkit and Zepto Prices into a Live Feed. For the mechanics of category browsing versus keyword search on Instamart and Zepto specifically, see Category and Search Data Across Quick-Commerce Apps.

FAQ

Yes. Product-level calls on Blinkit, Instamart, and Zepto return the same core shape — price, MRP, discount, stock, rating, images, product URL, and store location — so switching platforms in an integration doesn't mean remapping fields.

Check coverage for that specific city first via the options endpoint. Blinkit's broader city list makes it the more likely match for a smaller or non-metro city, but confirm rather than assume, since coverage changes as platforms expand.

No. All three platforms price at $0.001 per product regardless of which endpoint you call. The difference is call count in your integration, not cost.

Not as a dedicated input. Blinkit's `brand` parameter is a first-class filter with 7,714 tracked names; Instamart and Zepto don't expose an equivalent, so a brand-wide sweep there means searching by product name instead.

$0.001 per product returned, uniform across all three platforms and every endpoint (search, category, or direct URL).