FairPrice Scraper avatar

FairPrice Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
FairPrice Scraper

FairPrice Scraper

Scrape FairPrice.com.sg (Singapore) grocery products by keyword search or exact product ID/URL. Get prices, promotions, ratings, images and specifications.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Scrape grocery product data from FairPrice.com.sg -- Singapore's largest supermarket chain (NTUC FairPrice). Get product titles, prices, promotions, ratings, and images from keyword search, or fetch full detail for specific product IDs/URLs.

What does this scraper do?

  • Search by keyword -- find grocery products matching any search term (e.g. "milk", "rice", "instant noodles").
  • Browse by category -- collect every product listed on a FairPrice category or brand-storefront page (e.g. fp-lion).
  • Get product details -- fetch full descriptions, brand, barcode, and ratings for exact product IDs or URLs.
  • Filter results -- by price range, minimum rating, and promotion/discount availability.
  • Sort results -- by relevance, price (low-to-high or high-to-low), or rating.

No login, cookies, or paid proxy required.

Output

Each result is a JSON record. Search results include:

FieldDescription
productIdFairPrice's product ID (from the product URL)
titleProduct name
priceCurrent shelf price (SGD)
currencyAlways SGD (Singapore dollar)
originalPriceOriginal price before discount, when the product is on promotion
savingsAmountAmount saved vs. the original price, when shown
ratingAverage customer rating (0-5)
imageUrlProduct image URL
productUrlLink to the product page
onPromoWhether the product currently has a promotional discount
recordTypeproduct
scrapedAtUTC timestamp of when the record was scraped

Both search and productDetails results are additionally enriched (when available) with data from FairPrice's own embedded page state -- richer than what's visible in the rendered page alone:

FieldDescription
brandBrand/manufacturer name
barcodeGTIN/EAN barcode
imagesFull product image gallery (all angles, not just the listing thumbnail)
countryOfOriginCountry of manufacture/origin
dietaryAttributese.g. ["Halal", "Vegetarian"]
nutrigradeSingapore HPB Nutri-Grade label (A-D), for applicable beverages
displayUnitPack size as shown on-shelf, e.g. 2L, 500g
packTypee.g. ["Packet"], ["Bottle"]
storageInformationStorage instructions, e.g. "Store at 2°C - 4°C"
ingredientsIngredient list, when disclosed
supplierNameSupplier/distributor of record
category / categoryPathFairPrice's own category, e.g. category: "Fresh Milk", categoryPath: "Dairy, Chilled & Eggs > Fresh Milk > Fresh Milk"
reviewCountNumber of customer reviews (also used to compute rating, more precise than the listing-page rounded value)
inStockWhether the product currently has stock (search mode only)

productDetails mode additionally returns description, availability, priceValidUntil, and internalSku.

Only fields that FairPrice actually provides for a given product are included -- no blank or placeholder values. Note: price, originalPrice, savingsAmount, and onPromo are always derived from the rendered page's visible pricing (never from the enrichment data above) -- FairPrice's embedded state has a discount/mrp pair whose meaning does not reliably correspond to "was/now" pricing (confirmed live: mrp equals the current price even when discount is nonzero for many products), so it is deliberately not used for price fields.

Input options

FieldModeDescription
modeallsearch, byCategory, or productDetails
searchQuerysearchKeyword to search for
categorySlugOrUrlbyCategoryCategory slug (e.g. fp-lion) or full category URL
productIds / productUrlsproductDetailsExact product IDs or full product URLs
sortBysearch, byCategoryrelevance, priceAsc, priceDesc, ratingDesc
minPrice / maxPricesearch, byCategoryPrice range filter in SGD
minRatingsearch, byCategoryMinimum customer rating (0-5)
promoOnlysearch, byCategoryOnly include products currently on promotion
maxItemsallMaximum number of records to return
maxPagessearch, byCategoryMaximum result pages to scan

Example use cases

  • Price monitoring -- track prices and promotions for specific products or keywords over time.
  • Basket comparison -- compare grocery pricing across a shopping list of keywords.
  • Deal hunting -- filter for the biggest discounts or best-rated products.
  • Catalog enrichment -- pull full descriptions, barcodes, and images for a list of known product IDs.

FAQ

Does this scraper require login or cookies? No. All data is scraped from FairPrice's own publicly rendered pages.

What currency are prices in? Singapore dollars (SGD), FairPrice's home market currency.

Why do some products lack a rating or originalPrice field? FairPrice only returns rating/promotion data for products that actually have it. Fields are omitted rather than filled with placeholder values, in line with real-data accuracy.

How is sortBy applied? FairPrice's own search page sort control is JavaScript-driven and doesn't expose a working URL parameter, so this actor collects a page pool and sorts it client-side by the requested field -- giving the same end result without needing a browser.

How many products can I scrape per run? Up to maxItems (default 20, max 1000) per run. Search and category browsing paginate through FairPrice's real listing results (not capped to a single page), so a broad query like "milk" can return several hundred unique products in one run -- raise maxPages alongside maxItems if you need more than the first ~20 per query.

Limitations

  • productDetails mode fetches each product ID/URL as an independent page and is fully reliable for any number of IDs.
  • categorySlugOrUrl slugs are not centrally enumerable (FairPrice does not publish a finite category list) -- browse fairprice.com.sg and copy the /category/... path segment from any category or brand-storefront page you want to scrape.