# Flipkart Reviews Scraper (`piotrv1001/flipkart-reviews-scraper`) Actor

Extract Flipkart product reviews with ratings, text, photos, verified-purchase flags and variant details. Collect newest feedback or sort by rating and helpfulness for sentiment analysis, product research and review monitoring.

- **URL**: https://apify.com/piotrv1001/flipkart-reviews-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Flipkart Reviews Scraper

Collect customer reviews from Flipkart product URLs for sentiment analysis, product research and review monitoring. Get ratings, review text, customer photos, verified-purchase flags and variant details in a structured dataset.

### Features

- **Newest feedback first:** collect recent reviews or sort by helpfulness, lowest rating or highest rating.
- **Detailed reviews:** titles, text, ratings, authors, locations where available, helpful votes and verified purchases.
- **Photos and variants:** image URLs and the product variant associated with each review.
- **Product and topic URLs:** use ordinary product links, review-page links, or a review topic link such as Camera.
- **Incremental monitoring:** optionally stop at review IDs you collected previously.
- **Clear run summaries:** distinguish review limits, exhausted pages, zero-review products and incomplete retrieval.

### How it works

1. Add one or more Flipkart product or review URLs.
2. Choose the maximum number of reviews and the review order.
3. Run the Actor and export the dataset as JSON, CSV or Excel.

URLs are processed in input order. The review limit applies to the **whole run**, so the first product can fill the limit. For equal coverage per product, run one product per task. Duplicate reviews are returned only once per run, including reviews shared across variants or topic pages.

### Input

```json
{
  "productUrls": [
    "https://www.flipkart.com/apple-iphone-16-black-128-gb/p/itmb07d67f995271?pid=MOBH4DQFG8NKFRDY"
  ],
  "maxItems": 50,
  "sort": "MOST_RECENT",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "IN"
  }
}
```

| Field                | Default                   | Description                                                                                 |
| -------------------- | ------------------------- | ------------------------------------------------------------------------------------------- |
| `productUrls`        | Example product prefilled | Product or product-review URLs, up to 1,000. Short links and search URLs are not supported. |
| `maxItems`           | `50`                      | Maximum unique reviews across the entire run; 1–100,000.                                    |
| `sort`               | `MOST_RECENT`             | `MOST_RECENT`, `MOST_HELPFUL`, `NEGATIVE_FIRST` or `POSITIVE_FIRST`.                        |
| `stopAtReviewIds`    | `[]`                      | Optional known review IDs. Stop each product when one is reached; requires `MOST_RECENT`.   |
| `proxyConfiguration` | India residential         | Standard Apify proxy settings. India residential proxies are recommended.                   |

The Actor starts at page one regardless of the page number in your URL. A topic selected in a review URL is preserved. A selected sort applies to all URLs.

For scheduled monitoring, retain recent review IDs from the preceding run and pass them in `stopAtReviewIds`. The matching review and older records after it are excluded. Review order can change, so this is a stopping convenience rather than a guarantee that every newly added review will be discovered.

### Sample output

Illustrative record; optional fields may be null or empty:

```json
{
  "reviewId": "713cef68-ab50-4410-8ce3-d61fc80f8915",
  "reviewUrl": "https://www.flipkart.com/reviews/MOBH4DQF28XAYM2S:171?reviewId=713cef68-ab50-4410-8ce3-d61fc80f8915",
  "inputProductUrl": "https://www.flipkart.com/apple-iphone-16-black-128-gb/p/itmb07d67f995271?pid=MOBH4DQFG8NKFRDY",
  "requestedProductId": "MOBH4DQFG8NKFRDY",
  "productId": "MOBH4DQFG8NKFRDY",
  "reviewedProductId": "MOBH4DQF28XAYM2S",
  "rating": 5,
  "title": "Excellent",
  "text": "Example customer feedback.",
  "author": "Example buyer",
  "dateText": "5 months ago",
  "verifiedPurchase": true,
  "location": { "city": "Delhi", "state": "Delhi" },
  "upvotes": 1824,
  "downvotes": 449,
  "helpfulCount": 1824,
  "variantAttributes": [
    { "name": "Color", "value": "Pink" },
    { "name": "Storage", "value": "256 GB" }
  ],
  "images": [],
  "aspectId": null,
  "sort": "MOST_RECENT",
  "sourcePage": 1,
  "scrapedAt": "2026-09-17T12:00:00.000Z"
}
```

`images` contains direct image URLs when a review includes photos. `requestedProductId` can be null when your URL has no PID. `productId` identifies the review page; `reviewedProductId` identifies the reviewed variant and may differ. Flipkart often groups reviews across colors, capacities and other variants.

Dates retain the source wording, such as “Today”, “5 months ago” or a month and year. Exact dates are not invented for these labels. `scrapedAt` is the collection time.

### Run summary and coverage

The **Run summary** output links to `RUN-SUMMARY` in the key-value store. It contains product rating summaries and a stopping status per URL:

| Status                     | Meaning                                                                                              |
| -------------------------- | ---------------------------------------------------------------------------------------------------- |
| `max_items_reached`        | The run's review limit was reached.                                                                  |
| `budget_reached`           | The run's charging budget was reached.                                                               |
| `known_review_reached`     | A supplied review ID was found.                                                                      |
| `zero_reviews`             | The product page reports zero reviews.                                                               |
| `end_of_available_reviews` | Repeated empty-page checks indicate the available stream ended.                                      |
| `partial`                  | Saved reviews are available, but a gap, repeated page or retrieval limit prevented further progress. |
| `failed`                   | The product could not be read, including invalid or unavailable product pages.                       |
| `not_started`              | An earlier product used the run's review or charging limit.                                          |

Temporary empty pages are retried. The Actor does not promise to retrieve every review shown in a product's total: counts and available pages can differ or change during a run. A partial or failed product marks the run as failed so scheduled workflows can detect the problem; already saved reviews remain available. There is a safety limit of 1,000 pages per product/topic and a bounded number of requests.

### Pricing

**$2.50 per 1,000 reviews** — $0.0025 for each successfully saved, unique review.

| Event             | Price per result | Price per 1,000 |
| ----------------- | ---------------- | --------------- |
| Review (`review`) | $0.0025          | $2.50           |

Duplicate reviews, empty pages, failed requests and product summaries do not trigger review charges. Fifty reviews cost $0.125 in review event charges. Set `maxItems` and the run's maximum charge to control spending.

### Use cases

- Track product feedback and recurring complaints.
- Compare sentiment across competing products and variants.
- Collect verified-purchase feedback for research.
- Feed review text into dashboards, spreadsheets and sentiment analysis workflows.

### Related Actors

- [Flipkart Listings Scraper](https://apify.com/piotrv1001/flipkart-listings-scraper) — Discover products by keyword or category, then pass their product URLs to the other Actors.
- [Flipkart Product Details Scraper](https://apify.com/piotrv1001/flipkart-product-details-scraper) — Extract prices, offers, variants, sellers and specifications from product URLs or IDs.

# Actor input Schema

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

Flipkart product or product-review URLs. Topic review URLs are also supported. URLs are processed in order.

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

Maximum number of unique reviews across all URLs in this run.

## `sort` (type: `string`):

Choose which reviews to collect first.

## `stopAtReviewIds` (type: `array`):

Optional: stop each product when an already collected review ID is reached. Requires newest-first order. The matching review is not returned.

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

India residential proxies are recommended for reliable access.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.flipkart.com/apple-iphone-16-black-128-gb/p/itmb07d67f995271?pid=MOBH4DQFG8NKFRDY"
  ],
  "maxItems": 50,
  "sort": "MOST_RECENT",
  "stopAtReviewIds": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

No description

## `summary` (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 = {
    "productUrls": [
        "https://www.flipkart.com/apple-iphone-16-black-128-gb/p/itmb07d67f995271?pid=MOBH4DQFG8NKFRDY"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/flipkart-reviews-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 = { "productUrls": ["https://www.flipkart.com/apple-iphone-16-black-128-gb/p/itmb07d67f995271?pid=MOBH4DQFG8NKFRDY"] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/flipkart-reviews-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 '{
  "productUrls": [
    "https://www.flipkart.com/apple-iphone-16-black-128-gb/p/itmb07d67f995271?pid=MOBH4DQFG8NKFRDY"
  ]
}' |
apify call piotrv1001/flipkart-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/flipkart-reviews-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/3wyG2gwBdE8S7uUXj/builds/FpijBg8GXbHstI20y/openapi.json
