# Flipkart Seller Scraper (`w3crawler/flipkart-seller-scraper`) Actor

Scrape rich, current Flipkart seller-offer snapshots from public All Sellers pages, including seller ratings, prices, savings, delivery, policies, EMI, assurance, and categorized offers.

- **URL**: https://apify.com/w3crawler/flipkart-seller-scraper.md
- **Developed by:** [w3crawler](https://apify.com/w3crawler) (community)
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 seller offers

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Flipkart Seller Scraper do?

Flipkart Seller Scraper collects **public seller-offer snapshots** from [Flipkart](https://www.flipkart.com/) All Sellers comparison pages. It is a public-page **Flipkart API alternative** for seller names, ratings, prices, delivery, policies, offers, optional product detail, and bounded media/link evidence. It does not access private seller accounts, private APIs, authenticated sessions, or protected data.

The Actor uses visible browser DOM evidence. If Flipkart shows CAPTCHA, login, paywall, geofence, rate-limit, device, WAF, or another access barrier, the Actor stops and writes an exact four-field diagnostic record: `url`, `error`, `errorCode`, and `scrapedAt`.

Generated by: OpenAI Codex with GPT-5.6

### Why use Flipkart Seller Scraper?

Use the results for public price comparison, seller monitoring, catalog research, offer analysis, and delivery-policy checks. The Actor supports product URLs, direct sellers-page URLs, public search queries, and public search URLs. It includes bounded retries, pacing, concurrency controls, optional filters, and optional detail, media, and rating collection.

Apify provides scheduling, API access, dataset exports, integrations, monitoring, and runtime proxy configuration. Proxy settings are honored only in an Apify runtime that supports them; they are not used to bypass a visible access barrier.

### What data can Flipkart Seller Scraper extract?

| Field | Type | Description |
|---|---|---|
| `sellerName` | string | Public seller name. |
| `sellerRating` | number | Visible seller rating. |
| `productName` | string | Public product name. |
| `priceAmount` / `price` | number / string | Numeric and display seller price. |
| `originalPrice` / `discount` | string | Public MRP and discount display. |
| `returnPolicy` | string | Public return or replacement policy. |
| `deliveryTime` | string | Public delivery estimate. |
| `allOffers` | string\[] | Bounded visible offer text. |
| `productImages` / `productLinks` | object\[] | Optional public media and links. |
| `error`, `errorCode` | string | Exact fail-closed diagnostic fields when data is blocked or unavailable. |

The dataset schema contains the complete emitted business-field contract, including public inventory, fulfillment, badges, ratings/reviews, location/contact details only when disclosed, source metadata, timestamps, and bounded raw public objects. Run outcomes and transport metadata are stored in `OUTPUT_SUMMARY`.

### How to scrape Flipkart seller offers

1. Open the **Input** tab and choose `productUrl`, `sellersPageUrl`, `searchQuery`, or `searchUrl` mode.
2. Supply HTTPS Flipkart URLs, a query, or an array of queries.
3. Set `maxPages`, `maxItems`, concurrency, pacing, retries, timeouts, and optional filters.
4. Choose whether to include product detail, public media/links, and visible ratings.
5. Click **Start** and inspect the dataset or diagnostic rows.

For programmatic workflows, use the **API** tab or the dataset API link in the Output tab. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### How much does it cost to scrape Flipkart?

This Actor uses browser compute units, so cost depends on the number of public pages, browser concurrency, optional product-detail pages, retries, and pacing. Start with one URL, `maxPages: 1`, and a small `maxItems` value. Larger runs can use scheduling and higher concurrency within Flipkart’s limits. The Actor does not promise a fixed number of results when the public site presents an access barrier.

### Input

See the input tab for full configuration options. Important fields include `productUrls`, `sellersPageUrls`, `query`, `queries`, `searchUrls`, `maxPages`, `maxItems`, `maxConcurrency`, `minDelayMs`, `maxDelayMs`, `maxRetries`, `navigationTimeoutSecs`, `selectorTimeoutSecs`, `postNavigationWaitMs`, `includeDetail`, `includeMedia`, `includeRatings`, `filters`, `pincode`, and `proxyConfiguration`.

`filters` supports minimum seller/product ratings, minimum discount, Flipkart Assured requirement, and case-insensitive exact seller names. A missing public value does not pass a filter that requires it.

#### Example input

```
{
  "mode": "productUrl",
  "productUrls": [
    "https://www.flipkart.com/example-product/p/itm00000000000000"
  ],
  "maxItems": 20,
  "includeDetail": true,
  "includeRatings": true
}
```

### Output

Seller rows contain public seller-offer business fields. Blocked, empty, failed, or filtered tasks remain visible as exact diagnostics instead of being represented as successful seller data.

```json
{
  "recordType": "Flipkart seller offer",
  "sellerName": "Example Seller",
  "sellerRating": 4.2,
  "productName": "Example wireless headset",
  "price": "₹1,999",
  "deliveryTime": "3 days"
}
```

```json
{
  "url": "https://www.flipkart.com/sellers?pid=EXAMPLEPID123",
  "error": "A public-page access barrier was observed.",
  "errorCode": "ACCESS_BARRIER",
  "scrapedAt": "2026-09-08T00:00:00.000Z"
}
```

### Key-value store

The Actor writes `OUTPUT_SUMMARY` to the default key-value store with status, mode, seller-row and diagnostic counts, provenance, transport, browser context, and completion time. `OUTPUT` is a compatibility alias. Dataset rows remain seller-offer business records or exact diagnostics.

### Tips and advanced options

Use `includeDetail: false` and `includeMedia: false` when seller-only output is sufficient. The browser uses a consistent Chromium profile (`en-IN`, `Asia/Kolkata`, 1365×768), keeps cookies across product-to-seller navigation within one attempt, and rotates the browser/proxy session only between retries. Retries use exponential backoff with jitter. Increase `minDelayMs` and keep `maxConcurrency` low when the site is busy. Access barriers are fail-closed and are never bypassed.

For bounded local validation, run the direct test input and inspect the generated dataset:

```bash
apify run --purge --input-file ../qa-inputs/flipkart-seller-scraper/local-validation.json
npm run validate
```

After confirming the exact owned remote Actor mapping, deploy and run the cloud input with a bounded timeout and memory allocation:

```bash
apify push --wait-for-finish 600 --json
apify call --input-file ../qa-inputs/flipkart-seller-scraper/cloud-validation.json --memory 1024 --timeout 300 --json
```

Always inspect the cloud dataset itself. A terminal run status alone does not prove that public seller records were extracted.

### FAQ, disclaimers, and support

#### Does this Actor scrape private seller data?

No. It only reports what the public Flipkart surface discloses. Seller location or contact fields remain empty unless the public seller surface explicitly shows them.

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

Respect Flipkart’s terms, robots guidance, applicable laws, and rate limits. For feedback or a public-page change, use the Issues tab. Use the API tab for programmatic access.

# Changelog

This Actor's version history is a separate document: https://apify.com/w3crawler/flipkart-seller-scraper/changelog.md

# Actor input Schema

## `mode` (type: `string`):

Select public product pages, sellers pages, or Flipkart search pages to discover seller offers.

## `productUrls` (type: `array`):

HTTPS Flipkart product page URLs. Product pages are used only to resolve public seller pages and optional detail evidence.

## `sellersPageUrls` (type: `array`):

Direct public Flipkart seller-comparison URLs containing a pid query parameter.

## `query` (type: `string`):

One public Flipkart search query. Use searchQuery mode; multiple queries can be supplied in queries.

## `queries` (type: `array`):

Public Flipkart search queries. Each query is opened through the visible /search page and limited by maxPages.

## `searchUrls` (type: `array`):

HTTPS Flipkart /search URLs to paginate through in searchUrl mode.

## `maxPages` (type: `integer`):

Number of public search pages per query or search URL.

## `startPage` (type: `integer`):

First public search result page number.

## `maxItems` (type: `integer`):

Maximum number of seller offer records after filters. Diagnostic records are retained separately when a public page is blocked or empty.

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

Maximum number of independent public browser tasks running at once.

## `minDelayMs` (type: `integer`):

Minimum pacing delay before each public navigation.

## `maxDelayMs` (type: `integer`):

Maximum pacing delay before each public navigation.

## `maxRetries` (type: `integer`):

Additional attempts for navigation or extraction errors. Access barriers are never retried or bypassed.

## `navigationTimeoutSecs` (type: `integer`):

Maximum time allowed for each public page navigation.

## `selectorTimeoutSecs` (type: `integer`):

Maximum wait for visible seller DOM selectors.

## `postNavigationWaitMs` (type: `integer`):

Bounded wait after DOM content loads for public seller rows to render.

## `includeDetail` (type: `boolean`):

Load the public product page when available to collect product name, brand, category, description, inventory, and fulfillment evidence.

## `includeMedia` (type: `boolean`):

Include bounded public product image and page-link arrays observed in the DOM.

## `includeRatings` (type: `boolean`):

Extract visible product and seller rating/review counts when the public page discloses them.

## `filters` (type: `object`):

Optional post-extraction filters. Missing public values do not pass a filter that requires them.

## `pincode` (type: `integer`):

Six-digit Indian pincode recorded as the delivery comparison context; the Actor does not submit it to private or authenticated flows.

## `proxyConfiguration` (type: `object`):

Optional Apify proxy settings. The Actor uses them only when running in an Apify runtime that honors Actor proxy configuration; it never uses proxy settings to bypass access barriers.

## Actor input object example

```json
{
  "mode": "productUrl",
  "maxPages": 1,
  "startPage": 1,
  "maxItems": 100,
  "maxConcurrency": 1,
  "minDelayMs": 500,
  "maxDelayMs": 1500,
  "maxRetries": 2,
  "navigationTimeoutSecs": 60,
  "selectorTimeoutSecs": 8,
  "postNavigationWaitMs": 800,
  "includeDetail": true,
  "includeMedia": true,
  "includeRatings": true,
  "pincode": 110001,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing seller offer records and public-page diagnostics.

## `runSummary` (type: `string`):

Canonical seller/diagnostic counts and browser provenance from OUTPUT\_SUMMARY.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("w3crawler/flipkart-seller-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("w3crawler/flipkart-seller-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call w3crawler/flipkart-seller-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,w3crawler/flipkart-seller-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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