# Blinkit Product Search Scraper (`stealth_mode/blinkit-product-search-scraper`) Actor

Scrape product listings from Blinkit's search results effortlessly. Extract 32+ data fields including product names, prices, ratings, inventory status, merchant info, and visual assets — perfect for e-commerce analytics, competitive monitoring, and market research.

- **URL**: https://apify.com/stealth\_mode/blinkit-product-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Blinkit Product Search Scraper: Capture Quick-Commerce Inventory Data

***

### What Is Blinkit?

Blinkit is a leading quick-commerce platform offering rapid delivery of groceries, electronics, beauty products, and household essentials. With millions of SKUs across hundreds of categories, Blinkit's product catalog is constantly evolving. Manually tracking prices, availability, and merchant details is impractical — the **Blinkit Product Search Scraper** automates this, delivering structured product data directly from search result pages.

***

### Overview

The **Blinkit Product Search Scraper** extracts product listing pages from Blinkit's search interface, converting dynamic product cards into clean, structured records. It is designed for:

- **E-commerce analysts** tracking pricing trends and competitor offerings
- **Market researchers** studying quick-commerce inventory and category performance
- **Data scientists** building datasets for price elasticity or demand modeling
- **Aggregator platforms** integrating Blinkit products into comparison tools

Key features include configurable item limits per URL, robust error handling via `ignore_url_failures`, and comprehensive output spanning product details, pricing, inventory, and merchant metadata.

***

### Input Format

The scraper accepts a JSON configuration object with three main parameters:

```json
{
  "urls": [
    "https://blinkit.com/cn/null/cid/1237/940"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
```

#### Input Parameters Explained

| Parameter | Type | Description | Example |
|---|---|---|---|
| `urls` | Array of strings | List of Blinkit product search result pages to scrape | `["https://blinkit.com/cn/null/cid/1237/940"]` |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues if some URLs fail; if `false`, it stops on the first error | `true` |
| `max_items_per_url` | Integer | Maximum number of products to extract per URL (1–200) | `200` |

**How to find URLs:**

1. Navigate to Blinkit.com and search for a category or product
2. The URL structure is typically: `https://blinkit.com/cn/null/cid/{CATEGORY_ID}/{SUBCATEGORY_ID}`
3. Copy the full URL and paste it into the `urls` array

> **Tip:** Use `max_items_per_url: 200` to capture full category pages. Lower values (e.g., 20–50) are useful for testing or limiting data volume.

***

### Output Format

#### Example Output Record

```json
{
  "identity": {
    "id": "782236"
  },
  "section_count": 2,
  "layout_type": "grid",
  "bg_color": {
    "type": "indigo",
    "tint": "050"
  },
  "image": {
    "url": "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1782854760536-582.png"
  },
  "name": {
    "text": "Let's Try Signature Hot Chips",
    "color": {
      "type": "black",
      "tint": "900"
    },
    "font": {
      "size": "300",
      "weight": "semibold"
    }
  },
  "variant": {
    "text": "52 g",
    "color": {
      "type": "grey",
      "tint": "700"
    },
    "font": {
      "size": "200",
      "weight": "medium"
    },
    "number_of_lines": 1
  },
  "normal_price": {
    "text": "₹40",
    "color": {
      "type": "black",
      "tint": "900"
    },
    "font": {
      "size": "200",
      "weight": "semibold"
    }
  },
  "inventory": 3,
  "merchant_type": "express",
  "eta_identifier": "express",
  "stepper_data": {
    "size": "small",
    "state": {
      "title": {
        "text": "enabled"
      }
    }
  },
  "eta_tag": {
    "title": {
      "text": "earliest",
      "font": {
        "size": "050",
        "weight": "bold"
      }
    },
    "image": {
      "url": "http://cdn.grofers.com/assets/eta-icons/15-mins.png"
    }
  },
  "elevation": 0,
  "corner_radius": 8,
  "offer": null,
  "meta": {
    "merchant_id": "31719",
    "product_id": "782236"
  },
  "is_sold_out": false,
  "animation_type": "SCALE_EFFECT",
  "group_id": 2951922,
  "variant_list": null,
  "product_state": "available",
  "merchant_id": "31719",
  "stepper_data_v2": {
    "size": "small",
    "max_count": 3,
    "zero_layout_config": {
      "style": "outline"
    },
    "non_zero_layout_config": {
      "style": "fill"
    },
    "increment_actions": {
      "default": [
        {
          "add_to_cart": {
            "cart_item": {
              "product_id": 782236,
              "merchant_id": 31719,
              "product_name": "Let's Try Signature Hot Chips",
              "quantity": 1,
              "unavailable_quantity": 0,
              "price": 40,
              "mrp": 60,
              "unit": "52 g",
              "inventory": 3,
              "meta": null,
              "image_url": "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1782854760536-582.png",
              "group_id": 2951922,
              "merchant_type": "express",
              "eta_identifier": "express",
              "brand": "Let's Try",
              "display_name": "Let's Try Signature Hot Chips"
            }
          },
          "type": "add_to_cart"
        }
      ],
      "count_map": {
        "0": [
          {
            "recommendation_action": {
              "snippet_id": {
                "id": "recommendation_rail_782236"
              },
              "actions": [
                {
                  "interaction_id": "remove_recommendation_snippet_id",
                  "max_trigger_count": 12,
                  "remove_recommendation": {
                    "snippet_prefix_id_to_remove": "recommendation_rail_",
                    "triggered_by_snippet_id": "782236"
                  },
                  "type": "remove_recommendation"
                },
                {
                  "add_recommendation": {
                    "snippets_to_add": [
                      {
                        "data": {
                          "items": null,
                          "bg_color_hex": "#FFFFFF",
                          "bg_color": {
                            "type": "white",
                            "tint": "900"
                          },
                          "identity": {
                            "id": "recommendation_rail_782236"
                          },
                          "container_layout_config": {
                            "corner_radius": 12,
                            "stroke_color": {
                              "type": "grey",
                              "tint": "200"
                            },
                            "stroke_width": 0.5
                          },
                          "layout_bg_color": "#F4F6FB",
                          "loading_overlay_data": {
                            "api_request_type": "DEFAULT",
                            "screen_type": "COMMON_WIDGETIZED",
                            "loading_error_state": "LOADING",
                            "loading_error_overlay_size_type": "NO_CHANGE",
                            "bg_color_data": {
                              "type": "indigo",
                              "tint": "050"
                            },
                            "shimmer_res_id": "recommendation_rail_shimmer_layout",
                            "corner_radius": 12
                          }
                        },
                        "tracking": {
                          "widget_meta": {
                            "widget_id": "782236",
                            "widget_name": "Recommendation Collections",
                            "widget_title": "People also bought",
                            "widget_tracking_id": ""
                          },
                          "impression_map": {
                            "event_name": "Super Kvi Widget Shown"
                          },
                          "click_map": {
                            "event_name": "Super Kvi Widget Clicked"
                          },
                          "entry_source_map": {
                            "entry_source_id": "782236",
                            "entry_source_name": "Recommendation Collections",
                            "entry_source_title": "People also bought",
                            "entry_source_tracking_id": ""
                          }
                        },
                        "widget_type": "grid_container_vr",
                        "layout_config": {
                          "bg_color": "#FFFFFF",
                          "spacing": "12,12,12,0"
                        }
                      }
                    ],
                    "snippet_id_to_attach": "782236",
                    "conflict_policy": {
                      "match_config": {}
                    },
                    "prefix_id": "recommendation_rail_"
                  },
                  "interaction_id": "add_recommendation_shimmer_id",
                  "max_trigger_count": 12,
                  "type": "add_recommendation"
                },
                {
                  "fetch_api": {
                    "url": "v1/actions/product_recommendations/782236",
                    "type": "POST",
                    "extra_params": {
                      "product_id": "782236",
                      "product_position": 1,
                      "recipe_keyterms": [],
                      "recommendation_type": "DEFAULT",
                      "send_cart_items": true
                    },
                    "failure_actions": [
                      {
                        "remove_recommendation": {
                          "snippet_prefix_id_to_remove": "recommendation_rail_"
                        },
                        "type": "remove_recommendation"
                      }
                    ]
                  },
                  "interaction_id": "fetch_recommendation_snippet_id",
                  "max_trigger_count": 12,
                  "type": "fetch_api"
                }
              ]
            },
            "type": "recommendation_action"
          }
        ]
      }
    },
    "decrement_actions": {
      "default": [
        {
          "remove_from_cart": {
            "cart_item": {
              "product_id": 782236,
              "merchant_id": 31719,
              "product_name": "Let's Try Signature Hot Chips",
              "quantity": 1,
              "unavailable_quantity": 0,
              "price": 40,
              "mrp": 60,
              "unit": "52 g",
              "inventory": 3,
              "meta": null,
              "image_url": "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1782854760536-582.png",
              "group_id": 2951922,
              "merchant_type": "express",
              "eta_identifier": "express",
              "brand": "Let's Try",
              "display_name": "Let's Try Signature Hot Chips"
            },
            "count_type": "default"
          },
          "type": "remove_from_cart"
        }
      ]
    }
  },
  "brand_name": {
    "text": "Let's Try",
    "color": {
      "type": "grey",
      "tint": "600"
    },
    "font": {
      "size": "200",
      "weight": "regular"
    }
  },
  "media_container": {
    "items": [
      {
        "media_type": "image",
        "image": {
          "url": "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1782854760536-582.png",
          "placeholder_color": {
            "type": "white",
            "tint": "900"
          }
        }
      },
      {
        "media_type": "image",
        "image": {
          "url": "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1782854760536-583.png",
          "placeholder_color": {
            "type": "white",
            "tint": "900"
          }
        }
      },
      {
        "media_type": "image",
        "image": {
          "url": "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1777971938464-45.png",
          "placeholder_color": {
            "type": "white",
            "tint": "900"
          }
        }
      },
      {
        "media_type": "image",
        "image": {
          "url": "https://cdn.grofers.com/da/cms-assets/cms/product/rc-upload-1777971938464-46.png",
          "placeholder_color": {
            "type": "white",
            "tint": "900"
          }
        }
      }
    ]
  },
  "rating": null,
  "display_name": {
    "text": "Let's Try Signature Hot Chips",
    "color": {
      "type": "black",
      "tint": "900"
    },
    "font": {
      "size": "300",
      "weight": "semibold"
    }
  },
  "ui_config": {
    "default_rating_visibility": "invisible",
    "default_rating_config": {
      "type": "bar",
      "bar": {
        "size": "medium",
        "title": {
          "text": "Dummy",
          "color": {
            "type": "grey",
            "tint": "800"
          },
          "font": {
            "size": "100",
            "weight": "medium"
          }
        }
      }
    }
  },
  "product_id": "782236",
  "product_badges": [
    {
      "type": "ETA",
      "label": "ETA",
      "text_data": {
        "text": "earliest",
        "color": {
          "type": "black",
          "tint": "900"
        },
        "font": {
          "size": "050",
          "weight": "bold"
        }
      },
      "bg_color_data": {
        "type": "grey",
        "tint": "100"
      },
      "image_data": {
        "url": "http://cdn.grofers.com/assets/eta-icons/15-mins.png"
      },
      "padding": "6,0,6,0"
    }
  ],
  "product_badge_type": "non_overlapping",
  "from_url": "https://blinkit.com/cn/null/cid/1237/940"
}
```

Each scraped product returns 32+ fields covering identity, pricing, inventory, merchant details, and UI rendering data:

#### Product Identity & Display

| Field | Data Type | Meaning |
|---|---|---|
| `Product ID` | String | Unique identifier for the product in Blinkit's system |
| `Name` | String | Product name as displayed to customers |
| `Display Name` | String | Formatted product name for UI rendering |
| `Brand Name` | String | Manufacturer or brand name |
| `Variant` | String | Product variant (e.g., size, flavor, color) |
| `Variant List` | Array | All available variants for this product |
| `Section Count` | Integer | Number of product information sections |

#### Pricing & Offers

| Field | Data Type | Meaning |
|---|---|---|
| `Normal Price` | Float | Regular selling price in local currency (₹) |
| `Offer` | Object | Active promotional details (discount %, sale price, coupon codes) |
| `Meta` | Object | Additional metadata (seller notes, restrictions, origin) |

#### Inventory & Availability

| Field | Data Type | Meaning |
|---|---|---|
| `Inventory` | Integer | Current stock quantity available |
| `Is Sold Out` | Boolean | Whether the product is currently out of stock |
| `Product State` | String | Availability state (e.g., "available", "limited", "unavailable") |
| `ETA Identifier` | String | Estimated delivery time identifier |
| `ETA Tag` | String | Human-readable delivery estimate (e.g., "8–12 mins", "10–15 mins") |
| `Stepper Data` | Object | Order quantity stepper configuration (min, max, increment) |
| `Stepper Data V2` | Object | Updated stepper logic for quantity selection |

#### Merchant Information

| Field | Data Type | Meaning |
|---|---|---|
| `Merchant ID` | String | Unique identifier for the seller/merchant |
| `Merchant Type` | String | Type of seller (e.g., "Official", "Marketplace", "Blinkit Store") |

#### Visual & UI Data

| Field | Data Type | Meaning |
|---|---|---|
| `Image` | String | Product image URL (high resolution) |
| `Media Container` | Object | Collection of product photos (thumbnails, alt views) |
| `Background Color` | String | UI background color (hex code, e.g., `#FFFFFF`) |
| `Layout Type` | String | Card layout style (e.g., "standard", "featured") |
| `Elevation` | Integer | Shadow/depth effect level for UI rendering |
| `Corner Radius` | Integer | Border radius in pixels for card corners |
| `Animation Type` | String | Card animation on load (e.g., "fade", "slide") |
| `UI Config` | Object | Complete UI rendering configuration |

#### Product Quality & Engagement

| Field | Data Type | Meaning |
|---|---|---|
| `Rating` | Float | Customer rating (typically 0.0–5.0 scale) |
| `Product Badges` | Array | Visual badges (e.g., "Bestseller", "Organic", "New") |
| `Product Badge Type` | String | Primary badge category |
| `Group ID` | String | Product grouping identifier (related items) |

***

### How to Use

1. **Find search URLs** — Browse Blinkit.com, navigate to a product category, and copy the URL
2. **Prepare input** — Add URLs to the `urls` array in your configuration
3. **Set limits** — Adjust `max_items_per_url` based on your needs (higher = more data, longer run time)
4. **Enable error handling** — Keep `ignore_url_failures: true` for production runs to avoid interruptions
5. **Execute** — Start the scraper and monitor progress in the run log
6. **Export data** — Download results as JSON, CSV, or import directly into your database

**Best practices:**

- Use specific category URLs for targeted data collection
- Test with `max_items_per_url: 20` first to preview output structure
- Run during off-peak hours to minimize load on Blinkit's servers
- Store `Product ID` as your primary key for deduplication across runs

***

### Use Cases & Business Value

- **Price monitoring:** Track Blinkit product prices and promotional offers over time
- **Competitive analysis:** Compare product availability and pricing across merchants
- **Inventory insights:** Understand stock levels and product popularity by category
- **Data enrichment:** Augment your own product database with Blinkit availability
- **Market research:** Study quick-commerce penetration and category expansion
- **ML/AI training:** Build datasets for price prediction or demand forecasting models

The Blinkit Product Search Scraper delivers the structured data needed to unlock competitive advantages in the high-speed e-commerce landscape.

***

### Conclusion

The **Blinkit Product Search Scraper** transforms dynamic search listings into analysis-ready datasets with 32+ fields per product. Whether you're monitoring competitor offerings, analyzing market trends, or building a price comparison platform, this scraper provides the reliable, scalable data infrastructure you need. Start scraping today and gain actionable insights into India's fastest-growing quick-commerce market.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## `proxy` (type: `object`):

Select proxies to be used by your scraper.

## Actor input object example

```json
{
  "urls": [
    "https://blinkit.com/cn/null/cid/1237/940"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://blinkit.com/cn/null/cid/1237/940"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/blinkit-product-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://blinkit.com/cn/null/cid/1237/940"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/blinkit-product-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://blinkit.com/cn/null/cid/1237/940"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call stealth_mode/blinkit-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/blinkit-product-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/plaCOduGxRmKvi092/builds/ruVUUMHn3hKaqVfIC/openapi.json
