FairPrice Scraper - Singapore Grocery Prices & Products
Pricing
$3.00 / 1,000 product scrapeds
FairPrice Scraper - Singapore Grocery Prices & Products
Scrape NTUC FairPrice (Singapore) grocery products: price, list price & discount, multi-buy promotions, Nutri-Grade, brand, barcode, country of origin, dietary (Halal), supplier, category, images, ratings & stock. Search by keyword or URL, filter, and monitor price drops. No browser.
Pricing
$3.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
FairPrice Scraper — Singapore Grocery Prices & Products
Scrape NTUC FairPrice (Singapore's #1 grocer) for live grocery prices, promotions and product data — straight from FairPrice's own storefront. Search by keyword or URL, filter by discount / Nutri-Grade / stock, and turn on monitor mode to track price drops day-to-day. No login, no API key, no browser.
Why this FairPrice scraper?
- Straight from the source. Reads FairPrice's own public storefront API — fast, stable, and complete. No flaky page-scraping, no anti-bot roulette.
- Rich, analysis-ready records. Every product comes with current price, list price & discount, multi-buy promotions, Nutri-Grade, brand, barcode, country of origin, dietary tags (Halal), supplier/distributor, category, images, ratings and stock.
- Built for price tracking. Monitor mode remembers products between runs and returns only what's new or changed — with
previousPriceandpriceDelta— so you can watch price drops without diffing anything yourself. - Cheap to run, simple to scale. Keyword search paginates to ~1,000 products per term; pay only per product written.
Use cases
- Price intelligence & competitor monitoring — track grocery prices and promotions over time for pricing, FMCG and retail-analytics teams.
- Deal & promotion tracking — surface everything currently discounted or on multi-buy offer.
- Catalogue & PIM enrichment — pull names, brands, barcodes, images, Nutri-Grade and country of origin for product databases.
- Sourcing & supplier leads — capture the distributor behind each SKU (FairPrice "seller name") for B2B outreach.
- Health & dietary research — filter by Nutri-Grade or Halal/dietary attributes across a category.
How to use
- Click Try for free.
- Add one or more Search terms (e.g.
milk,kit kat,olive oil) — or paste FairPrice product / search / category Start URLs. - (Optional) Filter with On promotion only, Minimum discount %, Nutri-Grade, or In stock only.
- Set Max products and click Save & Start.
- Export results as JSON, CSV, Excel, or pull them via API.
Input
| Field | Type | Description |
|---|---|---|
searchTerms | array | Keywords to search (product names, brands or categories). Each is paginated up to the limits. |
startUrls | array | FairPrice product, search or category URLs. Category/search URLs become a keyword search. |
productIds | array | Specific FairPrice product IDs to fetch directly — ideal for monitoring a fixed basket. |
onOfferOnly | boolean | Keep only products with a current discount or multi-buy promotion. |
minDiscountPercent | integer | Keep only products discounted at least this % off the list price. |
nutriGrades | array | Keep only products with these Nutri-Grade ratings (A/B/C/D). |
inStockOnly | boolean | Skip out-of-stock products. |
maxItems | integer | Maximum products across all searches (default 100). |
maxItemsPerSearch | integer | Optional per-term cap so one keyword doesn't use the whole budget. |
monitorMode | boolean | Output only new / price-changed products (adds previousPrice & priceDelta). |
monitorStoreName | string | Named store used to remember products between runs (one per tracked basket). |
proxyConfiguration | object | Proxy settings. The default Apify datacenter proxy is fast and reliable here. |
Example input
{"searchTerms": ["milk", "instant noodles", "olive oil"],"onOfferOnly": true,"minDiscountPercent": 10,"maxItems": 500,"monitorMode": true,"monitorStoreName": "weekly-basket"}
Output
Each product is one dataset record. Example (trimmed):
{"platform": "fairprice.com.sg","productId": "1614709","barcode": "8850329145980","name": "Meiji Low Fat High Protein Milk - Green Tea","brand": "Meiji","price": 4.95,"listPrice": 4.95,"currency": "SGD","discountPercent": null,"isOnOffer": true,"promotions": ["Any 6 for $21.50"],"displayUnit": "350ml","nutriGrade": "B","countryOfOrigin": "Thailand","dietaryAttributes": ["Halal"],"isHalal": true,"supplier": "CROWN PACIFIC BEVERAGE PTE LTD","category": "Flavoured Milk","images": ["https://media.nedigital.sg/.../13282299_XL1.jpg"],"inStock": true,"rating": 4.41,"reviewCount": 32,"productUrl": "https://www.fairprice.com.sg/product/meiji-low-fat-high-protein-milk-green-tea-350ml-13282299"}
Two ready-made dataset views are included: Products (pricing & key attributes) and Nutrition & sourcing (Nutri-Grade, origin, dietary, supplier).
Note: Nutri-Grade is a Singapore Health Promotion Board label that applies to prepacked beverages only — it is populated for drinks (milk, juice, soft drinks) and is genuinely absent for non-beverages (oils, snacks, household goods). Discount fields appear only when a product is currently on offer.
Monitoring mode & scheduling
Turn on monitorMode to remember the products already returned and emit only the ones that are new or whose price/stock/promotion changed since the last run (with previousPrice and priceDelta). It's the cleanest way to track price drops across a basket or category.
It is fully compatible with Apify Schedules — they do different jobs: the schedule decides when the run fires (e.g. every morning), and monitoring mode decides what is returned (only the deltas). Point each tracked basket at its own monitorStoreName to keep histories separate.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run it daily to track grocery prices and promotions; perfect for alerts and pricing dashboards.
- Webhooks — trigger downstream actions (price alert, Slack message, sheet update) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/fairprice-scraper').call({searchTerms: ['milk', 'eggs', 'rice'],onOfferOnly: true,maxItems: 500,monitorMode: true,monitorStoreName: 'weekly-basket',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} FairPrice products`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push price changes straight into Sheets, Slack or a database.
- Slack — get notified when a monitored product drops in price.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "track the price of these 20 grocery items at FairPrice every day and alert me on any drop over 10%" and let it run this scraper for you.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More scrapers from scrapesage
Build a complete Singapore data stack:
- 99.co Property Scraper — Singapore property listings & agent leads.
- EdgeProp.sg Scraper — Singapore property & agent leads.
- SGCarMart Used Car Scraper — Singapore used-car prices, COE/OMV/ARF & dealer leads.
- MyCareersFuture Scraper — Singapore jobs, salaries & employer leads.
- JobStreet Singapore Scraper — Singapore jobs, salaries & company leads.
- Singapore Company Scraper — UEN, registry & business leads.
- StreetDirectory Scraper — Singapore business directory leads.
- Foodpanda Scraper — restaurants, menus & prices across APAC.
Tips
- Track a fixed basket: list the exact
productIdsyou care about and turn onmonitorModefor a clean daily price-change feed. - Find deals fast: set
onOfferOnly(and optionallyminDiscountPercent) to surface only discounted and multi-buy items. - Healthier picks: filter
nutriGradesto["A","B"]for beverages, or watchdietaryAttributes/isHalalacross a category. - Cost control: use
maxItemsPerSearchso one broad keyword doesn't consume your wholemaxItemsbudget. - Proxies: the default Apify (datacenter) proxy works well and keeps costs low — FairPrice's API has no anti-bot. Switch to Residential only if you ever hit rate limits on very large runs.
FAQ
Is this affiliated with NTUC FairPrice? No. This is an independent tool that collects publicly available product information from FairPrice's website.
Do I need an API key or login? No. The actor uses FairPrice's own public storefront endpoints — no account, key or browser needed.
Why is nutriGrade empty for some products? Singapore's Nutri-Grade applies to prepacked beverages only. Non-drink products (oils, snacks, household, personal care) genuinely have no Nutri-Grade.
Can I get more than 1,000 products for one keyword? FairPrice caps search pagination at ~1,000 results per term. Use more specific keywords, categories, or product IDs to cover more of the catalogue.
Does monitoring mode conflict with Apify schedules? No — schedules decide when a run fires; monitor mode decides what is returned (only new/changed products). They work together.
Need help?
Open an issue on the actor's Issues tab with your input and what you expected — happy to help.