Piotr VassevPiotr Vassev

How to Scrape Flipkart Product Details, Offers, and Variants

A Flipkart search result can tell you that a laptop costs ₹38,981. It cannot tell you whether that price is for 128 GB or 512 GB storage, which bank condition produces the lower offer price, how much stock remains, or whether the seller has an established record.

The Flipkart Product Details Scraper takes product URLs or 16-character product IDs and returns the selected offer, every variant with its own price and stock, seller scores, delivery, specifications, warranty, ratings, and top reviews. I maintain the Actor. The examples here use its deployed build and a successful run from September 15, 2026.

Flipkart product data scraping

Choose details when the listing row is not enough

Use the Flipkart listings guide to discover products by search or category. Move a shortlist into Product Details when you need to compare configurations, sellers, conditional offers, warranty, or the rating distribution.

The Actor accepts:

  • Full product pages whose URL contains /p/ and a pid query parameter.
  • Bare PIDs such as MOBH4DQFG8NKFRDY.

The default Apify proxy is enough. maxItems is a total cap for the run, and its default is 50.

Read one complete offer record

This shortened iPhone 16 record shows how the selected offer and its sibling variants are represented. Prices were observed on September 15.

{
  "pid": "MOBH4DQFG8NKFRDY",
  "title": "iPhone 16 (Black, 128 GB)",
  "price": 69900,
  "mrp": 69900,
  "priceWithOffers": 66405,
  "currency": "INR",
  "availability": "IN_STOCK",
  "sellerName": "TrueComRetail",
  "sellerRating": 4.6,
  "sellerYears": "10 years with Flipkart",
  "sellerProductsSold": "99.2K+",
  "deliveryBy": "Friday, 18 Sep",
  "offers": [
    { "type": "EXCHANGE", "value": "Up to ₹40,900" },
    { "type": "PBO", "title": "Bank offers", "value": "₹3,495 off" }
  ],
  "variants": [
    { "pid": "MOBH4DQFG8NKFRDY", "name": "128 GB", "price": 69900, "stock": "7 left", "selected": true },
    { "pid": "MOBH4DQFZCJJXUFG", "name": "256 GB", "price": 79900, "stock": "5 left", "selected": false },
    { "pid": "MOBH4DQF8HRDZ3ZV", "name": "512 GB", "price": null, "stock": "Out of stock", "selected": false }
  ],
  "rating": 4.6,
  "ratingCount": 198569,
  "reviewCount": 8581,
  "status": "ok"
}
Field groupHow to interpret it
price, mrp, priceWithOffersThe selected selling price, displayed MRP, and a conditional offer calculation. Keep all three separate.
offersBank, exchange, EMI, coupon, and other promotion descriptions with their stated values.
variants, variantAttributesConfiguration-specific PIDs, prices, stock text, and selected state.
sellerName, sellerRating, sellerQualityScoreSeller identity and the quality signals Flipkart exposed for that offer.
ratingHistogram, parameterRatings, reviewsRating distribution, aspect scores, and top review samples rather than every customer review.
highlights, specifications, warrantyThe fields needed to confirm two offers describe the same product and support terms.

Flipkart product details output in the Apify Console

Run the two-product sample

  1. Open the Actor on Apify and click Try for free.
  2. Keep the prefilled iPhone and Acer laptop URLs or replace them with your shortlist.
  3. Leave the default proxy enabled and Max products at 50.
  4. Click Start. The verified two-product run completed in about 15 seconds.
  5. Open Output to inspect the selected product and nested variants. Export JSON when you need the full specifications, offers, or reviews.

The same input in JSON form is:

{
  "productUrls": [
    "https://www.flipkart.com/apple-iphone-16-black-128-gb/p/itmb07d67f995271?pid=MOBH4DQFG8NKFRDY",
    "https://www.flipkart.com/acer-aspire-3-intel-celeron-dual-core-8-gb-512-gb-ssd-windows-11-home-a311-45-thin-light-laptop/p/itmad38595c5a902?pid=COMH7NCZY2QDJ5Z4"
  ],
  "maxItems": 50,
  "proxyConfiguration": { "useApifyProxy": true }
}

Turn the output into a fair comparison

The Acer page returned three storage options. The selected 512 GB model was ₹38,981, the 256 GB model ₹36,500, and the 128 GB model ₹35,572. Sorting those numbers without the storage field would create a false price gap.

Build the comparison in this order:

  1. Match the exact configuration from variantAttributes, variants[].name, and the specifications.
  2. Use price as the base amount. MRP is a displayed maximum retail price, not a verified former selling price.
  3. Keep priceWithOffers in a separate column and store the matching offers text. The launch records included bank, exchange, cashback, and EMI conditions.
  4. Keep the seller with the price. The iPhone seller showed a 4.6 rating and ten years on Flipkart; the Acer seller showed one month on Flipkart and no numerical seller rating in the returned page.
  5. Treat deliveryBy, stock, and availability as observations from the run's default location context. Verify the delivery postcode and checkout conditions before acting.

The rating histogram is more useful than the average alone. The Acer's 3.8 average came from 10,280 ratings, including 1,727 one-star ratings. Its aspect scores put sound quality at 2.8 and battery at 3.2. Those fields tell you what to investigate; the top review samples are not a complete or representative review study.

For a code-based refresh, the Flipkart product details Node.js example calls the Actor with the same input and retrieves its dataset.

Pricing

As of September 15, 2026, a successfully scraped product costs $0.005. Variants, offers, seller fields, specifications, warranty, rating breakdown, and top review samples are included.

ProductsProduct events
2$0.01
50$0.25
100$0.50

Unknown or withdrawn products return not_found and are free. Check the live pricing page before scheduling a larger list.

When the output needs checking

  • priceWithOffers is lower than price. Read the associated offers. A particular card, exchange, account, expiry date, or payment method may be required.
  • A variant price is null. Check its inStock and stock values. The iPhone's 512 GB option was out of stock in the launch run.
  • A seller score is missing. Keep it null. A new or sparsely described seller should not be assigned an inferred score.
  • The delivery date differs at checkout. The Actor reports Flipkart's default-location estimate. Set your operational process to verify the intended delivery postcode.
  • The MRP discount looks dramatic. Treat it as a comparison with displayed MRP, not evidence that buyers previously paid that amount.
  • You need every review. This Actor returns page-level rating evidence and top reviews, not the complete review history.

Frequently asked questions

Can I use a bare Flipkart product ID?

Yes. Product URLs and bare 16-character PIDs are both accepted. Keep the full URL when it helps a reviewer see the product and selected variant.

Is priceWithOffers the price every buyer will pay?

No. It reflects the offer calculation returned on the page, and bank, exchange, account, expiry, and location conditions may apply. Keep the underlying price and offer descriptions.

Does the Actor return every Flipkart review?

No. It returns the overall rating, rating histogram, aspect scores, counts, and top review samples exposed on the product page. It is not a complete review export.

Piotr Vassev

Piotr Vassev

Founder of FalconScrape. Building production-grade web scraping systems and data automation pipelines for businesses worldwide.

Connect on LinkedIn