GrabFood Restaurant Scraper: Menus, Ratings & Delivery Data
Pricing
from $1.00 / 1,000 restaurant results
GrabFood Restaurant Scraper: Menus, Ratings & Delivery Data
Scrape GrabFood restaurants across Southeast Asia, including SG, MY, TH, VN, PH, ID, KH, and MM. Search by keyword or URL and extract 45+ fields: restaurant name, address, GPS, cuisine, ratings, reviews, promos, delivery time, fees, opening hours, and full menus with item prices and images.
Pricing
from $1.00 / 1,000 restaurant results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
GrabFood Restaurants Scraper
Pull restaurants and full menus from GrabFood across Southeast Asia. Returns 45+ fields per restaurant: name, chain, address, GPS, cuisine tags, star rating and review count, promotions, delivery time and fee, opening hours, price tier, and the complete menu (categories, items, descriptions, prices, discounted/takeaway prices, images, modifier counts). Search by keyword in any of 8 countries, or paste GrabFood URLs (single restaurant or a listing page).
Why this scraper
- 45+ fields per restaurant, including the full menu — vs the ~20 flat fields in the older GrabFood scraper on the Store
- Full menu surface: categories, items, descriptions, original and discounted prices, takeaway prices, item images, and modifier-group counts
- Delivery detail: estimated delivery time and range, delivery fee (with discounted fee), delivery options (delivery / takeaway / dine-in), price tier
- Promotions captured as structured labels (e.g. "S$5.00 off"), not just a boolean flag
- Full address block from the restaurant page: street, suburb, postcode, city, country
- Rating and review count on every card, with the review count populated from GrabFood's own data
- 8 regions: Singapore, Malaysia, Thailand, Vietnam, Philippines, Indonesia, Cambodia, Myanmar
- Two modes: search by keyword or paste URLs, plus filters for cuisine, minimum rating, and minimum review count, and 5 sort options
Ratings and reviews
Every restaurant record carries GrabFood's aggregate rating (star score) and voteCount (the number of ratings the restaurant has received). These are the rating signals GrabFood exposes on its public web listings.
GrabFood's public web surface does not expose individual written customer reviews (author, date, review text) — the restaurant page returns only the aggregate score and the total number of ratings. We verified this with a live check of the restaurant detail data on food.grab.com: the merchant payload contains rating and voteCount but no per-review comment, author, or body objects. Written review text is only available inside the logged-in Grab mobile app, which is not part of the public site. This scraper therefore captures the rating and review-count data that exists, and does not fabricate review text that the site does not provide.
Data you get
Sample shape, values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
| id | SGDD00000 |
| name | Sample Burger Place |
| chainName | Sample Burger |
| branchName | Downtown |
| cuisine | ["Burger", "Fast Food", "Halal"] |
| address | Sample Burger Place - Downtown |
| fullAddress | 1 Sample Street, #01-01 |
| street | Sample Street |
| suburb | Downtown |
| postcode | 000000 |
| city | Singapore |
| countryCode | SG |
| latitude / longitude | 1.2880 / 103.8520 |
| rating | 4.3 |
| voteCount | 1200 |
| priceTag | 2 |
| isOpen | true |
| estimatedDeliveryTime | 35 |
| estimatedDeliveryTimeRange | From 35 mins |
| distanceInKm | 1.34 |
| hasPromo | true |
| promoLabels | ["S$5.00 off"] |
| deliveryOptions | DELIVERY_TAKEAWAY_DINEIN |
| deliveryFee | { currencyCode, currencySymbol, price, priceDisplay, discountedPrice, hasDiscountedPrice } |
| currency | { code: "SGD", symbol: "S$", exponent: 2 } |
| openHours | { mon, tue, ..., displayedHours } |
| photoHref / smallPhotoHref / iconHref | image URLs |
| grabUrl | https://food.grab.com/sg/en/restaurant/sample-burger-place/SGDD00000 |
| menuCategoryCount / menuItemCount | 12 / 86 |
| menu | array of { name, available, itemCount, items: [{ id, name, description, price, discountedPrice, takeawayPrice, imageUrl, modifierGroupCount }] } |
| orderValueLimit | 15000 |
| announcements | ["Public holiday hours apply"] |
| region | SG |
| scrapedAt | ISO timestamp |
Input
- mode —
search(keyword queries) orurl(paste GrabFood links). - region — the GrabFood country: SG, MY, TH, VN, PH, ID, KH, MM.
- searchQueries — keywords to search in the region. Leave empty to browse the region's recommended restaurants.
- startUrls — GrabFood restaurant pages or listing pages (URL mode).
- cuisineFilter — keep only restaurants whose cuisine tags contain any of these terms.
- minRating / minReviews — drop restaurants below a rating or review-count threshold.
- sortBy — default (GrabFood ranking), rating, review count, distance, or delivery time.
- fetchMenu — enrich each restaurant with the full menu and full address (on by default).
- includeRatings — populate rating and review count (on by default).
- maxItems — the main cap: total restaurants per run (default 20). Leave 0 for unlimited.
- maxPages — no page limit by default; the run stops at Max restaurants. Set only to also cap listing pages walked.
- proxyConfiguration — a residential connection is required; the exit country is aligned to the region automatically.
Output
One record per restaurant, pushed to the dataset. Enable fetchMenu for the full menu and full address block; disable it for faster listing-only runs.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it in the mcpConnectors input. Each connector receives a condensed, human-readable summary per item (title + key fields) — the full record always stays in the dataset. Supported: Notion, Linear, Airtable, and Apify. For Notion, also set notionParentPageUrl.
Plan Requirement
Runs on any Apify plan.
Notes
- Use a residential connection for reliable listing loads. Datacenter connections may be rejected by the site.
- Prices are in the region's currency and are returned in minor units (e.g. cents) alongside a formatted display string where GrabFood provides one.