# Flipkart Scraper - Scrape Flipkart Products & Prices (`techforce.global/flipkart-scraper`) Actor

Flipkart scraper: search any keyword & extract product name, price, MRP, discount, ratings, reviews & images. Export to JSON/CSV/Excel.

- **URL**: https://apify.com/techforce.global/flipkart-scraper.md
- **Developed by:** [Techforce Global](https://apify.com/techforce.global) (community)
- **Categories:** Agents, E-commerce, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Flipkart Search Scraper & MCP Connector

Scrape **any Flipkart search — exactly like typing in the search bar** — and get clean, structured product data: title, current price, MRP, discount %, rating, ratings & reviews count, F-Assured badge, image, and product URL. **No login, no cookies, no paid proxies required.**

Built for price-monitoring teams, e-commerce analysts, and sellers who need an accurate product list for a keyword in seconds — not an afternoon of copy-pasting from Flipkart.

> **Type a search term → optionally pick a category → get a structured product feed → deliver it straight into Notion, Slack, Jira, or your own tools.**

---

### ⭐ Why This Actor?

- ✅ **Just enter a search query** — no LinkedIn-style logins, no session tokens, no manual browsing
- ✅ **Search bar parity** — whatever you'd type into Flipkart's search box works here (`wireless earbuds`, `nike running shoes`, `samsung 5g phone`)
- ✅ **Optional category filter** — narrow to Mobiles, Laptops, Electronics, Fashion, Home, Beauty, Books & more, or search everything
- ✅ **Sort like the site** — relevance, popularity, price low→high / high→low, or newest first
- ✅ **Detailed output** — price, MRP, computed discount %, star rating, ratings & reviews counts, F-Assured flag, image, and canonical product URL
- ✅ **JavaScript-ready & anti-bot resilient** — drives a real headless Chromium browser (Playwright), so it reads Flipkart's dynamically-rendered results reliably
- ✅ **Auto-pagination** — set how many products you want and it walks the result pages for you
- ✅ **Deliver anywhere via MCP connectors** — push products straight into Notion, Slack, Jira, GitHub, Linear, Airtable, and more
- ✅ **Export-ready** — JSON, CSV, Excel, or direct API integration for your BI tool, sheet, or CRM

---

### 📝 Use Cases & ROI

| Use Case                       | Time Saved        | What You Get                                                        |
| ------------------------------ | ----------------- | ------------------------------------------------------------------- |
| **Price & discount monitoring**| 2–5 hrs/week      | A repeatable price/MRP/discount feed for any keyword or category    |
| **Competitor benchmarking**    | 3–6 hrs/analysis  | How rival products rank, cost, and rate for a search term           |
| **Catalog & assortment building** | 4–8 hrs/batch  | Hundreds of products for a keyword, ready to import                 |
| **Deal & offer tracking**      | 2–4 hrs/week      | Top discounts and F-Assured listings, sorted and filtered           |
| **Market & demand research**   | 2–5 hrs/study     | Ratings volume & review counts as a proxy for product demand        |

---

### 🚀 How to Use

1. Open the Actor on Apify (or run it locally with the Apify CLI)
2. Enter the **Search query** you want — the text you'd type into Flipkart's search bar (e.g. `wireless earbuds`)
3. _(Optional)_ Pick a **Category** to narrow results, or leave it as **Any**
4. Set **Maximum products** — how many to collect (the Actor paginates automatically)
5. _(Optional)_ Choose a **Sort** order and adjust **Max concurrency**
6. _(Optional)_ Pick an **MCP connector** to deliver the products into Notion, Slack, Jira, etc.
7. Click **Run** — results are ready in minutes
8. Download as CSV, Excel, or JSON — or let the connector push the products into your tools automatically

> 🎯 **Category filter**: well-known categories (Mobiles, Laptops, Home & Furniture, Books) use Flipkart's internal store IDs for precise scoping; the rest refine the query by keyword. Leave it on **Any** for the widest, most robust search.
>
> 🌐 **No proxy needed**: the headless browser reads public search-results pages directly. On the Apify platform you can optionally enable Apify Proxy in the run options for extra resilience — it is not required.
>
> 🐢 **Getting blocked or empty results?** Lower **Max concurrency** to `1`, or set **Run browser headless** to `false` locally to watch what Flipkart returns.
>
> 💡 First time with a connector? Run once with a connector selected — the run log prints the connector's available tool names, so you know what to put in **Connector tool name**.

---

### 🧩 Input Configuration

| Field           | Type    | Required | Description                                                                                          |
| --------------- | ------- | -------- | -------------------------------------------------------------------------------------------------- |
| `searchQuery`   | String  | ✔️ Yes   | The text you'd type into the Flipkart search bar (e.g. `wireless earbuds`).                          |
| `category`      | Enum    | Optional | Narrow the search to a top-level category, or `Any` to search everything. Default: `Any`.            |
| `maxProducts`   | Integer | Optional | Maximum number of products to collect (1–2000). The Actor paginates until reached. Default: `50`.    |
| `sortBy`        | Enum    | Optional | `relevance`, `popularity`, `price_asc`, `price_desc`, `recency_desc`. Default: `relevance`.          |
| `maxConcurrency`| Integer | Optional | Search-result pages processed in parallel (keep 1–3 to stay gentle on Flipkart). Default: `2`.       |
| `headless`      | Boolean | Optional | Run the browser without a visible window. Keep `true` on the platform. Default: `true`.              |
| `mcpConnector`  | Connector | Optional | An MCP connector to deliver results into (Notion, Slack, Linear, Airtable, Jira, GitHub…). Leave empty to save to the dataset only. See **🔗 Deliver to Your Tools** below. |
| `deliveryMode`  | Enum    | Optional | `perProduct` (one call per product), `summary` (one call with the whole list), or `none`. Default: `perProduct`. |
| `mcpTool`       | String  | Optional | Name of the tool to call on the connector (e.g. `create_page`, `send_message`, `create_issue`, `appendRow`). |
| `mcpArguments`  | Object  | Optional | JSON arguments passed to the tool. String values support `{placeholders}` (see table below).         |
| `mcpMessageTemplate` | String | Optional | Optional template rendered and exposed as the `{message}` placeholder inside `mcpArguments`.     |

**Category options:** `Any` · `Mobiles` · `Laptops` · `Electronics` · `TVs & Appliances` · `Men's Fashion` · `Women's Fashion` · `Home & Furniture` · `Beauty & Grooming` · `Sports & Fitness` · `Books` · `Toys & Baby` · `Grocery` · `Automotive`

#### Example — Just search Flipkart

```json
{
    "searchQuery": "wireless earbuds",
    "maxProducts": 50
}
````

#### Example — Search within a category, cheapest first

```json
{
    "searchQuery": "gaming laptop",
    "category": "Laptops",
    "sortBy": "price_asc",
    "maxProducts": 100
}
```

#### Example — Track the most popular deals in a category

```json
{
    "searchQuery": "running shoes",
    "category": "Men's Fashion",
    "sortBy": "popularity",
    "maxProducts": 200,
    "maxConcurrency": 2
}
```

***

### 📦 Output Fields

Each product is stored as one dataset item:

| Field             | Description                                                       |
| ----------------- | ----------------------------------------------------------------- |
| `productId`       | Flipkart listing id (from the tile's `data-id`)                   |
| `title`           | Product name                                                      |
| `url`             | Absolute link to the product page                                 |
| `image`           | Product thumbnail URL                                             |
| `currentPrice`    | Current selling price (INR)                                       |
| `originalPrice`   | Struck-through MRP (INR), when shown                              |
| `discountPercent` | Discount vs MRP, computed automatically                          |
| `currency`        | Always `INR`                                                      |
| `rating`          | Average star rating (0–5)                                         |
| `numRatings`      | Number of ratings                                                 |
| `numReviews`      | Number of reviews                                                 |
| `fAssured`        | Whether the listing shows the Flipkart Assured badge             |
| `seller`          | Seller name if present on the card (best-effort — see note)      |

#### Example Output

```json
[
    {
        "productId": "ACCGH8ZZABCDEFGH",
        "title": "boAt Airdopes 141 with 42H Playtime, Bluetooth 5.1",
        "url": "https://www.flipkart.com/boat-airdopes-141/p/itm...",
        "image": "https://rukminim2.flixcart.com/image/300/300/...jpeg",
        "currentPrice": 1299,
        "originalPrice": 4490,
        "discountPercent": 71,
        "currency": "INR",
        "rating": 4.3,
        "numRatings": 458210,
        "numReviews": 32567,
        "fAssured": true,
        "seller": null
    }
]
```

> You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
>
> ℹ️ **Note on `seller`:** Flipkart shows the seller name on the product detail page, not on search cards, so this field is usually `null` in search output. Prices, discounts, ratings, reviews, and F-Assured are read directly from the results. Need guaranteed seller names, specs, and offers? See **Custom Pipeline** below.

***

### 🔗 Deliver to Your Tools (MCP Connectors)

Beyond the dataset, this Actor can push every scraped product **straight into your own tools** through an **MCP connector** — Notion, Slack, Linear, Airtable, Jira, GitHub, Google Sheets, or any MCP-compatible server you've authorized on Apify. No glue code, no separate Zap.

**How it works**

1. In the input, pick a connector under **Deliver to (MCP connector)** — Apify injects your authorized credentials at runtime; the Actor never sees them.
2. Choose a **Delivery mode**:
   - **`perProduct`** — one tool call per product (e.g. one Notion page or one Slack line per item)
   - **`summary`** — a single call containing the whole product list
   - **`none`** — save to the dataset only
3. Set the **Connector tool name** (`mcpTool`) — the tool to invoke on the connector.
4. Fill in **Connector tool arguments** (`mcpArguments`) — a JSON object whose string values support `{placeholders}`.
5. *(Optional)* Write a **Message template** (`mcpMessageTemplate`), exposed as `{message}` inside your arguments.

> The dataset is **always** saved regardless of connector settings — delivery problems never discard scraped data.

#### Available placeholders

**`perProduct` mode** — per-product values plus shared search context:

| Placeholder | Meaning |
| ----------- | ------- |
| `{productId}` | Flipkart listing id |
| `{title}` | Product name |
| `{url}` | Product page link |
| `{image}` | Thumbnail URL |
| `{currentPrice}` | Current selling price |
| `{originalPrice}` | Struck-through MRP |
| `{discountPercent}` | Discount vs MRP |
| `{currency}` | Always `INR` |
| `{rating}` | Star rating (0–5) |
| `{numRatings}` | Number of ratings |
| `{numReviews}` | Number of reviews |
| `{seller}` | Seller name (usually empty on search cards) |
| `{fAssured}` | Flipkart Assured flag |
| `{searchQuery}` | The search query used |
| `{category}` | The category filter used |
| `{count}` | Total products scraped |
| `{message}` | The rendered **Message template** |

**`summary` mode** — `{searchQuery}`, `{category}`, `{count}`, `{message}`, and `{products}` (a markdown list of every product).

#### Example — one Slack message per product

```json
{
    "searchQuery": "wireless earbuds",
    "maxProducts": 20,
    "mcpConnector": "<your-slack-connector>",
    "deliveryMode": "perProduct",
    "mcpTool": "send_message",
    "mcpMessageTemplate": "*{title}* — ₹{currentPrice} ({discountPercent}% off) | ⭐ {rating}\n{url}",
    "mcpArguments": { "channel": "#deals", "text": "{message}" }
}
```

#### Example — one summary message with the full list

```json
{
    "searchQuery": "gaming laptop",
    "category": "Laptops",
    "maxProducts": 25,
    "mcpConnector": "<your-slack-connector>",
    "deliveryMode": "summary",
    "mcpTool": "send_message",
    "mcpMessageTemplate": "Top {count} results for *{searchQuery}*:\n\n{products}",
    "mcpArguments": { "channel": "#research", "text": "{message}" }
}
```

#### Example — one Notion page per product

```json
{
    "searchQuery": "air fryer",
    "maxProducts": 30,
    "mcpConnector": "<your-notion-connector>",
    "deliveryMode": "perProduct",
    "mcpTool": "create_page",
    "mcpArguments": {
        "parent": { "database_id": "<your-database-id>" },
        "properties": {
            "Name": { "title": [{ "text": { "content": "{title}" } }] },
            "Price": { "number": "{currentPrice}" },
            "Rating": { "number": "{rating}" },
            "URL": { "url": "{url}" }
        }
    }
}
```

> 💡 Not sure of the tool name or its argument shape? Run once with a connector selected — the log lists the connector's available tools. Then set `mcpTool` and shape `mcpArguments` to match.

***

### 🔌 Integrations & Delivery

Because it runs on Apify, the product feed drops straight into your stack — no glue code:

- **Apify API** — pull the dataset as JSON/CSV/Excel on demand
- **Google Sheets / Airtable** — append rows automatically
- **Zapier, Make & n8n** — trigger downstream workflows on each run
- **Webhooks** — notify your service the moment a run finishes
- **MCP connectors** — push products directly into Notion, Slack, Linear, Jira, GitHub & more (see **🔗 Deliver to Your Tools** above)
- **Scheduling** — run daily/weekly to build a price-history time series

Consume it however your BI, pricing, or merchandising tools prefer.

***

### 💰 Cost Estimation — How much does it cost to scrape Flipkart?

The Actor uses a headless browser, so cost scales with the number of **search-result pages** loaded (~24 products per page). Scraping a few hundred products typically costs a small fraction of an Apify compute unit. To keep runs cheap:

- Set a realistic `maxProducts` — don't over-fetch
- Keep `maxConcurrency` at `2`–`3`
- Add a `category` and/or `sortBy` so the most relevant results come first

***

### ⚡ Tips & Advanced Options

- **Category accuracy:** category mappings live in `my_actor/main.py` (`CATEGORY_FILTERS`). Well-known categories use Flipkart store IDs (`sid`); others append a keyword. If Flipkart changes a store ID, edit that dictionary.

- **Resilient parsing:** Flipkart rotates its CSS class names, so the parser anchors on the stable `data-id` product tile and uses attribute/structural/regex fallbacks — it keeps working through cosmetic markup changes.

- **Run locally:**

  ```bash
  pip install -r requirements.txt
  playwright install chromium
  apify run --purge
  ```

- **Deploy to Apify:**

  ```bash
  apify login
  apify push
  ```

***

### 🆘 Support

For issues, custom scraping requests, or feature suggestions:

**Email**: bhavin.shah@techforceglobal.com

Found a field that stopped populating? Flipkart likely changed its markup — open the **Issues** tab so it can be updated quickly.

***

#### Need a Custom Pipeline?

Want per-product deep enrichment (seller, full specs, bank offers, delivery & stock), multi-keyword batch runs, or a price-history database with alerts?

#### [📅 Book a Free 15-min Consultation](https://calendly.com/techforce-infotech-pvt-ltd/intro-meeting?month=2026-01)

***

Made with ❤️ by **[Techforce](https://www.techforceglobal.com)**
Specialists in High-Performance Web Scrapers and AI Automation.

***

### Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Flipkart. Flipkart® and Flipkart Assured® are trademarks of their respective owners; all trademarks are property of their respective owners. The Actor collects only publicly available information from Flipkart's public search-results pages and does not log into, or scrape behind the authentication of, any account. Use the data responsibly and in compliance with applicable laws (including GDPR/CCPA where relevant) and Flipkart's Terms of Service.

# Actor input Schema

## `searchQuery` (type: `string`):

The text you would type into the Flipkart search bar (e.g. 'wireless earbuds', 'nike shoes', 'samsung galaxy').

## `category` (type: `string`):

Optionally narrow the search to a Flipkart top-level category. Leave as 'Any' to search across all categories.

## `maxProducts` (type: `integer`):

Maximum number of products to scrape. The scraper paginates through the search results until it reaches this number.

## `sortBy` (type: `string`):

How Flipkart should sort the search results before scraping.

## `maxConcurrency` (type: `integer`):

How many search-result pages to process in parallel. Keep low (1-3) to stay gentle on Flipkart and avoid blocks.

## `headless` (type: `boolean`):

Run the browser without a visible window. Keep enabled on the Apify platform. Disable only for local debugging.

## `mcpConnector` (type: `string`):

Optionally deliver the scraped products into a connector you have authorized — Notion, Slack, Linear, Airtable, Jira, GitHub, or any MCP-compatible connector. Leave empty to only save the results to the dataset.

## `deliveryMode` (type: `string`):

How to deliver to the connector: 'perProduct' (one call per product — e.g. one Notion page or Slack message each), 'summary' (a single call containing the whole product list), or 'none' (save to dataset only).

## `mcpTool` (type: `string`):

Name of the tool to call on the connector (e.g. 'create\_page' for Notion, 'send\_message' for Slack, 'create\_issue' for Jira/GitHub, 'appendRow' for Sheets). If unsure, run once with a connector selected — the log lists the connector's available tools.

## `mcpArguments` (type: `object`):

Arguments passed to the connector tool. String values support {placeholders}. In 'perProduct' mode: {productId}, {title}, {url}, {image}, {currentPrice}, {originalPrice}, {discountPercent}, {currency}, {rating}, {numRatings}, {numReviews}, {seller}, {fAssured}, {searchQuery}, {category}, {count}, and {message} (the rendered template below). In 'summary' mode: {searchQuery}, {category}, {count}, {products} (a markdown list of every product) and {message}. Example for Slack: {"channel": "#deals", "text": "{message}"}.

## `mcpMessageTemplate` (type: `string`):

Optional template rendered and exposed as the {message} placeholder in the tool arguments. Per-product example: '*{title}* — ₹{currentPrice} ({discountPercent}% off) | ⭐ {rating}\n{url}'. Summary example: 'Top {count} results for {searchQuery}:\n\n{products}'.

## Actor input object example

```json
{
  "searchQuery": "wireless earbuds",
  "category": "Any",
  "maxProducts": 50,
  "sortBy": "relevance",
  "maxConcurrency": 2,
  "headless": true,
  "deliveryMode": "perProduct",
  "mcpTool": "",
  "mcpArguments": {},
  "mcpMessageTemplate": ""
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "searchQuery": "wireless earbuds"
};

// Run the Actor and wait for it to finish
const run = await client.actor("techforce.global/flipkart-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 = { "searchQuery": "wireless earbuds" }

# Run the Actor and wait for it to finish
run = client.actor("techforce.global/flipkart-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 '{
  "searchQuery": "wireless earbuds"
}' |
apify call techforce.global/flipkart-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Flipkart Scraper - Scrape Flipkart Products & Prices",
        "description": "Flipkart scraper: search any keyword & extract product name, price, MRP, discount, ratings, reviews & images. Export to JSON/CSV/Excel.",
        "version": "1.0",
        "x-build-id": "gfgmUPHekIiGHb2Ye"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/techforce.global~flipkart-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-techforce.global-flipkart-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/techforce.global~flipkart-scraper/runs": {
            "post": {
                "operationId": "runs-sync-techforce.global-flipkart-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/techforce.global~flipkart-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-techforce.global-flipkart-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchQuery"
                ],
                "properties": {
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "The text you would type into the Flipkart search bar (e.g. 'wireless earbuds', 'nike shoes', 'samsung galaxy')."
                    },
                    "category": {
                        "title": "Category (optional filter)",
                        "enum": [
                            "Any",
                            "Mobiles",
                            "Laptops",
                            "Electronics",
                            "TVs & Appliances",
                            "Men's Fashion",
                            "Women's Fashion",
                            "Home & Furniture",
                            "Beauty & Grooming",
                            "Sports & Fitness",
                            "Books",
                            "Toys & Baby",
                            "Grocery",
                            "Automotive"
                        ],
                        "type": "string",
                        "description": "Optionally narrow the search to a Flipkart top-level category. Leave as 'Any' to search across all categories.",
                        "default": "Any"
                    },
                    "maxProducts": {
                        "title": "Maximum products",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Maximum number of products to scrape. The scraper paginates through the search results until it reaches this number.",
                        "default": 50
                    },
                    "sortBy": {
                        "title": "Sort results by",
                        "enum": [
                            "relevance",
                            "popularity",
                            "price_asc",
                            "price_desc",
                            "recency_desc"
                        ],
                        "type": "string",
                        "description": "How Flipkart should sort the search results before scraping.",
                        "default": "relevance"
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many search-result pages to process in parallel. Keep low (1-3) to stay gentle on Flipkart and avoid blocks.",
                        "default": 2
                    },
                    "headless": {
                        "title": "Run browser headless",
                        "type": "boolean",
                        "description": "Run the browser without a visible window. Keep enabled on the Apify platform. Disable only for local debugging.",
                        "default": true
                    },
                    "mcpConnector": {
                        "title": "Deliver to (MCP connector)",
                        "type": "string",
                        "description": "Optionally deliver the scraped products into a connector you have authorized — Notion, Slack, Linear, Airtable, Jira, GitHub, or any MCP-compatible connector. Leave empty to only save the results to the dataset."
                    },
                    "deliveryMode": {
                        "title": "Delivery mode",
                        "enum": [
                            "perProduct",
                            "summary",
                            "none"
                        ],
                        "type": "string",
                        "description": "How to deliver to the connector: 'perProduct' (one call per product — e.g. one Notion page or Slack message each), 'summary' (a single call containing the whole product list), or 'none' (save to dataset only).",
                        "default": "perProduct"
                    },
                    "mcpTool": {
                        "title": "Connector tool name",
                        "type": "string",
                        "description": "Name of the tool to call on the connector (e.g. 'create_page' for Notion, 'send_message' for Slack, 'create_issue' for Jira/GitHub, 'appendRow' for Sheets). If unsure, run once with a connector selected — the log lists the connector's available tools.",
                        "default": ""
                    },
                    "mcpArguments": {
                        "title": "Connector tool arguments",
                        "type": "object",
                        "description": "Arguments passed to the connector tool. String values support {placeholders}. In 'perProduct' mode: {productId}, {title}, {url}, {image}, {currentPrice}, {originalPrice}, {discountPercent}, {currency}, {rating}, {numRatings}, {numReviews}, {seller}, {fAssured}, {searchQuery}, {category}, {count}, and {message} (the rendered template below). In 'summary' mode: {searchQuery}, {category}, {count}, {products} (a markdown list of every product) and {message}. Example for Slack: {\"channel\": \"#deals\", \"text\": \"{message}\"}.",
                        "default": {}
                    },
                    "mcpMessageTemplate": {
                        "title": "Message template",
                        "type": "string",
                        "description": "Optional template rendered and exposed as the {message} placeholder in the tool arguments. Per-product example: '*{title}* — ₹{currentPrice} ({discountPercent}% off) | ⭐ {rating}\\n{url}'. Summary example: 'Top {count} results for {searchQuery}:\\n\\n{products}'.",
                        "default": ""
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
