Flipkart Products Scraper — India Catalog Search
Pricing
from $1.50 / 1,000 products
Flipkart Products Scraper — India Catalog Search
Scrape Flipkart India catalog search: title, INR price, MRP, discount %, rating, brand, key specs, product URL. HTTP-only via __INITIAL_STATE__ PRODUCT_SUMMARY. Use Apify RESIDENTIAL + IN — Akamai often blocks bare IPs.
Pricing
from $1.50 / 1,000 products
Rating
0.0
(0)
Developer
Noah Adler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Flipkart India catalog search: title, INR price, MRP, discount %, rating, rating count, brand, key specs, product URL and image — one clean Dataset row per listing.
HTTP-only (curl_cffi + Chrome TLS). Parses Flipkart’s public window.__INITIAL_STATE__ / is_script / __NEXT_DATA__ and extracts PRODUCT_SUMMARY widgets.
Proxy: Flipkart sits behind Akamai geo/antibot. Production runs need Apify RESIDENTIAL with country IN. Without it, expect a soft-fail error row (403/challenge) — not fake empty success.
Why this Actor: India B2C catalog · Clean PPE schema · Keyword or search URL · No Playwright · Honest antibot limits · Racimo IN (Naukri + IndiaMART + Flipkart)
Store icon: set the Actor icon in Apify Console (PNG not shipped in this repo).
What this Actor does
| Step | Action |
|---|---|
| 1 | Accept query and/or searchUrl, optional sort / maxItems |
| 2 | Build https://www.flipkart.com/search?q=… (or reuse your URL + page=) |
| 3 | GET with curl_cffi impersonate chrome124 |
| 4 | Parse __INITIAL_STATE__ → PRODUCT_SUMMARY → product cards |
| 5 | Normalize price / MRP / discount / rating / brand / specs → Dataset |
| 6 | Paginate until maxItems or empty page |
Input
| Field | Required | Description |
|---|---|---|
query | One of query/URL | Keyword (e.g. wireless earbuds) |
searchUrl | One of query/URL | Full Flipkart search/category URL (keeps filters) |
sort | No | relevance, price_asc, price_desc, popularity, recency_desc |
maxItems | No | 1–200 (default 40) |
proxyConfiguration | No | Default RESIDENTIAL; Actor injects IN if country empty |
Example
{"query": "wireless earbuds","sort": "relevance","maxItems": 40,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "IN"}}
Example with search URL
{"searchUrl": "https://www.flipkart.com/search?q=iphone+15&sid=tyy%2C4io","maxItems": 20}
Output example
{"productId": "MOBGTAGPHZXYABC","title": "boAt Airdopes 141 Bluetooth Truly Wireless…","price": 999.0,"mrp": 4490.0,"discountPercent": 77.0,"currency": "INR","rating": 4.1,"ratingCount": 185432,"brand": "boAt","detailUrl": "https://www.flipkart.com/boat-airdopes-…/p/itm…","imageUrl": "https://rukminim2.flixcart.com/image/312/312/…","keySpecs": ["Bluetooth 5.0", "Up to 42 Hours Playback"],"query": "wireless earbuds","scrapedAt": "2026-09-22T00:00:00Z","error": false,"errorMessage": null}
Output fields
| Field | Notes |
|---|---|
productId | Flipkart product / listing id when present |
title, brand | From titles / brand fields |
price, mrp, discountPercent | INR; discount from totalDiscount or derived |
currency | Always INR |
rating, ratingCount | Average + count |
detailUrl, imageUrl | Absolute URLs ({@width} → 312) |
keySpecs | List of highlight strings (or string fallback) |
query, scrapedAt, error, errorMessage | Run metadata |
Quick start (API)
from apify_client import ApifyClientclient = ApifyClient("<YOUR_TOKEN>")run = client.actor("noahadler/flipkart-products").call(run_input={"query": "wireless earbuds","maxItems": 20,"proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "IN",},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item.get("title"), item.get("price"), item.get("detailUrl"))
Use cases
- India ecommerce price / discount monitoring
- Catalog snapshots for PPE pipelines
- Competitor assortment vs Amazon.in / other IN marketplaces
- Lead gen for brands / sellers visible on Flipkart search
Limitations
- Akamai: without RESIDENTIAL IN, runs often soft-fail with a clear
errorrow. - SSR layout: Flipkart may change slot IDs; this Actor keys off
PRODUCT_SUMMARY, not a fixed slot. - Search cards only (v0.1): no deep
/p/itm…enrichment, no reviews crawl. - Respect Flipkart Terms of Service and applicable laws.
FAQ
Do I need both query and searchUrl?
No — provide either. If both are set, the Actor uses searchUrl for fetching and keeps query as metadata when present.
Why error on first run?
Almost always missing India residential proxy. Enable Apify Proxy → RESIDENTIAL → IN.
Does this use Playwright?
No. HTTP only (curl_cffi + Chrome TLS fingerprint).
Keywords
flipkart scraper, flipkart api, india ecommerce, flipkart product search, INR price mrp discount, flipkart catalog dataset, PPE flipkart, india marketplace scraper, wireless earbuds flipkart