Rakuten Travel Search Scraper (楽天トラベル) avatar

Rakuten Travel Search Scraper (楽天トラベル)

Pricing

from $1.05 / 1,000 property-listeds

Go to Apify Store
Rakuten Travel Search Scraper (楽天トラベル)

Rakuten Travel Search Scraper (楽天トラベル)

Scrape Rakuten Travel (楽天トラベル) hotel search results for any area and your dates. Just add area names, codes or URLs and get up to three priced plans per hotel with the stay total, per-person price, meals, payment method, points, rating, review count, features and image. $1.50 per 1,000 hotels.

Pricing

from $1.05 / 1,000 property-listeds

Rating

0.0

(0)

Developer

BonCross API

BonCross API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

What is Rakuten Travel Search Scraper (楽天トラベル)?

Pick a prefecture and your dates, and Rakuten Travel Search Scraper lists the hotels 楽天トラベル has there, each priced for your whole stay with tax. Every hotel comes with up to three plans (プラン) and their room, meals and payment terms. Rakuten Travel is one of Japan's largest domestic travel sites and part of the Rakuten points ecosystem, and you don't need a Rakuten account or an API key to read it this way.

Why it's worth choosing:

  • It covers the country in one run. All 47 prefectures at 60 hotels each returned 2,820 hotels in 21.5 seconds, every prefecture full.
  • The price is the stay, not a first night. You get the total, the nightly and the per-person figure with tax, and the same stay before consumption tax beside them.
  • Rakuten does the narrowing. Property type, luxury tier, 59 facilities and services, room type, nightly price and 10x points are applied by Rakuten itself, and a hotel your filters remove costs you nothing.
  • A daily watch can return only the hotels whose price moved. The ones that didn't move aren't charged.
  • $1.50 per 1,000 hotels on the Free plan and $1.05 on Business, plans included, with proxy usage and platform usage included.

BonCross Verified means we tested this actor against the live site before release and kept the record:

  • 47 of 47 live checks on its inputs and filters passed on 8 October 2026
  • 6 areas run on 7 October 2026: 90 hotels, none empty
  • Charges matched the rows

What else you can do with it:

  • Search a whole prefecture, one of Rakuten's areas inside it, or a pasted Rakuten search URL
  • Run a dated search for real availability, or an undated one for guide prices
  • Keep only hotels above a review score or review count, inside a stay-total band, with breakfast or dinner, or with refundable plans
  • Sort by Rakuten's recommendation, price, review score or room size
  • Read Rakuten points and the points rate on each plan
  • See Rakuten's luxury badge and which tier it is

People mostly use it to watch rates across a Japanese city, to compare their own stay totals with the domestic market, and to build supply lists by area and review score. It also shows how points campaigns and sale periods move prices, and how much of an area is still bookable on a date.

What hotel data comes back?

🏨 Hotel name and Rakuten hotel number🔗 Hotel URL and plan list URL
💴 Stay total, with and without taxPrice per night and per person
Up to three plans with names and ids🛏️ Room name, bed type and bath type
Smoking or non-smoking🍽️ Meals, with breakfast and dinner flags
💳 Payment terms on each planRakuten points and points rate on the plan
⭐ Review score out of 5Review count
Rooms left, where the site shows it🚉 Access description
Headline and feature tags🖼️ Hotel image
Prefecture, area and sub-area codes📈 Previous price and price change
Undated guide price per nightLuxury badge and its tier

How to scrape Rakuten Travel search results

You fill in a form and download a spreadsheet. There's no code involved.

  1. Sign up for Apify, which is free, and open Rakuten Travel Search Scraper.
  2. Type an area: a prefecture such as Kyoto, or a prefecture and one of Rakuten's areas such as "Kyoto 京都市". A pasted Rakuten search URL works too.
  3. Set your dates, adults, children and rooms. If dates don't matter, switch on "Undated search".
  4. Add filters or a sort, then press Start.
  5. Download the hotels as Excel or CSV, or as JSON, XML or HTML.

⬇️ Input

Start with the area. You can write it four ways:

  • a prefecture on its own: "Kyoto", "京都府" or "kyoto"
  • a prefecture followed by one of Rakuten's areas: "Kyoto 京都市" or "kyoto/shi"
  • an object such as { "prefecture": "Kyoto", "area": "京都市" }
  • a pasted Rakuten search URL

Area names are matched against the Japanese names Rakuten uses. If you give one it doesn't know, you get a row listing the areas Rakuten has for that prefecture, which is usually the quickest way to find the right spelling.

You have two limits. "Max hotels per area" (1 to 5,000, default 100) applies to each area separately: ten areas at 50 each returns 500. "Maximum results for the whole run" caps the run as a whole, 0 means no cap, and nothing past it is fetched or charged for.

Dates work either way round. Give a check-in and check-out, or leave them empty and use "Check-in days ahead" (default 30) with "Nights" (default 1), which is what you want on a schedule.

Search a city for fixed dates

{
"areas": ["Kyoto 京都市"],
"checkIn": "2026-11-17",
"checkOut": "2026-11-19",
"adults": 2,
"sort": "price_low_to_high",
"maxResultsPerArea": 100
}

Well-rated hotels with breakfast

{
"areas": [{ "prefecture": "Kyoto", "area": "京都市" }],
"checkInDaysAhead": 30,
"nights": 2,
"minReviewScore": 4,
"minReviewCount": 50,
"breakfastOnly": true,
"sort": "review_score"
}

Ryokan with an open-air bath and parking, under ¥40,000 a night

Property types are "any of", facilities are "all of", and the nightly price is per room, tax included.

{
"areas": ["Kyoto"],
"checkInDaysAhead": 30,
"nights": 1,
"propertyTypes": ["ryokan", "minshuku"],
"facilities": ["openAirBath", "parking"],
"maxPricePerNight": 40000
}

Rakuten's top-tier luxury hotels with a twin room

{
"areas": ["Tokyo 東京23区内"],
"checkInDaysAhead": 45,
"luxury": "highest",
"roomTypes": ["twin"]
}

An undated survey of two metros

{
"areas": ["Osaka", "Tokyo 東京23区内"],
"undated": true,
"sort": "review_score",
"maxResultsPerArea": 100
}

A daily price watch that returns only changes

{
"areas": ["kyoto/shi"],
"checkInDaysAhead": 30,
"nights": 1,
"priceStoreName": "rakuten-prices",
"onlyNewOrChanged": true
}

The filters the examples don't show:

  • "Rooms" (default 1) and "Children" (default none). Children are counted per room in Rakuten's own child categories, for example { "lowerElementary": 1 }.
  • "Minimum stay total" and "Maximum stay total" (JPY, 0 turns them off). Dated searches only. They drop plans cheaper or dearer than this for the whole stay.
  • "Minimum price per room per night" (JPY, 0 turns it off). Dated searches. This is Rakuten's own price floor, tax included, and the ceiling is the maximum shown above.
  • "Dinner included only" keeps plans with dinner (夕食あり) on a dated search. "Breakfast included only" does the same for breakfast.
  • "Refundable plans only" drops plans whose name carries 返金不可 (non-refundable), which is how Rakuten marks them.
  • "Required features" takes feature labels as Rakuten prints them, all required: 大浴場, 露天風呂, 駐車場.
  • "10x Rakuten points only" keeps properties offering ten times the usual points (ポイント10倍) on a dated search.

For developers

  • maxResultsPerArea is the per-area limit and maxItems the run-wide one. Rows that report an area the actor couldn't resolve aren't counted against maxItems.
  • When your filters keep few or none of the hotels, reading an area stops early: after a run of pages that kept nothing, when 20 or more pages have kept fewer than 0.15 a page, or at about three times the pages maxResultsPerArea needs.
  • minReviewScore at 4.0 or 4.5 uses Rakuten's own rating filter. Any other value is applied to the hotels the search returns, as are minReviewCount, the stay-total band, the meal flags, refundableOnly and features.
  • priceStoreName names the store that remembers each hotel's lowest price per stay. From the second run on it fills previousPriceTotal, priceChange, priceChangePct and previousScrapedAt, and onlyNewOrChanged then skips hotels whose price hasn't moved.
  • extraParams (default none) passes further Rakuten search filters through as they are, as name and value pairs copied from a Rakuten Travel search link.
  • maxConcurrency (default 16, from 1 to 32) is how many requests run at once across the run. delayMs (default 0, up to 10,000) adds a pause before each one. We'd leave both alone unless a run reports errors.
  • Lowercase checkin, checkout and checkinDaysAhead are accepted as well.

⬆️ Output

One record per hotel and stay, which you can read as a table or as JSON in the Output tab.

{
"area": "京都府",
"prefecture": "Kyoto",
"areaCodes": {
"area": "kyoto",
"subArea": null,
"detailArea": null
},
"id": "782",
"hotelId": 782,
"name": "メルキュール京都宮津リゾート&スパ",
"url": "https://travel.rakuten.co.jp/HOTEL/782/782.html",
"planListUrl": "https://hotel.travel.rakuten.co.jp/hotelinfo/plan/782?f_nen1…",
"rating": 4.09,
"ratingScale": 5,
"reviewCount": 4532,
"image": "https://trvimg.r10s.jp/share/image_up/782/origin/cd740544b01…",
"headline": "楽天トラベル 日本の宿アワード 2025TOP47受賞/オールインクルーシブで、ビールも楽しめるラウンジアクセス付!",
"access": "京都丹後鉄道「宮津駅」から車またはホテル送迎バスで約12分※9月15日より完全予約制/ 宮津天橋立ICから約15分",
"features": [
"露天風呂",
"大浴場"
],
"tags": [
"温泉宿"
],
"isPremium": false,
"premiumTier": null,
"providerUuid": "ce0633f2-6e07-4086-bc67-daf58411a585",
"guidePricePerNightExcludingTax": null,
"guidePricePerNight": null,
"priceTotal": 21600,
"pricePerNight": 21600,
"pricePerPerson": 10800,
"cheapestPlan": "【さき楽30】温泉と宿泊者限定ラウンジで寛ぐひととき シンプルステイ<素泊まり・ラウンジ付> クラシックツイン【ラウンジアクセス付】",
"pricesIncludeTax": true,
"priceTotalExcludingTax": 19637,
"pricePerNightExcludingTax": 19637,
"plans": [
{
"planId": 6168648,
"roomCode": "tfc",
"planName": "【さき楽30】温泉と宿泊者限定ラウンジで寛ぐひととき シンプルステイ<素泊まり・ラウンジ付> クラシックツイン【ラウンジアクセス付】",
"planUrl": "https://hotel.travel.rakuten.co.jp/hotelinfo/plan/782?f_camp…",
"bedType": "ツイン",
"bath": "バス・トイレ付",
"smoking": "non-smoking",
"meals": "朝食なし 夕食なし",
"isBreakfastIncluded": false,
"isDinnerIncluded": false,
"payment": "予約時オンラインカード決済・現地払い",
"roomNote": "シングルベッド2台、ソファベッド1台、TV、Wi-Fi、ケトル、冷蔵庫を完備、セーフティボックスを完備、布団不要の未就学児は2人まで。",
"priceTotal": 21600,
"pricePerNight": 21600,
"pricePerPerson": 10800,
"currency": "JPY",
"pricesIncludeTax": true,
"priceTotalExcludingTax": 19637,
"pricePerNightExcludingTax": 19637,
"isNonRefundable": false,
"points": 196,
"pointRate": 1,
"roomsLeft": null
}
],
"currency": "JPY",
"checkIn": "2026-11-05",
"checkOut": "2026-11-06",
"nights": 1,
"adults": 2,
"rooms": 1,
"previousPriceTotal": null,
"previousGuidePricePerNight": null,
"priceChange": null,
"priceChangePct": null,
"previousScrapedAt": null,
"scrapedAt": "2026-10-02T13:17:41.622Z"
}

Tax fields. pricesIncludeTax is true, on the row and on each plan, where the price is Rakuten's tax-included total. It's empty where a row has no price. priceTotalExcludingTax and pricePerNightExcludingTax give the same stay before consumption tax, as Rakuten states it. A local accommodation tax or hot spring tax the property collects on arrival isn't in either figure and has no amount on the site.

Undated rows. An undated search has no stay total. There the pair is guidePricePerNight (with tax) and guidePricePerNightExcludingTax (without), and pricesIncludeTax describes guidePricePerNight. Both guide fields stay empty on a dated search, which has no guide price.

Luxury badge. isPremium is true on hotels with Rakuten's luxury badge, and premiumTier says which: highest (最高級宿) or high (高級宿). The "Luxury properties" filter returns exactly these hotels.

How many hotels can you get, and how fast?

RunResultsTime
Kyoto, Osaka and Okinawa prefectures, 5 to 6 November, 2 adults, 150 per area450 hotels6 s
Kyoto prefecture, 5 to 6 November, 8 hotels8 hotels4 s
Kyoto city and Osaka (pasted URL), 17 to 19 November, 2 adults, cheapest first, rating 4 or better, 100 per area188 hotels, 167 with a priced plan, 57 filtered
Kyoto city, 2 nights, rating 4 or better60 hotels, 52 priced, out of 977 the site reported with vacancy in the area
Undated Osaka and Tokyo 23 wards by rating80 hotels, 79 with a guide price
All 47 prefectures, 12 to 13 November, 60 hotels each2,820 hotels, every prefecture at 6021.5 s
Kyoto and Osaka, rating 4.5 or better, 50 each100 hotels, every one rated 4.5 or more

The 47-prefecture run was measured on Apify on 3 October 2026 and works out at about 9,000 hotels a minute. At that rate a list of every hotel in Japan fits well inside one run. Where Rakuten lists a prefecture area by area (Tokyo, Hokkaido), the actor walks the areas for you, and every prefecture returns hotels.

Rakuten's pages hold 50 hotels and the per-area limit goes up to 5,000. A dated search checks real availability. An undated one returns guide prices.

How much does it cost?

EventFree planStarterScaleBusiness
actor-start, per run$0.002$0.002$0.002$0.002
destination-resolved, per area$0.002$0.002$0.002$0.002
property-listed, per hotel returned$0.0015$0.00135$0.0012$0.00105

Enterprise plans pay the Business price.

$1.50 per 1,000 hotels on the Free plan, $1.05 on Business, with the plans on each hotel included. That's the whole price: proxy usage and platform usage are in it. Hotels your filters remove are free, and so are unchanged hotels in an only-changes run.

  • One area, 100 hotels: 0.002 + 0.002 + 100 × 0.0015 = $0.154 ($0.109 on Business)
  • Five areas, 500 hotels: 0.002 + 5 × 0.002 + 500 × 0.0015 = $0.762 ($0.537 on Business)

The $5 of credits in Apify's Free plan each month is about 32 searches the size of the first example, or roughly 3,200 hotels, before you pay anything.

Limitations

  • You get at most three plans per hotel, because that's what Rakuten's search shows. Rakuten Travel Room Rates Scraper returns the full plan and room grid.
  • There's no structured refundability flag. Plans named 返金不可 are non-refundable and the rest follow the hotel's policy.
  • Names and texts are Japanese as the site prints them. Rakuten Travel publishes no English version of them.
  • Coordinates aren't on the search page. The Room Rates actor returns them with its hotel details.
  • Areas follow the site's tree of prefecture, area and optional sub-area. A station name isn't an area.
  • On a dated search, a hotel with nothing bookable for your dates is still listed, with priceTotal empty (11 of 50 rows in one measured run).
  • image is one thumbnail per hotel, and Rakuten supplies it for about the first 30 of each 50 hotels it lists. The rest have it empty.
  • "Price, high to low" is Rakuten's ranking by each hotel's dearest plans. The cheapest price shown on each row isn't in strict descending order.
  • There's no hotel class or official star rating on the search page. rating is the guest review score.
  • Room types, room features (views, bath and toilet, room size), the nightly price filter and 10x points apply to dated searches. An undated search ignores them.
  • The property type a hotel matched isn't printed on its card, and rows don't have it. Filter by it instead.

FAQ

Do I need proxies, a Rakuten account or an API key?

None of them. Proxy usage is included in the price and there's nothing to set up.

Why did my area return a list of area names?

The name didn't match one of Rakuten's areas for that prefecture, and the row lists the ones it has. Copy the Japanese name from that row into your input, after the prefecture: "Kyoto 京都市". Station names won't match, because Rakuten's tree stops at areas and sub-areas.

Is the price for the whole stay, and is tax in it?

It's the total for your whole stay and party, tax included, with the per-night and per-person figures beside it. If you need the figure before consumption tax, read priceTotalExcludingTax.

When you want a survey and exact dates don't matter. It lists hotels with Rakuten's guide minimum price per night and doesn't check availability. For a price someone could actually book, give dates.

Rakuten still lists a hotel that has nothing bookable for your dates. Those rows have priceTotal empty and no plans. Counting them against the priced ones is a quick read on how full an area is.

How do I get only the hotels whose price changed?

Give "Price memory store" a name, switch on "Only new or changed", and put the run on an Apify Schedule with "Check-in days ahead". From the second run you get only what moved, with the previous price and the change on each row.

Can I get every plan for a hotel, or its reviews?

Search stops at three plans. For the rest, pass the hotel numbers from this dataset to Rakuten Travel Room Rates Scraper. Guest reviews with eight category scores come from Rakuten Travel Reviews Scraper.

Scraping publicly available data is generally legal. This actor reads only what the site serves to any logged-out visitor. You're responsible for complying with Rakuten's terms and applicable law in how you use the data.

Schedules, the API and AI agents

A rolling price watch is the setup we'd suggest: an Apify Schedule, "Check-in days ahead" in place of fixed dates, and a price memory store. A webhook can fire when a run ends, and the hotels can go on to Google Sheets, Slack, Zapier, Make or Airbyte through Apify's integrations.

From code, POST https://api.apify.com/v2/acts/boncross~rakuten-travel-search/run-sync-get-dataset-items with the input JSON returns the hotels in one call for small runs. Use the asynchronous run endpoint for larger ones. There are apify-client packages on NPM and PyPI.

For an AI agent, add the Apify MCP server (mcp.apify.com) to Claude, Cursor, ChatGPT or another MCP client. The actor appears as a tool named boncross/rakuten-travel-search, and the agent can look up Japanese hotels for given dates.

More from BonCross

Your feedback

Is an area not resolving, or a price that doesn't match what 楽天トラベル shows? Open an issue on the Issues tab in Apify Console. We read every one and reply there.