Grab_search_menu_items
Search GrabFood menu items (dishes, drinks) across restaurants, e.g. to compare what "es kopi susu" or "nasi goreng" costs in an area. Filters are ANDed. Defaults to cheapest first.
Prices are in the restaurant's currency, not converted; mixing countries mixes currencies. When country is set, stats gives min/avg/max price over all matches. Items with a null price (source data error) are excluded from price sorts and stats.
How to target a place:
city: Grab's service region, exact name (case-insensitive). Regions are coarse: "Jakarta" is all of Jabodetabek (incl. Bogor, Depok, Tangerang, Bekasi), "Bali" is the whole island. Call Grab_list_areas for the list.
area: substring of the full address, which holds street, kelurahan, kecamatan, kota and postcode, e.g. "Kemang", "Kebayoran Baru", "Denpasar", "Sleman". Also matches Grab's delivery zone label. Use this for neighbourhoods. It is a plain substring: "Kemang" also matches "Kemanggisan", so add a street or pair it with postcode or city.
postcode: prefix, e.g. "121" for South Jakarta 121xx.
Dietary flags come from Grab and are weak: isVegetarian is set on about half of all items, drinks included, so almost every restaurant "has a vegetarian item"; isAlcohol is set on only ~57k of 34M items, so also search item names ("bir", "beer", "wine", "arak").
Coverage: ~1M restaurants: Indonesia 711k (164 Grab cities), Malaysia 119k, Vietnam 92k, Philippines 53k, Cambodia 15k, Singapore 4.5k, Myanmar 3k. Menus were fetched between Jun and Sep 2026 (fetchedAt per restaurant).
Returns { data, total, page, limit, stats? }. Each item includes its category and restaurant.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Address substring: neighbourhood, kecamatan, kota, street. | |
| city | No | Grab city, exact name. See Grab_list_areas. | |
| page | No | ||
| limit | No | ||
| query | Yes | Item name substring. | |
| sortBy | No | price | |
| alcohol | No | ||
| country | No | ISO country code, uppercase. Only these countries have data. | |
| postcode | No | Postcode prefix. | |
| priceMax | No | ||
| priceMin | No | ||
| sortOrder | No | asc | |
| discounted | No | true = has a discounted price. | |
| vegetarian | No | ||
| restaurantId | No | Grab merchant id, e.g. 6-C2ABCDEF. |