OpenRice Scraper – Hong Kong Restaurants, Ratings & Reviews avatar

OpenRice Scraper – Hong Kong Restaurants, Ratings & Reviews

Pricing

from $2.00 / 1,000 restaurant results

Go to Apify Store
OpenRice Scraper – Hong Kong Restaurants, Ratings & Reviews

OpenRice Scraper – Hong Kong Restaurants, Ratings & Reviews

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

5

Total users

1

Monthly active users

8 hours ago

Last modified

Share

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

Scrape restaurant search listings from OpenRice Hong Kong (name, cuisine, district, rating, review count, address, phone, image URLs) and the full reviews of individual restaurants (rating, sentiment, text, recommended dishes, spend per head).

  • 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

reviews mode

FieldTypeDescription
review_idinteger | nullReview ID
restaurant_idstringRestaurant POI ID
authorstring | nullReviewer nickname
ratingnumber | nullReview rating (0–5, one decimal)
sentimentstring | nullsmile / ok / cry
score_tastenumber | nullTaste score (1–5)
score_environmentnumber | nullEnvironment score (1–5)
score_servicenumber | nullService score (1–5)
score_hygienenumber | nullHygiene score (1–5)
score_valuenumber | nullValue-for-money score (1–5)
titlestring | nullReview title
contentstring | nullReview text (BBCode stripped, line breaks kept)
content_rawstring | nullOriginal text incl. OpenRice BBCode
languagestring | nullLanguage code (e.g. hk)
price_per_headnumber | nullSpend per head
price_typeinteger | nullSpend type code
meal_datestring | nullMeal date
dining_methodinteger | nullDining method code
like_countinteger | nullLikes
dislike_countinteger | nullDislikes
photo_countinteger | nullNumber of photos
comment_countinteger | nullNumber of comments
view_countinteger | nullViews
recommended_dishesstring[]Recommended dishes ([] if none)
is_editor_choiceboolean | nullEditor's choice
created_atstring | nullReview publish time
review_urlstringReview short link (falls back to the restaurant's reviews page)
source_modestringAlways "reviews"
source_querystringThe restaurant ID that produced this row
scraped_atstringScrape timestamp (ISO 8601, UTC)

Modes

modeInputOutputBilling event
search (v1.0, default)keywords[] + optional district / cuisine filtersSearch listing resultssearch-listing ($0.002 per row)
reviews (v1.1)restaurantIds[] or restaurantUrls[]Restaurant reviewsreview-item ($0.003 per review)

Input parameters

ParameterTypeRequiredDefaultDescription
modestringsearchsearch (find restaurants) or reviews (fetch reviews)
keywordsstring[]search mode ✓Search keywords (restaurant name / cuisine), up to 50
bulkInputstringOne keyword per line (search) or one restaurant ID/URL per line (reviews), auto-merged
restaurantIdsstring[]reviews mode ✓ (one of three)Restaurant IDs — the digits after the trailing r in the URL (e.g. 808150)
restaurantUrlsstring[]reviews mode ✓ (one of three)Restaurant page URLs; the trailing r{digits} is extracted as the ID
districtstringDistrict ID (e.g. 1019 = Causeway Bay, see below; search mode only)
cuisinestringCuisine ID (e.g. 2009 = Japanese, see below; search mode only)
maxItemsinteger50search: max results per keyword; reviews: max reviews per restaurant (1–2000)
proxyConfigurationobjectApify datacenter proxyOn by default; without it the run shares egress IPs and the reviews page may come back 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
}

6. Reviews of one restaurant (reviews mode)

{
"mode": "reviews",
"restaurantIds": ["808150"],
"maxItems": 100
}

Food & beverage market research

reviews mode returns individual reviews (rating, sentiment, taste/environment/service/hygiene/value sub-scores, recommended dishes, spend per head) — built for delivery platforms and restaurant chains doing dish-trend analysis, competitor rating monitoring and consumer research. Suggested flow: use search mode to find target restaurants by keyword or district, note their poi_id, then feed those IDs into restaurantIds and run reviews mode.


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
  • 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: Yes — set "mode": "reviews" with restaurantIds or restaurantUrls to fetch a restaurant's full reviews (rating, sentiment, text, recommended dishes and more).

Q: Where do I find a restaurant ID? A: Open any OpenRice restaurant page — the URL ends with r{digits} (e.g. 808150 in .../r-milu-thai-tsim-sha-tsui-thai-r808150). Or run search mode first: the poi_id field is the restaurant ID. You can also paste full restaurant URLs into restaurantUrls and the Actor extracts the ID.


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, OpenRice reviews, review scraper