# Flipkart Scraper - Prices, Ratings & Offers from Search (`rjmacarthy/flipkart-scraper`) Actor

Scrape Flipkart search and category results: price, MRP, discount, rating, review counts, F-Assured, sponsored flag, offers and key specs. Optional product details (seller, specs, variants, delivery). Price-change and new-product monitoring. No login.

- **URL**: https://apify.com/rjmacarthy/flipkart-scraper.md
- **Developed by:** [rj](https://apify.com/rjmacarthy) (community)
- **Categories:** E-commerce, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 product scrapeds

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 Scraper - Product Prices, Ratings & Offers from Flipkart Search

**Flipkart Scraper** collects public product data from Flipkart India search results, category pages and product pages. For each product you get the **selling price and MRP in rupees, discount**, star rating, rating and review counts, the **1-5 star breakdown**, the **F-Assured** badge, the **sponsored** flag, stock status, key specs from the result card (RAM, storage, processor...), offer tags such as "Bank Offer" or "Upto ₹220 Off on Exchange", the category and the product's rank. Turn on **Fetch product details** to add the seller's business name, the full specifications table, highlights, colour and storage variants, the image gallery, delivery estimate, warranty and return policy. Schedule it with **Track price changes** and each run outputs only the products whose price changed (or that are new), with the old price, the new price and the difference.

Why this one? You can mix several search queries with any Flipkart search, category or product URL in one run, filters such as brand, RAM or size included. Prices, MRP and discounts come as clean numbers. Sponsored placements and F-Assured listings are flagged, and the price-change monitor is built in. There is **no start fee**: you pay $0.0015 per product, and product details cost $0.002 more, which is cheaper than the other Flipkart detail scrapers. No login, no browser, no cookies.

### What data can you get?

| Field | Example | Notes |
|---|---|---|
| `id` / `productId`, `itemId`, `listingId` | MOBHDVFKAWDVHJTU, itmc60e0c4fb63b7 | Flipkart's product id (pid), item id (shared by variants) and listing id |
| `title`, `brand`, `subtitle`, `url`, `imageUrl` | Samsung Galaxy S24 5G Snapdragon (Marble Gray, 256 GB) | |
| `price`, `mrp`, `discountPercent`, `discountAmount`, `currency` | 55999, 79999, 30, 24000, INR | Numbers in Indian rupees |
| `rating`, `ratingCount`, `reviewCount`, `ratingBreakdown` | 4.6, 57454, 4583, {"5": 42736, ...} | Star breakdown from 5 to 1 |
| `isAssured`, `isSponsored` | true, false | Flipkart Assured badge; paid placement |
| `availability`, `inStock` | IN_STOCK, true | Also OUT_OF_STOCK, NO_AVAILABLE_LISTING... |
| `keySpecs` | \["8 GB RAM | 256 GB ROM", "4000 mAh Battery"] | Spec lines on the result card (mobiles, laptops, TVs...) |
| `offerTags` | \["Bank Offer", "Only 3 left"] | Offer and deal snippets on the card |
| `warrantySummary`, `categoryPath`, `vertical` | "Mobiles & Accessories > Mobiles" | |
| `position`, `page`, `searchQuery`, `sourceUrl` | 1, 1, "samsung galaxy s24" | Where the product ranked |
| `changeType`, `previousPrice`, `priceChange` | price-drop, 1299, -300 | **Track price changes** mode |
| `sellerName`, `sellerRating` | MYTHANGLORYRetail, 4.5 | With **Fetch product details**. Business name only |
| `specifications`, `highlights` | {"RAM": "8 GB", "Battery Capacity": "4000 mAh", ...} | Full specs table |
| `variants` | \[{group: "Variant", label: "256 GB + 8 GB", productId, url, price, selected}] | Colour, storage and size options |
| `images`, `deliveryInfo`, `warranty`, `returnPolicy`, `cashOnDelivery`, `aspectRatings` | "by 10 Nov, Tue", {"Camera": 4.6, "Battery": 3.8} | |
| `detailsStatus`, `scrapedAt` | ok | Whether product details were read (see Tips) |

Every item has the same keys. Missing values are `null` (or `[]`). Download the results as JSON, CSV, Excel or HTML, or read them through the API.

### Use cases

- **Price monitoring and repricing:** schedule your category or your competitors' products with **Track price changes** and get only the price drops and increases.
- **Brand monitoring:** see where your brand ranks for key searches, who is sponsored, who has F-Assured and what discounts competitors run.
- **Product and market research:** compare prices, MRPs, discounts, ratings and specs across a whole category, e.g. every 5G phone under ₹30,000.
- **Assortment and catalogue building:** collect titles, specs, images and variants for product feeds.
- **Deal tracking:** sort by discount and catch the best offers in a category.

### How to use it

1. Click **Try for free** or **Start**.
2. Type one or more **Search queries**, or paste **Flipkart URLs** (search, category or product pages).
3. Set **Max products** (default 100) and **Max pages per query/URL** (default 5; 24-40 products per page).
4. Optional: **Sort by**, **Min/Max price**, **Fetch product details**, **Track price changes**.
5. Click **Start**.

#### Example: Samsung 5G phones under ₹30,000, most expensive first

```json
{
    "searchQueries": ["samsung 5g mobile"],
    "maxPrice": 30000,
    "sort": "price_desc",
    "maxItems": 20
}
```

#### Example: best-selling laptops from a category page, with filters from the URL

Open a Flipkart category, apply filters on the website (brand, processor, RAM...) and paste the URL.

```json
{
    "startUrls": [{ "url": "https://www.flipkart.com/laptops/pr?sid=6bo,b5g" }],
    "sort": "popularity",
    "maxItems": 20
}
```

#### Example: daily price-drop monitor for boAt earbuds

Schedule this daily. The first run outputs the top 30 results as the baseline; later runs output only those whose price changed and any new ones that entered the top 30.

```json
{
    "searchQueries": ["boat airdopes"],
    "trackPriceChanges": true,
    "stateKey": "boat-airdopes",
    "maxItems": 30
}
```

#### Example: full details for specific products

Product URLs always come with full details.

```json
{
    "startUrls": [{ "url": "https://www.flipkart.com/apple-iphone-15-black-128-gb/p/itm6ac6485515ae4?pid=MOBGTAGPTB3VS24W" }]
}
```

### Output example

A real item with **Fetch product details** on. Long lists are shortened here.

```json
{
  "id": "MOBHDVFKAWDVHJTU",
  "productId": "MOBHDVFKAWDVHJTU",
  "itemId": "itmc60e0c4fb63b7",
  "listingId": "LSTMOBHDVFKAWDVHJTUK7PT9L",
  "title": "Samsung Galaxy S24 5G Snapdragon (Marble Gray, 256 GB)",
  "brand": "Samsung",
  "subtitle": "8 GB RAM",
  "url": "https://www.flipkart.com/samsung-galaxy-s24-5g-snapdragon-marble-gray-256-gb/p/itmc60e0c4fb63b7?pid=MOBHDVFKAWDVHJTU",
  "imageUrl": "https://rukmini1.flixcart.com/image/832/832/xif0q/mobile/i/b/d/-resized-original-imahfz2tuqdczpfg.jpeg?q=70",
  "price": 55999,
  "mrp": 79999,
  "discountPercent": 30,
  "discountAmount": 24000,
  "currency": "INR",
  "rating": 4.6,
  "ratingCount": 57454,
  "reviewCount": 4583,
  "ratingBreakdown": { "1": 2202, "2": 689, "3": 1766, "4": 10061, "5": 42736 },
  "isAssured": true,
  "isSponsored": false,
  "availability": "IN_STOCK",
  "inStock": true,
  "keySpecs": ["8 GB RAM | 256 GB ROM", "15.75 cm (6.2 inch) Full HD+ Display", "50MP + 12MP | 12MP Front Camera", "4000 mAh Battery", "8 Gen 3 Processor"],
  "offerTags": ["Saver Deal", "Only 3 left"],
  "warrantySummary": "1 Year Manufacturer Warranty for Device and 6 Months for In-Box Accessories",
  "categoryPath": "Mobiles & Accessories > Mobiles > Samsung Mobiles",
  "vertical": "mobile",
  "position": 1,
  "page": 1,
  "searchQuery": "samsung galaxy s24",
  "sourceUrl": "https://www.flipkart.com/search?q=samsung+galaxy+s24",
  "changeType": null,
  "previousPrice": null,
  "priceChange": null,
  "detailsStatus": "ok",
  "sellerName": "MYTHANGLORYRetail",
  "sellerRating": 4.5,
  "specifications": { "Battery Capacity": "4000 mAh", "Battery Type": "Lithium ion", "Width": "70.6 mm (7.06 cm)", "...": "..." },
  "highlights": ["8 GB RAM | 256 GB ROM", "8 Gen 3 | Octa Core Processor | 3.39 GHz Clock Speed", "50MP + 12MP Rear Camera"],
  "variants": [
    { "group": "Color", "label": "Marble Gray", "productId": "MOBHDVFKAWDVHJTU", "url": "https://www.flipkart.com/samsung-galaxy-s24-5g-snapdragon-marble-gray-256-gb/p/itmc60e0c4fb63b7?pid=MOBHDVFKAWDVHJTU", "price": null, "selected": true }
  ],
  "images": ["https://rukminim1.flixcart.com/image/832/832/xif0q/mobile/i/b/d/-resized-original-imahfz2tuqdczpfg.jpeg?q=70"],
  "deliveryInfo": "by 10 Nov, Tue",
  "warranty": "1 Year Manufacturer Warranty for Device and 6 Months for In-Box Accessories",
  "returnPolicy": "7 day replacement service centre action",
  "cashOnDelivery": true,
  "aspectRatings": { "Camera": 4.6, "Battery": 3.8, "Display": 4.7, "Design": 4.7, "Performance": 4.6, "Build Quality": 4.6, "Value for Money": 4.4 },
  "scrapedAt": "2026-11-07T12:32:03.465Z"
}
```

### How much does it cost?

This Actor uses **pay per event** pricing, with no start fee. You pay only for the products you get:

| Event | Price | When |
|---|---|---|
| `product` | **$0.0015** per product ($1.50 per 1,000) | Every product from search or category pages saved to the dataset |
| `product-details` | **$0.002** per product ($2 per 1,000) | Added when **Fetch product details** reads the product page, or for each product URL you give |

Worked examples:

- **1,000 products from search** ≈ **$1.50**.
- **1,000 products with full details** ≈ $1.50 + $2.00 = **$3.50**.
- **The prefill** (15 wireless earbuds) ≈ **$0.02**.
- **A daily price monitor** watching the top 100 results of a search, with about 15 price changes or new products a day, outputs about 450 products a month ≈ **$0.70 a month**.

These are never charged: unchanged products in **Track price changes** mode, products already output in **Only new products** mode, duplicates (Flipkart often lists the same product as an ad and again as an organic result), products outside your price range, and product details that could not be loaded (`detailsStatus` other than `ok`). Set **Maximum cost per run** in the run options and the Actor stops cleanly when it reaches it.

### Tips and limits

- **24-40 products per page.** Mobiles, laptops and TVs use a list layout (24 per page, with `keySpecs` and `warrantySummary`); fashion, audio and most other categories use a grid (40 per page, `keySpecs` usually empty).
- **Fashion and footwear cards have no ratings.** Flipkart doesn't put the rating or stock status on those search cards, so `rating`, `ratingCount`, `ratingBreakdown` and `inStock` are `null` there. Turn on **Fetch product details** to get them from the product page.
- **Product details are slow.** Flipkart rate-limits product data more than search pages, so details are read one at a time, about 3-6 seconds per product (100 products take 5-10 minutes). If Flipkart keeps refusing even after a 60-second pause, the Actor stops asking for details, outputs the remaining products with search data only (`detailsStatus: "blocked"` or `"skipped-blocked"`), doesn't charge details for them, and says so in the run summary.
- **Seller** is the business name Flipkart shows as the seller ("Fulfilled by..."), not a person.
- **Delivery estimate** is what Flipkart shows without a pincode, so it is a general estimate rather than one for your address.
- **Price filter.** Min/Max price is sent as Flipkart's own price filter and then re-checked on every product, because Flipkart sometimes includes products outside the range (often sponsored ones).
- **Prices change often.** Flipkart prices can move several times a day (sales, seller changes on the buy box). **Track price changes** reports every change it sees between runs.
- **What "Max products" means in monitor mode.** With **Track price changes** or **Only new products**, Max products is the number of top results checked per run, so every run watches the same products. Without monitor mode it is the number of products output.
- **Prices are what a logged-out visitor sees** before bank offers, coupons or exchange discounts.
- **Not included:** individual reviews and reviewer names, Q\&A, seller contact data or any other personal data.

### FAQ

**Is it legal to scrape Flipkart?**
This Actor collects only publicly visible product data that anyone can see on Flipkart without logging in. It does not log in, it doesn't solve captchas or get around blocks, it doesn't read the pages Flipkart's robots.txt excludes (reviews, cart, account pages), and it doesn't collect personal data such as reviewer names. You are responsible for how you use the data: follow Flipkart's terms, India's DPDP Act, the GDPR and other laws that apply to you. If in doubt, ask a lawyer.

**Do I need a Flipkart account or cookies?**
No. The Actor visits Flipkart like a logged-out shopper.

**Which URLs can I paste?**
Search URLs (`https://www.flipkart.com/search?q=...`), category URLs (`https://www.flipkart.com/mobiles/pr?sid=tyy,4io`, with any filters you applied on the site) and product URLs (`https://www.flipkart.com/.../p/itm...?pid=...`). Review pages, the cart and the home page are not supported.

**What happens if Flipkart rate-limits the run?**
Flipkart answers with a "Wow, looks like all of India is here!" page (HTTP 429) when an IP sends too many requests. The Actor recognises it, waits and retries with backoff, and with a proxy configured it retries once more on a new IP. If a search stays blocked, the Actor keeps what it already scraped, says so in the log, the status message and `RUN_SUMMARY`, and goes on to the next input. The run fails only if nothing at all could be scraped.

**Do I need a proxy? Can I use residential proxies?**
Usually no proxy is needed. If a run reports rate limiting, enable **Proxy configuration** with Apify Proxy's automatic (datacenter) proxies. Residential proxies are not supported: if you select the RESIDENTIAL group, the Actor logs a warning and uses Apify datacenter proxy instead. Your own proxy URLs are used as given.

**How does Track price changes work?**
The Actor remembers each product's id and last price in a key-value store (`flipkart-scraper-state`) under your **Monitor name**. A product is output when it is new to the monitor or its price differs from the stored one. `changeType` is `new`, `price-drop` or `price-increase`, with `previousPrice` and `priceChange`. Unchanged products are skipped and not charged. Products not seen for 90 days are forgotten. Use a different **Monitor name** for each schedule.

**I got fewer products than expected.**
Check `RUN_SUMMARY` in the key-value store. For each input it shows how many results Flipkart reported, how many products were listed, and how many were skipped as duplicates, out of the price range or unchanged, plus any rate limiting.

### Integrations

- **Apify API:** start runs and download datasets from any language ([API docs](https://docs.apify.com/api/v2)), or use the JavaScript and Python clients.
- **Make, Zapier, n8n:** run the Actor on a schedule and send price drops to Google Sheets, Airtable, Slack or e-mail.
- **Webhooks:** trigger your own endpoint when a run finishes.
- **MCP / AI agents:** call the Actor from Claude, ChatGPT or any MCP client through the Apify MCP server, e.g. "find the cheapest 5G Samsung phones on Flipkart".

### Changelog

- **0.1 (November 2026):** First release. Search queries, search/category/product URLs, sort and price filter; price, MRP, discount, ratings with star breakdown, F-Assured, sponsored, offer tags and key specs; optional product details (seller, specs, highlights, variants, images, delivery, warranty); Track price changes and Only new products monitors.

### Ready-to-run examples

- [Find Samsung 5G phones under ₹30,000 on Flipkart](https://apify.com/rjmacarthy/flipkart-scraper/examples/samsung-5g-phones-under-30000-flipkart)

### More scrapers by the same developer

- [AliExpress Scraper - Product Search, Prices, Ratings & Details](https://apify.com/rjmacarthy/aliexpress-scraper)
- [AutoScout24 Scraper - Used Car Listings & Prices (Europe)](https://apify.com/rjmacarthy/autoscout24-scraper)
- [Kleinanzeigen Scraper - Germany Classifieds Listings & Prices](https://apify.com/rjmacarthy/kleinanzeigen-scraper)
- [Property Finder Scraper - UAE Real Estate Listings (Dubai)](https://apify.com/rjmacarthy/propertyfinder-scraper)
- [Vinted Scraper: Listings, Prices & New-Item Monitor](https://apify.com/rjmacarthy/vinted-scraper)
- [Apple App Store Scraper: Apps, Search & Reviews](https://apify.com/rjmacarthy/app-store-scraper)

Browse all my Actors on [my Apify Store profile](https://apify.com/rjmacarthy).

### Support

Found a search or category that doesn't work, or need an extra field? Open an issue on the **Issues** tab with your input. Fixes are usually quick.

# Actor input Schema

## `searchQueries` (type: `array`):

One Flipkart search per line, as typed into the Flipkart search box (e.g. "wireless earbuds", "samsung galaxy s24", "running shoes for men").

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

Optional. Any Flipkart search URL (https://www.flipkart.com/search?q=...), category URL (https://www.flipkart.com/mobiles/pr?sid=tyy,4io, filters included) or product URL (https://www.flipkart.com/.../p/itm...?pid=...). Product URLs always get full product details (charged as product-details).

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

Maximum number of products to output in total for the whole run (0 = no limit). In monitor mode (track price changes / only new) it is the number of top results CHECKED per run instead, so each run watches the same products.

## `maxPagesPerQuery` (type: `integer`):

How many result pages to read per search query or listing URL (24-40 products per page). 0 = until the results end.

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

Order of results (Flipkart's own sort options). For URLs that already contain a sort, "Relevance" keeps it.

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

Only products priced at or above this, in rupees. Applied as Flipkart's price filter and re-checked on every product.

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

Only products priced at or below this, in rupees.

## `fetchDetails` (type: `boolean`):

Also read each product's page: seller name, full specifications, highlights, variants (colour/storage), image gallery, delivery estimate, warranty, return policy and aspect ratings. Slower (Flipkart rate-limits product pages) and charged as an extra product-details event per product that succeeds.

## `trackPriceChanges` (type: `boolean`):

Monitoring mode for scheduled runs: output only products that are new or whose price changed since the previous run of this monitor (changeType, previousPrice, priceChange). The first run outputs everything as the baseline. Unchanged products are skipped and not charged.

## `onlyNew` (type: `boolean`):

Output only products this monitor has not output before (ignores price changes). The first run outputs everything as the baseline.

## `stateKey` (type: `string`):

Name of this monitor's memory. Use a different name for each independent schedule/task so they don't share the list of seen products and prices.

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

Usually not needed for search pages. If Flipkart rate-limits the run (HTTP 429, the run summary says so) enable Apify Proxy with automatic (datacenter) proxies: the Actor then retries once on a new IP. Residential proxies are not supported: if you select the RESIDENTIAL group, the Actor uses Apify datacenter proxy instead.

## Actor input object example

```json
{
  "searchQueries": [
    "wireless earbuds"
  ],
  "maxItems": 15,
  "maxPagesPerQuery": 5,
  "sort": "relevance",
  "fetchDetails": false,
  "trackPriceChanges": false,
  "onlyNew": false,
  "stateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Price, MRP, discount, rating, F-Assured, sponsored flag and URL.

## `priceChanges` (type: `string`):

Monitor runs: new products and price changes.

## `productsFull` (type: `string`):

Every field, including product details.

## `summary` (type: `string`):

Per-input status, counts, request statistics and any rate-limit warnings.

# 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 = {
    "searchQueries": [
        "wireless earbuds"
    ],
    "maxItems": 15,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rjmacarthy/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 = {
    "searchQueries": ["wireless earbuds"],
    "maxItems": 15,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("rjmacarthy/flipkart-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 '{
  "searchQueries": [
    "wireless earbuds"
  ],
  "maxItems": 15,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call rjmacarthy/flipkart-scraper --silent --output-dataset

```

## MCP server setup

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