# Flipkart Product Price & Specs Scraper (`nimbryxo-studio/flipkart-product-price-and-specs-scraper`) Actor

Pull Flipkart products by keyword, category URL or exact product link, with current price, original MRP, discount percentage, rating, key specifications and seller name. Filter by price range and minimum rating.

- **URL**: https://apify.com/nimbryxo-studio/flipkart-product-price-and-specs-scraper.md
- **Developed by:** [Nimbryxo-studio](https://apify.com/nimbryxo-studio) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 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/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 Product Price & Specs Scraper

Flipkart is India's largest marketplace, and almost every product page carries the details a price tracker, catalog team or brand analyst needs: the current selling price, the struck-through MRP, the discount, the rating breakdown, the full specification table, the seller behind the listing, the variants and the buyer reviews. This actor turns that public data into clean JSON — from a keyword search, a category page, a list of product links, or bare product IDs. No login, cookies or API key.

### What this actor does

- **Three modes:** keyword search, category/browse URL, and product URLs or IDs.
- **Filters:** price range in INR, minimum rating, brand, minimum discount and Flipkart Assured.
- **Full detail enrichment:** specifications, highlights, description, warranty, manufacturer/importer details, gallery, variants, offers and seller scores.
- **Optional reviews:** rating, title, text, author, date, certified-buyer flag, location, helpful votes, photos and the variant reviewed.
- **Pagination with de-duplication:** walks search/category pages up to your `maxItems`, skips repeated sponsored cards.
- **Empty fields are omitted** — only populated fields appear in output records.

### Output per product

- `productId` — Flipkart product ID (`pid`)
- `itemId` — Flipkart internal item ID, when the listing card provides it
- `listingId` — listing (seller offer) ID
- `title`, `subtitle` — product name and variant line
- `url` — product URL
- `brand`, `color`
- `price` — current selling price in INR
- `originalPrice` — MRP when it is higher than the selling price
- `discountPercent`, `discountAmount`
- `bestOfferPrice` — effective price after a bank/exchange offer, when Flipkart shows one
- `specialPrice` — true when Flipkart flags a special/best price
- `currency` — `INR`
- `rating`, `ratingCount`, `reviewCount`
- `ratingHistogram` — counts for 1 to 5 stars
- `aspectRatings` — ratings for battery, design, performance and similar aspects
- `keySpecs` — short spec bullets from the product card or highlights
- `imageUrl`, `images[]` — main image and full gallery
- `availability`, `inStock`
- `isFlipkartAssured`
- `offers[]` — bank, exchange and coupon offers with type, title, subtitle and discount text
- `offerCount`
- `seller` — seller name
- `sellerId`, `sellerRating`, `sellerTenure`, `sellerProductsSold`, `sellerQualityScore`, `sellerSpeedScore`, `sellerAbout`, `sellerProductQuality`, `sellerServiceQuality`
- `specifications` — grouped specification table (for example `General`, `Display and Audio Features`, `Dimensions`)
- `highlights[]`, `description`, `warranty`
- `manufacturerInfo` — country of origin, manufacturer, importer, packer and generic name when published
- `variants[]` — colour and size options with label, product ID, URL, image, stock state and selected flag
- `breadcrumb[]`, `category`, `subCategory`, `superCategory`, `vertical`
- `questionCount`, `answerCount`
- `codAvailable`, `returnPolicy`, `noCostEmi`
- `sourceUrl` — product URL for product/ID runs and the search/category page URL for listing runs
- `sourceQuery`, `searchRank` — search/category runs only
- `recordType: "product"`, `scrapedAt`

### Output per review

Review records appear when **Include Reviews** is on (`recordType: "review"`):

- `productId`, `reviewId`
- `rating`, `title`, `text`
- `author`, `created`, `certifiedBuyer`
- `location` — city and state
- `helpfulCount`, `upvotes`, `downvotes`
- `totalCount` — combined upvotes and downvotes as Flipkart reports them (not a review total)
- `images[]` — photos attached to the review
- `productAttributes[]` — the variant the reviewer bought (colour, size, storage, etc.)
- `reviewUrl`, `reviewPageUrl`
- `recordType: "review"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `byCategory` / `byUrl` |
| `searchQuery` | string | – | Keyword search query (mode=search) |
| `categoryUrl` | string | – | Flipkart category or browse URL (mode=byCategory) |
| `startUrls` | array | `[]` | Product URLs (mode=byUrl) |
| `productIds` | array | `[]` | Product IDs or product URLs (mode=byUrl) |
| `sortBy` | string | `relevance` | `relevance`, `popularity`, `price_asc`, `price_desc`, `recency_desc` |
| `minPrice` | integer | – | Minimum price in INR |
| `maxPrice` | integer | – | Maximum price in INR |
| `minRating` | number | – | Minimum rating (1.0–5.0) |
| `brand` | string | – | Only this brand, e.g. `Samsung` |
| `minDiscount` | string | `"0"` | Minimum discount: `"0"`, `"10"`, `"20"`, `"30"`, `"40"`, `"50"` |
| `fAssuredOnly` | boolean | `false` | Only Flipkart Assured products |
| `includeDetails` | boolean | `true` | Open each product page for specs, variants, offers, seller, gallery and warranty |
| `includeReviews` | boolean | `false` | Add buyer review records |
| `maxReviewsPerProduct` | integer | `20` | Review cap per product (0–200) |
| `reviewsSort` | string | `MOST_HELPFUL` | `MOST_HELPFUL`, `MOST_RECENT`, `POSITIVE_FIRST`, `NEGATIVE_FIRST` |
| `certifiedBuyersOnly` | boolean | `false` | Only certified-buyer reviews |
| `maxItems` | integer | `50` | Maximum products to return (1–500) |
| `maxPages` | integer | `30` | Maximum search/category pages to read (1–30) |

#### Example: laptops under ₹60,000

```json
{
  "mode": "search",
  "searchQuery": "laptop",
  "maxPrice": 60000,
  "minRating": 4.0,
  "sortBy": "price_asc",
  "includeDetails": true,
  "maxItems": 50
}
```

#### Example: browse a category

```json
{
  "mode": "byCategory",
  "categoryUrl": "https://www.flipkart.com/laptops/pr?sid=6bo%2Cb5g",
  "sortBy": "popularity",
  "minDiscount": "20",
  "maxItems": 100
}
```

#### Example: product URLs and IDs

```json
{
  "mode": "byUrl",
  "startUrls": [
    {"url": "https://www.flipkart.com/asus-expertbook-laptop/p/itm0af4b?pid=COMH8Z2Q"},
    {"url": "https://www.flipkart.com/samsung-galaxy-s24/p/itm123?pid=SMSG123"}
  ],
  "productIds": ["MOBHPP598ENKRGBY"],
  "includeReviews": true,
  "maxReviewsPerProduct": 20
}
```

#### Example: top-rated smartphones with reviews

```json
{
  "mode": "search",
  "searchQuery": "smartphone",
  "maxPrice": 30000,
  "minRating": 4.2,
  "brand": "Samsung",
  "fAssuredOnly": true,
  "includeDetails": true,
  "includeReviews": true,
  "maxReviewsPerProduct": 10,
  "reviewsSort": "MOST_RECENT",
  "certifiedBuyersOnly": true,
  "maxItems": 30
}
```

### Use cases

- **Price and discount tracking** — re-run the same search or product list on a schedule and compare `price`, `originalPrice` and `discountPercent` per `productId`.
- **Catalog and PIM enrichment** — pull grouped specifications, highlights, description, warranty and manufacturer details for a product line.
- **Variant monitoring** — see every colour and size with its own product ID, URL, image and stock state.
- **Seller research** — compare seller ratings, tenure, products sold, quality and speed scores across listings.
- **Review and sentiment analysis** — collect certified-buyer reviews with ratings, text, location, votes, photos and the purchased variant.
- **Assortment and brand benchmarking** — filter a category by brand, price, rating, discount and Flipkart Assured.

### FAQ

**What data can I get without a product URL?**
Keyword search and category URLs return the full listing cards: price, MRP, discount, rating, counts, key specs, image, availability and Flipkart Assured. Turn on **Include Full Product Details** to add specs, variants, offers, seller, gallery and warranty.

**Does this actor require a Flipkart account, cookies or an API key?**
No. It reads public product pages and needs no login or key.

**Do I need to set up a proxy?**
No. The actor chooses a working connection to Flipkart automatically. Just fill in the input and run it.

**Can I use bare product IDs instead of full URLs?**
Yes. Paste the product ID (the `pid` from a Flipkart URL) into `productIds` with `mode` set to `byUrl`. The actor opens the product page and returns the full record.

**How many products can I get per run?**
Set `maxItems` up to 500 and `maxPages` up to 30. Flipkart shows 24–40 cards per page and stops serving results after a few dozen pages; for very broad searches, split by category, brand or price band.

**Why are some products missing variants or highlights?**
Not every product has variants, highlights, a description or a warranty. Those fields are omitted when Flipkart does not show them; they are never filled with guessed values. Placeholder values such as `NA`, `N/A` or `None` are also omitted.

**What happens if a product page cannot be opened?**
The listing record is still returned with the data from the results page, and the run status reports how many product pages could not be enriched after retries. Nothing is filled with guessed values.

**Why does a category run sometimes return fewer products than expected?**
Flipkart can mix recommendation or sponsored cards from unrelated departments into a category page. Those cards are filtered out so a category run only returns products from the requested category. If none match, the run reports that honestly instead of returning unrelated items.

**Why is `originalPrice` missing on some products?**
When the selling price equals the MRP, there is no discount to report, so `originalPrice`, `discountPercent` and `discountAmount` are omitted.

**What is the difference between `ratingCount` and `reviewCount`?**
`ratingCount` is the number of star ratings. `reviewCount` is the number of written reviews. Both come from Flipkart.

**Do reviews include the variant the reviewer bought?**
Yes, when Flipkart publishes it. The `productAttributes` array shows the colour, size, storage or other variant attributes attached to the review.

**Are prices in a specific currency?**
All prices are in Indian Rupees (INR), as shown on flipkart.com.

**Is this actor affiliated with Flipkart?**
No. This is an independent third-party tool that reads publicly visible product data. It is not affiliated with, endorsed by, or connected to Flipkart.

# Actor input Schema

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

How to find products on Flipkart.

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

Keyword(s) to search on Flipkart. (mode=search)

## `categoryUrl` (type: `string`):

Full Flipkart category or browse URL, e.g. https://www.flipkart.com/laptops/pr?sid=6bo%2Cb5g (mode=byCategory)

## `startUrls` (type: `array`):

Flipkart product URLs. (mode=byUrl)

## `productIds` (type: `array`):

Flipkart product IDs (the pid from a URL) or product URLs. (mode=byUrl)

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

Sort order for search/category results.

## `minPrice` (type: `integer`):

Minimum price filter in Indian Rupees.

## `maxPrice` (type: `integer`):

Maximum price filter in Indian Rupees.

## `minRating` (type: `number`):

Minimum product rating (1.0-5.0).

## `brand` (type: `string`):

Only products from this brand, e.g. Samsung. Use the exact brand name shown on Flipkart.

## `minDiscount` (type: `string`):

Only products with at least this discount percentage.

## `fAssuredOnly` (type: `boolean`):

Only products marked Flipkart Assured.

## `includeDetails` (type: `boolean`):

Open each product page for specifications, variants, offers, seller, images and warranty. Product URLs and IDs always return full details.

## `includeReviews` (type: `boolean`):

Add buyer review records for each product.

## `maxReviewsPerProduct` (type: `integer`):

Maximum reviews to collect per product when reviews are enabled.

## `reviewsSort` (type: `string`):

Order of buyer reviews.

## `certifiedBuyersOnly` (type: `boolean`):

Only reviews marked as certified buyer.

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

Maximum number of products to scrape (1-500).

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

Maximum search/category result pages to read (1-30).

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "laptop",
  "startUrls": [],
  "productIds": [],
  "sortBy": "relevance",
  "minDiscount": "0",
  "fAssuredOnly": false,
  "includeDetails": true,
  "includeReviews": false,
  "maxReviewsPerProduct": 20,
  "reviewsSort": "MOST_HELPFUL",
  "certifiedBuyersOnly": false,
  "maxItems": 3,
  "maxPages": 1
}
```

# Actor output Schema

## `products` (type: `string`):

Dataset containing product records (recordType=product) and, when Include Reviews is on, review records (recordType=review).

# 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 = {
    "mode": "search",
    "searchQuery": "laptop",
    "startUrls": [],
    "productIds": [],
    "sortBy": "relevance",
    "minDiscount": "0",
    "fAssuredOnly": false,
    "includeDetails": false,
    "includeReviews": false,
    "maxReviewsPerProduct": 0,
    "reviewsSort": "MOST_HELPFUL",
    "certifiedBuyersOnly": false,
    "maxItems": 3,
    "maxPages": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("nimbryxo-studio/flipkart-product-price-and-specs-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 = {
    "mode": "search",
    "searchQuery": "laptop",
    "startUrls": [],
    "productIds": [],
    "sortBy": "relevance",
    "minDiscount": "0",
    "fAssuredOnly": False,
    "includeDetails": False,
    "includeReviews": False,
    "maxReviewsPerProduct": 0,
    "reviewsSort": "MOST_HELPFUL",
    "certifiedBuyersOnly": False,
    "maxItems": 3,
    "maxPages": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("nimbryxo-studio/flipkart-product-price-and-specs-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 '{
  "mode": "search",
  "searchQuery": "laptop",
  "startUrls": [],
  "productIds": [],
  "sortBy": "relevance",
  "minDiscount": "0",
  "fAssuredOnly": false,
  "includeDetails": false,
  "includeReviews": false,
  "maxReviewsPerProduct": 0,
  "reviewsSort": "MOST_HELPFUL",
  "certifiedBuyersOnly": false,
  "maxItems": 3,
  "maxPages": 1
}' |
apify call nimbryxo-studio/flipkart-product-price-and-specs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nimbryxo-studio/flipkart-product-price-and-specs-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/9p3FJj8wF0x0ck0lx/builds/gjSnDGaHdVZmVZwuO/openapi.json
