OpenRice Scraper – Hong Kong Restaurants, Ratings & Reviews
Pricing
from $2.00 / 1,000 restaurant results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
OpenRice Scraper | Hong Kong Restaurant Data, Ratings, Districts & Cuisines (No API)
Scrape restaurant search listings from OpenRice Hong Kong, including restaurant name, cuisine, district, rating, review count, address, phone number, image URLs and more.
- 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_MAINTENANCEfor 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
| Field | Type | Description | Version |
|---|---|---|---|
poi_id | string | OpenRice restaurant unique ID | v1.0 |
name | string | null | Restaurant name (Chinese) | v1.0 |
cuisine | string[] | null | Cuisine array (e.g. ["Japanese", "Sushi/Sashimi"]) | v1.0 |
district | string | null | District name (e.g. "Causeway Bay") | v1.0 |
price_range | string | null | Price range: $ / $$ / $$$ / $$$$ | v1.0 |
rating | number | null | OpenRice overall rating (e.g. 3.87) | v1.0 |
review_count | integer | null | Number of reviews | v1.0 |
bookmark_count | integer | null | Number of users who bookmarked the restaurant | v1.0 |
address | string | null | Restaurant address (Chinese) | v1.0 |
phone | string | null | Phone number (first one) | v1.0 |
opening_hours | string | null | Opening hours as a JSON string (v1.1 will switch to a human-readable format) | v1.0 |
image_urls | string[] | Array of restaurant image URLs ([] if none) | v1.0 |
restaurant_url | string | Full URL of the OpenRice restaurant page | v1.0 |
source_mode | string | Data source mode (currently "search") | v1.0 |
source_query | string | The search keyword that produced this row | v1.0 |
scraped_at | string | Scrape timestamp (ISO 8601, UTC) | v1.0 |
Modes
| mode | Input | Output | Billing event |
|---|---|---|---|
search (v1.0) | keywords[] + optional district / cuisine filters | Search listing results | search-listing ($0.002 per row) |
detail (v1.1, in development) | restaurantIds[] or restaurantUrls[] | Full restaurant detail | product-detail |
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
keywords | string[] | ✓ | — | Search keywords (restaurant name / cuisine), up to 50 |
bulkInput | string | — | — | One keyword per line, automatically merged into keywords |
district | string | — | — | District ID (e.g. 1019 = Causeway Bay, see below) |
cuisine | string | — | — | Cuisine ID (e.g. 2009 = Japanese, see below) |
maxItems | integer | — | 50 | Max results per keyword (1-500) |
proxyConfiguration | object | — | disabled | Apify Proxy or a custom proxy |
Common district IDs
| districtId | District |
|---|---|
| 1999 | Hong Kong Island (all) |
| 1019 | Causeway Bay |
| 1001 | Sheung Wan / Central |
| 2999 | Kowloon (all) |
| 2010 | Mong Kok |
| 2001 | Tsim Sha Tsui |
| 3999 | New Territories (all) |
For the full list, call GET https://www.openrice.com/api/v2/metadata/region/all?uiLang=zh&uiCity=hongkong.
Common cuisine IDs
| cuisineId | Cuisine |
|---|---|
| 1004 | Cantonese / HK-style |
| 2009 | Japanese |
| 4000 | Western |
| 1007 | Chinese |
| 2001 | Korean |
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}
Notes
- Reliability is the selling point: the only competitor has been stuck
UNDER_MAINTENANCEfor 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
detailmode (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: A reviews mode is planned for v1.1 and is not yet implemented.
Deploy
npm installnpm run buildapify 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