Rakuten Travel Scraper: Japan Hotels, Rates & Reviews
Pricing
from $1.20 / 1,000 hotel records
Rakuten Travel Scraper: Japan Hotels, Rates & Reviews
Scrape Rakuten Travel, Japan's largest domestic hotel-booking site, by prefecture, keyword or URL. Every row carries name, rating, review count, lowest price and access, with optional details: address, phone, facilities, policies, photos and reviews. No API key needed.
Pricing
from $1.20 / 1,000 hotel records
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape Rakuten Travel (travel.rakuten.co.jp), Japan's largest domestic hotel-booking site, into clean structured rows. Search by prefecture, run the site's own keyword search, or paste hotel, area, keyword-results or day-use listing URLs you already have. Every row carries name, rating, review count, lowest price, catch copy and access, and can be enriched from the hotel's own pages: address, phone, check-in times, facilities, credit cards, cancellation policies, photos, the review summary and individual review texts.
Built for price monitoring, market research, inventory tracking and review mining across all 47 prefectures. No API key, no application registration, no account needed: the actor reads the site's own public pages directly.
Why This Scraper?
- Around 40 fields per hotel, from the listing card through full detail and review pages
- Three input modes: prefecture walk, keyword search, or any pasted hotel, area, keyword-results or day-use URL
- The site's own server-side price and review sorts, plus client-side price bounds and a minimum rating filter
- Review mining: overall score, per-category averages (room, service, location, meals, bath), star histogram and review texts
- Resume and incremental modes for daily scheduled monitoring of the same scope, returning only what changed
- Covers all 47 prefectures of the site's own area tree, with the declared result totals respected page by page
- Bilingual input: Japanese prefecture names (東京, 北海道) and romaji (tokyo, hokkaido) both work
Data You Get
Sample shape: values are illustrative placeholders, not from a live hotel.
| Field | Example value |
|---|---|
hotelNo | 0000000 |
name | Sample Seaside Hotel |
url | https://travel.rakuten.co.jp/HOTEL/0000000/0000000.html |
ratingValue | 4.2 |
reviewCount | 1200 |
minPriceYen | 8000 |
minPriceTaxIncludedYen | 8800 |
catchcopy | A sample one line catch copy from the listing card |
access | Sample station: 5 min on foot |
thumbnailUrl | https://trvimg.r10s.jp/share/image_up/0000000/sample.jpg |
address | 〒000-0000 Sample prefecture Sample city 1-2-3 |
phoneNumber | 000-000-0000 |
checkInTime | 15:00〜19:00 |
checkOutTime | 10:00 |
parking | Available, 50 cars |
facilities | ["Restaurant", "Large bath", "Non-smoking rooms"] |
cancellationPolicy | Cancellation terms as printed on the page |
description | Full property description text when details are on |
ratingSummary | {"overallScore": 4.2, "reviewCount": 1200, "categoryAverages": {"ROOM": 4.1}} |
reviews | [{"title": "Sample review title", "comment": "Sample review text", "score": 5}] |
reviewsTotal | 1200 |
changeType | NEW |
changedFields | ["minPriceYen"] |
How to Use
Search one prefecture, with full details (default):
{"mode": "search","locations": ["東京"],"maxItems": 20}
Prefecture walk with the site's own price sort, keyword searches and price bounds:
{"mode": "search","locations": ["大阪", "kyoto"],"keywords": ["温泉 箱根"],"sortBy": "price_low","minPriceYen": 6000,"maxPriceYen": 25000,"minRating": "3.5","maxItems": 60}
Paste hotel URLs for exact fetches (reviews included):
{"mode": "url","urls": ["https://travel.rakuten.co.jp/HOTEL/0000000/0000000.html","https://travel.rakuten.co.jp/HOTEL/0000001/0000001.html"],"fetchReviews": true,"maxItems": 10}
Daily price watch of one prefecture (incremental mode returns only changes after the first run):
{"mode": "search","locations": ["沖縄"],"maxItems": 0,"incrementalMode": true,"stateKey": "okinawa-watch"}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | select | search | search walks prefecture area pages and keyword results; url processes pasted URLs. |
locations | array | ["東京"] | Prefecture words (Japanese or romaji) matched against the site's 47-prefecture area tree. Search mode only. |
keywords | array | [] | Keyword searches run on the site's own search, following the site's own results pager (about 30 hotels per page). Search mode only. |
urls | array | [] | Hotel URLs (one hotel each), or area /yado/, /ds/yado/, keyword-results and day-use listing URLs (walked like a search). URL mode only. |
sortBy | select | recommended | The site's server-side order of each prefecture walk: recommended, price low/high, review score. Search mode, area walks only. |
minPriceYen | integer | - | Keep rows at or above this price in yen. Both modes. |
maxPriceYen | integer | - | Keep rows at or below this price in yen. Both modes. |
minRating | string | - | Keep rows whose review score is at least this (for example 4.0). Both modes. |
sortResultsBy | select | site_order | Reorder this run's collected rows after the read. Both modes. |
fetchDetails | boolean | true | Read each hotel's own page for address, phone, check-in times, facilities, policies and photos. Adds the per-hotel detail enrichment charge. |
fetchReviews | boolean | false | Also read the review page: summary, per-category averages and review text. Covered by the same enrichment charge. |
maxReviews | integer | 20 | Maximum review rows per hotel when fetchReviews is on. 0 = all available reviews. The enrichment event is charged once for each started block of 10 returned review rows. |
maxItems | integer | 20 | The single output cap across all sources. 0 = unlimited. |
maxPages | integer | 0 | Safety bound on listing pages per source. 0 = no page limit. |
resumeFromRunId | string | - | Continue one interrupted run: skip records that run already collected. |
incrementalMode | boolean | false | Scheduled monitoring: return only NEW, UPDATED and REAPPEARED records against the previous run of the same scope. |
stateKey | string | - | Optional name for an incremental monitoring campaign. |
emitUnchanged | boolean | false | Also return UNCHANGED rows (billed). |
emitExpired | boolean | false | Also return EXPIRED rows after a complete scan (billed). |
proxy | object | standard proxy | The default standard Apify proxy serves every page this actor reads. |
mcpConnectors | array | [] | Optional MCP connector IDs for the condensed result export. |
notionParentPageUrl | string | - | Optional Notion parent page URL for the MCP export. |
maxNotifyListings | integer | 50 | Maximum condensed records sent to MCP connectors per run. |
Output Example
Sample shape: values are illustrative placeholders, not from a live hotel.
{"recordId": "0000000","hotelNo": "0000000","rowType": "hotel","url": "https://travel.rakuten.co.jp/HOTEL/0000000/0000000.html","name": "Sample Seaside Hotel","ratingValue": 4.2,"reviewCount": 1200,"minPriceYen": 8000,"minPriceTaxIncludedYen": 8800,"catchcopy": "A sample one line catch copy from the listing card","access": "Sample station: 5 min on foot","position": 3,"searchSource": "東京","address": "〒000-0000 Sample prefecture Sample city 1-2-3","phoneNumber": "000-000-0000","faxNumber": "000-000-0001","checkInTime": "15:00〜19:00","checkOutTime": "10:00","parking": "Available, 50 cars","totalRooms": 120,"facilities": ["Restaurant", "Large bath", "Non-smoking rooms"],"roomAmenities": ["TV", "Refrigerator", "Hair dryer"],"creditCards": ["VISA", "Master Card"],"meals": ["[Breakfast] Restaurant"],"cancellationPolicy": "Sample cancellation terms from the hotel page","description": "Sample full property description.","photoUrls": ["https://trvimg.r10s.jp/share/image_up/0000000/sample.jpg"],"ratingSummary": {"overallScore": 4.2,"reviewCount": 1200,"categoryAverages": {"ROOM": 4.1, "BREAKFAST": 4.3},"starHistogram": {"FIVE": 500, "FOUR": 400}},"reviews": [{"reviewId": "000000","title": "Sample review title","comment": "Sample review text.","postedAt": "2026-01-01T00:00:00Z","score": 5,"nickname": "SampleNick","stayDate": "2026-01-01","planName": "Sample plan name"}],"reviewsTotal": 1200,"scrapedAt": "2026-01-01T00:00:00Z","changeType": "NEW","changedFields": [],"firstSeenAt": "2026-01-01T00:00:00Z","lastSeenAt": "2026-01-01T00:00:00Z"}
Send results into your apps (MCP connectors)
Optionally pipe this actor's results into the apps you already use with MCP
connectors: authorize one under Apify, Settings, API & Integrations, then
select it in the mcpConnectors input and set notionParentPageUrl for
Notion. Each connector receives a condensed summary per record (a title plus
key fields flattened to text, maxNotifyListings per run), not the full
record; the complete record always stays in the Apify dataset. Leave the
inputs empty and nothing changes: the export never runs and the dataset
output is identical.
Plan Requirement
- Works on any Apify plan, including the free tier. Per-event pricing is shown on the actor page before a run.
- Prices are the site's publicly displayed lowest rates for its default availability window, in Japanese yen; a rate move between scheduled runs classifies as UPDATED in incremental mode.
- Keyword searches follow the site's own results pager (about 30 hotels per page). Prefecture walks follow the site's own pager, 30 hotels per page.
- The keyword results page is served in the site's legacy Japanese text encoding; the actor encodes your keywords and decodes the page for you.
- A run needs no account and no API registration on any surface it reads.