GrabFood Restaurants & Deals Scraper avatar

GrabFood Restaurants & Deals Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
GrabFood Restaurants & Deals Scraper

GrabFood Restaurants & Deals Scraper

Discover GrabFood restaurants across Southeast Asian cities — names, addresses, cuisines, star ratings and vote counts, delivery time and fee estimates, price level, open hours, current promos, and photos. Give it city names and cuisines; get one clean row per restaurant.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Discover GrabFood restaurants across Southeast Asian cities — with star ratings, review counts, delivery time and fee estimates, price level, cuisines, open hours, current promos, and photos. Give it city names and cuisine filters; get one clean row per restaurant, ready for spreadsheets, dashboards, or databases.

Why use this actor

  • No account, no login, no API key — just enter one or more cities and run.
  • Wide coverage — built-in support for major cities across Indonesia, Singapore, Malaysia, Thailand, the Philippines, Vietnam, Cambodia, and Myanmar (and any other GrabFood city via a simple override).
  • Rich restaurant detail — name, full address, city, cuisines, star rating and review count, price level, delivery ETA and fee (including free-delivery / discounted fees), delivery/takeaway/dine-in options, open hours, and whether the restaurant is currently open.
  • Deals built in — flags restaurants running a promo and captures the exact offer text (e.g. "55% off", "Rp15.000 off").
  • Clean, structured output, automatic retries, runs on a schedule, exports to JSON / CSV / Excel. No scrapers or browsers to babysit.

How it works

  1. Enter one or more cities (e.g. Jakarta, Singapore, Bangkok).
  2. Optionally pick cuisine filters to widen or narrow the search — the actor fans out across each filter for better coverage.
  3. The actor discovers the restaurants delivering in each city and reads each one's public listing.
  4. Every restaurant becomes one row in your dataset, with ratings, delivery estimates, deals, and more.

You never manage scrapers, browsers, or blocks — just provide cities and read the results.

Input

{
"mode": "feed",
"cities": ["Jakarta"],
"cuisineAttributeIds": ["300017", "300088", "300051"],
"includeDishMerchants": false,
"maxItems": 100,
"maxItemsPerCity": 200,
"maxConcurrency": 3,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "ID"
}
}
FieldTypeDescription
modestringfeed — discover restaurants in a city. (Menu extraction is not available in this version.)
citiesarray of stringsCity names to search. Built-in: Jakarta, Bandung, Surabaya, Medan, Yogyakarta, Bekasi, Semarang, Makassar, Singapore, Kuala Lumpur, Johor Bahru, Penang, Petaling Jaya, Bangkok, Chiang Mai, Manila, Cebu, Ho Chi Minh City, Hanoi, Phnom Penh, Yangon.
cuisineAttributeIdsarray of stringsCuisine category IDs to fan out across. Defaults cover Indonesian/Local (300017), Western (300088), Chinese (300051). More IDs = more restaurants.
includeDishMerchantsbooleanAlso run a dish-based search for the same IDs. Off by default.
citySlugstringOptional. For a city not in the built-in list, GrabFood's city slug (e.g. kuala-lumpur). Use together with latlng. Applies to the first city.
latlngstringOptional. "latitude,longitude" near the city center (e.g. "-6.2,106.816"). Required when using citySlug.
countryCodestringOptional. Two-letter country code for the override (ID, SG, MY, TH, PH, VN, KH, MM). Defaults to ID.
maxItemsintegerCap on total restaurants across all cities. 0 = no cap.
maxItemsPerCityintegerCap on restaurants per city (across all cuisine filters).
maxConcurrencyintegerHow many cities to process in parallel. Default 3.
proxyConfigurationobjectIndonesian residential proxy is recommended and set by default.

Output

One row per restaurant:

{
"_input": "Jakarta",
"_scrapedAt": "2026-07-10T05:13:22Z",
"_source": "S1-cuisine",
"recordType": "MERCHANT",
"id": "IDGFSTI00003m21",
"name": "Ayam Geprek Qribo 'Qrispy Jumbo' - Manggarai Selatan",
"combined_address": "Jl. Manggis I No. 38, Manggarai Selatan, Tebet, Jakarta Selatan, JKT.S-TEBET, 12860",
"city": "Jakarta",
"cityId": 10,
"countryCode": "ID",
"citySlug": "jakarta",
"attributeValueID": "300017",
"chainName": "Ayam Geprek Qribo 'Qrispy Jumbo'",
"branchName": "Manggarai Selatan",
"businessType": "FOOD",
"cuisine": ["Smashed Fried Chicken", "Fried Chicken"],
"rating": 4.7,
"vote_count": 4054,
"priceTag": 1,
"distanceInKm": 1.325,
"estimatedDeliveryTime": 43,
"estimatedDeliveryTimeRange": "From 43 mins",
"estimatedDeliveryFee": {
"currency": { "code": "IDR", "symbol": "Rp", "exponent": 2 },
"price": 600000,
"priceDisplay": "Rp6.000",
"hasDiscountedPrice": true
},
"deliverBy": "GRAB",
"deliverOptions": "DELIVERY_TAKEAWAY_DINEIN",
"isOpen": true,
"openDisplayedHours": "08:00-23:00",
"hasPromo": true,
"promoText": "55% off",
"isIntegrated": true,
"photoHref": "https://huawei-food-cms.grab.com/compressed_webp/merchants/IDGFSTI00003m21/hero/a925d9f1497f48ada46d44e6237c3b33_1631279202885028582.webp",
"iconHref": "https://huawei-food-cms.grab.com/compressed_webp/merchants/IDGFSTI00003m21/logo/04f6595d495940e3b5b8e3a09f9551e9_1650546847770907519.webp",
"branchCount": 0,
"raw": { "…": "full original listing (address, merchantBrief, reviews, labels, media)" }
}
FieldTypeDescription
idstringRestaurant ID on GrabFood.
namestringRestaurant name (branch included).
combined_addressstringFull street address.
city / cityId / countryCode / citySlugstring / numberLocation of the restaurant.
attributeValueIDstringThe cuisine filter this restaurant was found under.
chainName / branchNamestringBrand and branch names.
cuisinearrayCuisine tags.
ratingnumberStar rating (out of 5).
vote_countintegerNumber of ratings.
priceTagintegerPrice level (1 = cheapest).
distanceInKmnumberDistance from the search point.
estimatedDeliveryTimeintegerDelivery estimate in minutes.
estimatedDeliveryTimeRangestringHuman-friendly delivery estimate.
estimatedDeliveryFeeobjectDelivery fee with currency, amount, display text, and whether it is discounted/free.
deliverBy / deliverOptionsstringWho delivers and which fulfilment options are offered.
isOpen / openDisplayedHoursboolean / stringCurrent open status and hours.
hasPromo / promoTextboolean / stringWhether a deal is running and the offer text.
photoHref / iconHrefstringRestaurant photo and logo.
rawobjectThe complete original listing for anything not flattened above.

On failure the actor writes a row with _error and _errorDetail rather than silently skipping, and the run fails loudly if nothing could be collected.

Notes & limits

  • Indonesian residential proxy is recommended (and set by default). For cities in other countries, pick a matching country for best reliability — some requests are rate limited per IP, so residential rotation helps.
  • Coverage per city is broad but not exhaustive — GrabFood returns results ranked around a point in the city. Use several cuisine filters (and, for large cities, the coordinate override to sample different neighborhoods) to widen coverage. maxItemsPerCity caps how deep it goes.
  • Menu extraction is not available in this version. Per-restaurant menus sit behind a per-region sign-in that is heavily rate limited, so this release focuses on restaurant discovery (a menu tier may be added later).
  • Cities not in the built-in list are easy to add: pass citySlug + latlng (+ countryCode).
  • Delivery fees are given as structured amounts (e.g. 600000 with a Rp currency and an exponent of 2 = Rp6.000) plus a ready-to-show priceDisplay.

Other actors

Part of a food-delivery collection — see also the UberEats Menu Scraper and GoFood Merchants Scraper.