OpenRice Scraper – HK Restaurants, Ratings & Review Counts avatar

OpenRice Scraper – HK Restaurants, Ratings & Review Counts

Pricing

from $2.00 / 1,000 restaurant results

Go to Apify Store
OpenRice Scraper – HK Restaurants, Ratings & Review Counts

OpenRice Scraper – HK Restaurants, Ratings & Review Counts

Scrape OpenRice (Hong Kong's largest restaurant guide) without an API: name, district, cuisine, rating, review count, price range, address and phone. Bulk-paste keywords; export JSON/CSV/Excel. Great for site selection and F&B market research.

Pricing

from $2.00 / 1,000 restaurant results

Rating

0.0

(0)

Developer

Chad

Chad

Maintained by Community

Actor stats

1

Bookmarked

14

Total users

4

Monthly active users

4 days ago

Last modified

Share

OpenRice Scraper | Hong Kong Restaurant Data, Ratings & Cuisines (No API)

Scrape restaurant search listings from OpenRice Hong Kong (name, cuisine, district, rating, review count, address, phone, image URLs).

Notice (Oct 2026): the reviews mode (reviews) was discontinued. This Actor now only provides restaurant data (search mode). Runs that still send "mode": "reviews" fail immediately with an explanatory message — please switch to search mode.

  • Public JSON API — no login, no token, no browser required
  • The only stable option: the sole competitor on Apify Store has been stuck under UNDER_MAINTENANCE for a long time, with 30/38 runs timing out
  • Bulk keyword search: run multiple keywords in one job, with optional district / cuisine ID filters
  • Structured output: snake_case fields, missing values filled with null, every row stamped with an ISO 8601 timestamp

Output fields

search mode

FieldTypeDescriptionVersion
poi_idstringOpenRice restaurant unique IDv1.0
namestring | nullRestaurant name (Chinese)v1.0
cuisinestring[] | nullCuisine array (e.g. ["Japanese", "Sushi/Sashimi"])v1.0
districtstring | nullDistrict name (e.g. "Causeway Bay")v1.0
price_rangestring | nullPrice range: $ / $$ / $$$ / $$$$v1.0
ratingnumber | nullOpenRice overall rating (e.g. 3.87)v1.0
review_countinteger | nullNumber of reviewsv1.0
bookmark_countinteger | nullNumber of users who bookmarked the restaurantv1.0
addressstring | nullRestaurant address (Chinese)v1.0
phonestring | nullPhone number (first one)v1.0
opening_hoursstring | nullOpening hours as a JSON string (v1.1 will switch to a human-readable format)v1.0
image_urlsstring[]Array of restaurant image URLs ([] if none)v1.0
restaurant_urlstringFull URL of the OpenRice restaurant pagev1.0
source_modestringData source mode (currently "search")v1.0
source_querystringThe search keyword that produced this rowv1.0
scraped_atstringScrape timestamp (ISO 8601, UTC)v1.0


Modes

modeInputOutputBilling event
search (v1.0, default)keywords[] + optional district / cuisine filtersSearch listing resultssearch-listing ($0.002 per row)

Input parameters

ParameterTypeRequiredDefaultDescription
modestring—searchOnly search (find restaurants); reviews was discontinued in Oct 2026
keywordsstring[]search mode ✓—Search keywords (restaurant name / cuisine), up to 50
bulkInputstring——One keyword per line, auto-merged
districtstring——District ID (e.g. 1019 = Causeway Bay, see below)
cuisinestring——Cuisine ID (e.g. 2009 = Japanese, see below)
maxItemsinteger—50max results per keyword (1–2000)
proxyConfigurationobject—Apify datacenter proxyOn by default; without it the run shares egress IPs and OpenRice may return pages without data

Common district IDs

districtIdDistrict
1999Hong Kong Island (all)
1019Causeway Bay
1001Sheung Wan / Central
2999Kowloon (all)
2010Mong Kok
2001Tsim Sha Tsui
3999New Territories (all)

For the full list, call GET https://www.openrice.com/api/v2/metadata/region/all?uiLang=zh&uiCity=hongkong.

Common cuisine IDs

cuisineIdCuisine
1004Cantonese / HK-style
2009Japanese
4000Western
1007Chinese
2001Korean

Input examples

1. Search for sushi (default settings)

{
"keywords": ["sushi"],
"maxItems": 20
}

2. BBQ filtered to Central/Sheung Wan (districtId=1001)

{
"keywords": ["bbq"],
"district": "1001",
"maxItems": 20
}

3. Multiple keywords in one run

{
"keywords": ["japanese food", "korean bbq"],
"maxItems": 50
}

4. Japanese restaurants in Mong Kok (district + cuisine filter combined)

{
"keywords": ["sushi"],
"district": "2010",
"cuisine": "2009",
"maxItems": 30
}

5. Bulk-paste multiple keywords

{
"bulkInput": "sushi\nbbq\nhot pot\ncha chaan teng\ndim sum",
"maxItems": 30
}


Food & beverage market research

search mode suits delivery platforms and restaurant chains doing cuisine-distribution analysis, district-level competitor mapping and rating monitoring. Filter by district / cuisine and track each restaurant's rating and review count over time via poi_id.


Notes

  • Reliability is the selling point: the only competitor has been stuck UNDER_MAINTENANCE for a long time (30/38 runs timing out); this Actor uses a pure JSON API, no browser, and exponential-backoff retries — finishing the job is the whole point
  • Billing timing: Actor.charge() is only called after data has been successfully pushed to the dataset; failures mid-run are never billed
  • Consecutive empty-page detection: the run auto-stops if 5 consecutive pages return no new data, avoiding wasted compute
  • Reviews mode discontinued (Oct 2026): reviews are user-generated content and are no longer provided. The review_count field (number of reviews) is still included in restaurant data
  • detail mode (v1.1): OpenRice's POI detail API endpoint is not currently public — all probe requests return 404; will be added once found or reverse-engineered

FAQ

Q: Why are some fields null? A: Some OpenRice restaurant listings have incomplete data (e.g. no phone number, no address filled in). This Actor always fills missing values with null instead of dropping the field, so every row keeps a consistent structure.

Q: What format is opening_hours in? A: In v1.0 it's a JSON string containing per-day fields like dayOfWeek (1=Sunday, 2=Monday...7=Saturday), period1Start, period1End, is24hr, isClose, etc. v1.1 will switch to a human-readable format.

Q: Can I search a specific district only? A: Yes — fill in district with a districtId (e.g. 1019 = Causeway Bay). The full districtId list is available from the metadata API.

Q: Is proxy supported? A: Yes, both Apify Proxy and a custom proxy are supported; disabled by default since direct connections already scrape reliably.

Q: Does image_urls include all photos? A: It includes the restaurant's main photo (doorPhoto) plus the latest images returned in the search listing (usually 3-5). The full photo album requires detail mode (v1.1).

Q: Can I scrape review content? A: No. The reviews mode (reviews) was discontinued in Oct 2026; this Actor now only provides restaurant data. Sending "mode": "reviews" fails immediately with an explanatory message.

Q: Where do I find a restaurant ID? A: Run search mode — the poi_id field is the restaurant ID (it is also the digits after the trailing r in the restaurant page URL).


Deploy

npm install
npm run build
apify push

Local testing:

$apify run --input='{"keywords":["sushi"],"maxItems":5}'

Disclaimer

This tool is intended only for lawful research and analysis of publicly accessible data. Users must comply with OpenRice's Terms of Service, avoid mass scraping, avoid use for commercial competition, and avoid storing personal data. The author bears no responsibility for how users choose to use this tool.


OpenRice scraper, Hong Kong restaurants, HK dining data, restaurant ratings, cuisine search, OpenRice API, Hong Kong food data