Flipkart Products Scraper avatar

Flipkart Products Scraper

Pricing

from $1.05 / 1,000 results

Go to Apify Store
Flipkart Products Scraper

Flipkart Products Scraper

Product listings from Flipkart search and browse pages: title, price and MRP, rating with its full 5-star histogram, review counts, key specs and images. Cross-page de-duplication and a relevance check on every query.

Pricing

from $1.05 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Product listings from Flipkart search and browse pages — title, price and MRP, rating with its full 5-star histogram, review counts, key specs and images.

HTTP only, no browser, no login.

Input

{
"mode": "search",
"keywords": ["laptop", "wireless earbuds"],
"sortBy": "priceDesc",
"maxPages": 3,
"maxItems": 200
}

Or point it at listing URLs you already have:

{
"mode": "urls",
"listingUrls": ["https://www.flipkart.com/search?q=keyboard"]
}

What you get

recordTypeOne perCarries
SEARCH_SUMMARYkeyword / URLpages fetched, rows fetched vs returned, duplicates dropped, why paging stopped, and a relevance score for the query
PRODUCTproductid, URL, title, price, MRP, rating + histogram, review count, key specs, images — plus the full raw upstream object
ERRORfailed inputwhy
{
"recordType": "PRODUCT",
"productId": "COMH8Z9ABCDEFGHI",
"productUrl": "https://www.flipkart.com/lenovo-100e-chromebook-...",
"title": "Lenovo 100e Chromebook Gen 4 MediaTek Kompanio 520 - (4 GB/...)",
"currency": "INR", "currentPrice": 16500, "strikeOffPrice": 24990,
"ratingAverage": 4, "ratingCount": 3333, "reviewCount": 307,
"ratingBreakup": [455, 155, 242, 561, 1920], // 1★ … 5★
"imageUrls": ["...", "..."],
"raw": { "...": "upstream's object, untouched" }
}

ratingBreakup is the 1★-to-5★ vote distribution — unusual to get from a listing page rather than a product page, and enough to compute your own weighted scores or spot review-bombing.

Known limits — read these before you rely on the output

Flipkart has no "no results" page, and this is the big one. An unmatched query returns HTTP 200 with ~40 unrelated products — q=zzzqqqnotarealproduct12345 returned wooden toddler puzzles, magic copybooks and rose face wipes. It is not even a fixed fallback list: two different nonsense queries returned two completely different junk sets with zero overlap. Nothing in the response marks them as junk.

So every query's relevance is measured and reported. titleMatchRate is the fraction of returned products matching a query token across title, subtitle, Flipkart's own category (vertical) and key specs, and lowRelevanceWarning flags a run below 20%. Measured separation:

queryrate
headphones, mobile, watches1.00
running shoes0.98
laptop0.92
shoes0.70
three different nonsense strings0.00

These rows are never silently dropped — a low score is a fact about your query that you should see, not a licence for this actor to decide which products count.

Pages overlap, so products are de-duplicated. Page 2 shares ~9 of 24 products with page 1. That is genuine repetition in Flipkart's own paging, not randomness: page 1 fetched twice returned an identical 24/24 set. duplicatesDropped tells you how many were removed.

Page size is not fixed. 24 products on a grid-layout query, 40 on a carousel-layout query. Flipkart picks the layout per query; it carries no meaning. Set maxItems rather than reasoning from page counts.

India only, INR only. flipkart.com serves one market and there is no locale switch, so currency is always INR.

Single product pages are not supported. /p/… is a different layout; those URLs are refused with an explanation rather than half-parsed.

MRP is often absent. strikeOffPrice was present on 27 of 30 in testing — products with no discount simply have no strike-off price. It is left null, never copied from the sale price.

Technical

Server-rendered React; the payload is a JSON object on window.__INITIAL_STATE__ (~354 KB). Products are located structurally rather than by a fixed path, because slot-group keys are numeric and change per query.

No WAF observed: 3/3 TLS profiles returned 200. Past the end, paging is honest — page=9999 returns 200 with zero products.

robots.txt checked: no ClaudeBot/anthropic-ai group, no blanket disallow; /search verdict ALLOWED.

Full recon trail is in CRAWLING_METHOD.md.