ikyu.com Room Rates Scraper (一休)
Pricing
from $2.10 / 1,000 hotel-priceds
ikyu.com Room Rates Scraper (一休)
Scrape each room and rate plan ikyu.com (一休) sells for a hotel or ryokan on your dates. Just add hotel URLs, ids or names and get stay and nightly prices in JPY and your currency, list price, meals, points, rooms left, cancellation, room size, beds and images. $3.50 per 1,000 priced hotel-stays.
Pricing
from $2.10 / 1,000 hotel-priceds
Rating
0.0
(0)
Developer
BonCross API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
What is ikyu.com Room Rates Scraper (一休)?
ikyu.com Room Rates Scraper returns the full list of rooms and plans (プラン) a hotel or ryokan sells on ikyu.com (一休) for your dates, with the price, meals and cancellation terms of each one. Paste hotel URLs, 8-digit ikyu ids or hotel names, set the stay, and press Start. One night at Hotel Granvia Kyoto came back as 18 room types, 20 plans and 96 rates.
What you get here that a cheapest-price list can't tell you:
- The whole grid, at one price per stay. A stay costs $0.0035 on the Free plan whether it holds 20 rates or 96.
- Cancellation you can act on. Each rate has its last free-cancellation date and the charge ladder after it. The windows are short and differ by hotel: two days before arrival at one Kyoto hotel we measured, four at another.
- Meals as data. Breakfast and dinner are two true-or-false columns beside ikyu's wording, and you can keep only plans with either.
- A price for the party you actually have. With one 8-year-old added, a hotel's lowest rate went from ¥23,330 to ¥32,561 and its 11 rates became 6, because plans that don't take children drop out.
- A sold-out date is still an answer. You get a row that says so, for $0.0005.
BonCross Verified means we tested this actor against the live site before release and kept the record:
- 40 of 40 live checks on its inputs and filters passed on 7 October 2026
- 5 hotels run the same day on 2 stays each: 6 stays priced, 2 sold out, 1 name not found
- Charges matched the rows
- A sold-out stay, or one your filters empty, gets a row that says so
And the rest, in short:
- Price several stays for the same hotels in one run, up to 366 date ranges
- Read the crossed-out list price, the discount, ikyu points and rooms left on each rate
- Get room size, capacity, bed sizes and photos for each room type
- Add plan details for the cheapest rates: payment option, where and when meals are served, child pricing by age group, minimum and maximum nights
- Add the hotel's address, coordinates, access, hot spring, parking and aspect ratings at no extra charge
- Choose one row per hotel and stay, or one row per rate for a spreadsheet
- Watch a set of hotels daily and get back only the stays whose lowest price moved
What data do you get for each rate (プラン)?
| 🏨 Hotel name, id and URL | 🛏️ Room type name, type and images |
| Room size in square metres | Minimum and maximum capacity |
| Bed configuration | Plan name and plan id |
| 💴 Stay total and nightly price in JPY, tax included | Same prices in your currency |
| ♨️ Hot spring tax already in each rate | Tax-inclusive flag |
| List price and discount percentage | ikyu points and point rate |
| 🍽️ Meal plan, with breakfast and dinner flags | Rooms left on each plan |
| Free cancellation status and last free date | Charge ladder and no-show charge |
| 🕒 Plan check-in and check-out times | Grid size: room types, plans, rates |
| Lowest total, lowest refundable and lowest with breakfast | Previous lowest price and change |
| 📍 Address, coordinates and access | Hot spring, amenities, parking, pets and children policy |
How to scrape ikyu.com room rates
- Sign up for Apify, which is free, and open ikyu.com Room Rates Scraper.
- Paste your hotels, one per line. An ikyu URL such as
https://www.ikyu.com/en-us/00000146/works, and so does the id00000146or the hotel's name in English or Japanese. - Set the dates, adults and rooms. If you want prices in another currency beside the yen, pick it.
- Press Start, then download the grid as Excel, CSV or JSON.
If you don't have the hotels yet, ikyu.com Search Scraper (一休) lists the properties in an area with their ids.
⬇️ Input
All it needs is a hotel. With nothing else set, you get one night for two adults in one room, 30 days from today, in yen, as one record per hotel with its room types and rates nested inside.
A long list of links can go in "Start URLs (bulk upload)" as a file, a Google Sheet or a remote list. It's combined with whatever you typed under Hotels. Dates and guests inside a pasted ikyu URL are honoured.
There are two run-wide limits, and they count different things. "Maximum hotel-stays for the whole run" counts priced stays: one hotel on one set of dates, with all its rooms and plans. "Maximum rows for the whole run" counts rows. The run stops at whichever it reaches first, and 0 switches a limit off. When the row limit falls partway through a stay, you get that stay's cheapest plans up to the limit, and it's billed as one stay.
One hotel on fixed dates, with prices in dollars too
{"hotels": ["https://www.ikyu.com/en-us/00000146/"],"checkIn": "2026-11-20","checkOut": "2026-11-22","adults": 2,"currency": "USD"}
Ryokan by name, dinner plans only, with hotel details
{"hotels": ["Hiiragiya", "俵屋旅館", "00000284"],"checkInDaysAhead": 45,"nights": 1,"dinnerOnly": true,"includeHotelDetails": true,"language": "ja"}
Two hotels over two stays, one row per rate
{"hotels": ["00000146", "00000630"],"stays": [{ "checkIn": "2026-11-20", "checkOut": "2026-11-22" },{ "checkIn": "2026-12-24", "checkOut": "2026-12-26" }],"flattenRooms": true,"freeCancellationOnly": true}
A daily watch that returns only the stays that changed
{"hotels": ["00000146", "00000284", "00000630"],"checkInDaysAhead": 30,"nights": 1,"priceStoreName": "ikyu-grid","onlyNewOrChanged": true}
| Field | Notes |
|---|---|
hotels, startUrls | ikyu URLs, 8-digit ids or names, typed or loaded in bulk. |
maxItems, maxRows | Run-wide caps on priced hotel-stays and on rows. Both default to 0, no cap. |
maxRowsPerStay | With one row per rate, the most rows kept per stay, cheapest first. Default 300, which is also the maximum. |
checkIn, checkOut | Fixed dates, YYYY-MM-DD. |
checkInDaysAhead, nights | Used when the dates are empty. Defaults 30 and 1. |
stays | Several date ranges for the same hotels, up to 366 a run. |
adults, rooms, childrenAges | Adults per room (default 2), rooms (default 1) and one age per child, 0 to 12. |
freeCancellationOnly, breakfastOnly, dinnerOnly | Keep only plans still free to cancel today, or with that meal. |
minPerNight, maxPerNight | A nightly price band per room, in the selected currency. 0 is off. |
includePlanDetails, planDetailsPerStay | Plan details for each stay's cheapest rates (default 5, and 0 means every rate). |
includeHotelDetails | The hotel's address, coordinates, times, amenities and images. No extra charge. |
maxRatesPerRoom | How many rate plans come back per room type, cheapest first. Default 30, up to 100. |
flattenRooms | One row per rate plan, with the hotel and stay fields repeated. |
currency, language | JPY by default, and yen prices are always included. en (default) or ja. |
priceStoreName, onlyNewOrChanged | The price memory for scheduled runs, and the switch that returns only changed stays. |
maxConcurrency, delayMs | Parallel requests (default 8) and an optional pause before each one (default 0). |
For developers
maxItemscounts priced hotel-stays. Sold-out and unchanged stays aren't counted.maxRowscounts rows, and withflattenRoomsa row is one room and rate plan.maxRatesPerRoomcaps the rate plans under each room type. The default of 30 covered every hotel we measured. If a hotel publishes more than your setting on one room, the run log says so.includePlanDetailsmakes one extra request per rate, for the cheapestplanDetailsPerStayrates of each stay. It isn't spent on sold-out or unchanged stays.childrenAgesmaps to ikyu's age groups: 10 to 12 and 6 to 9 are priced as primary-school children, under 6 as an infant with meals and bedding.priceStoreNamenames a key-value store that remembers the lowest nightly price per hotel, stay, occupancy and currency. The next run fillspreviousLowestPerNight,priceChangeandpriceChangePct. WithonlyNewOrChanged, a stay whose lowest price hasn't moved writes no row.staysacceptscheckIn/checkOutor lowercasecheckin/checkout. It replacescheckInandcheckOutwhen set. Lowercasecheckin,checkoutandcheckinDaysAheadwork at the top level too.maxConcurrencyruns from 1 to 32 anddelayMsup to 10,000. The defaults are the fastest we measured without errors.- Rows are written in the order of your hotels and stays. A run Apify restarts part-way picks up where it stopped, and no stay is delivered or charged twice.
⬆️ Output
One record per hotel and stay, holding its room types and the rates on each. With "One row per rate plan" switched on, each rate is its own row and the hotel and stay fields repeat.
This is Hotel Granvia Kyoto for one night, from a run on 7 October 2026. The real record has 18 room types and 96 rates. It's shortened here to the first room type, its first rate and two of its six photos:
{"input": "00000146","id": "00000146-2027-01-15-2027-01-16","hotelId": "00000146","hotelName": "Hotel Granvia Kyoto","url": "https://www.ikyu.com/en-us/00000146/","checkIn": "2027-01-15","checkOut": "2027-01-16","nights": 1,"adults": 2,"rooms": 1,"currency": "JPY","totalRoomTypes": 18,"totalPlans": 20,"rateCount": 96,"isAvailable": true,"lowestTotalJpy": 19144,"lowestPerNightJpy": 19144,"lowestTotal": 19144,"lowestPerNight": 19144,"pricesIncludeTax": true,"lowestHotSpringTaxIncludedJpy": 0,"lowestRoom": "Standard 【Non-Smoking】","lowestPlan": "[Early Bird 60] Book at least 60 days in advance for an even better deal! (No meals included)","lowestMeal": "No meals","lowestFreeCancellationPerNightJpy": 19144,"lowestBreakfastPerNightJpy": 29736,"pointRate": 15,"mealFacets": [{ "meal": "No meals", "mealCode": "000", "count": 11 },{ "meal": "Breakfast included", "mealCode": "001", "count": 18 },{ "meal": "Dinner included", "mealCode": "002", "count": 0 },{ "meal": "Dinner and Breakfast included", "mealCode": "003", "count": 6 },{ "meal": "Breakfast and Lunch included", "mealCode": "004", "count": 0 },{ "meal": "Lunch included", "mealCode": "005", "count": 0 },{ "meal": "Full board", "mealCode": "006", "count": 0 },{ "meal": "Lunch and Dinner included", "mealCode": "007", "count": 0 }],"previousLowestPerNight": null,"priceChange": null,"priceChangePct": null,"previousScrapedAt": null,"scrapedAt": "2026-10-07T13:46:35.419Z","roomTypes": [{"roomId": "10030272","name": "Standard 【Non-Smoking】","type": "Twin","sizeSqm": 30,"sizeSqmTo": null,"floorPlan": null,"floors": null,"capacity": {"min": 1,"max": 3},"beds": [{"count": 2,"sleeps": 1,"widthCm": 115,"lengthCm": null}],"checkInFrom": "15:00","checkInUntil": "24:00","checkOutUntil": "12:00","renewalDate": null,"images": [{"url": "https://www.img-ikyu.com/contents/common/image/acc6/00000146/1/org/11189370.jpg","alt": "Standard Twin (30 sqm) (Image)"},{"url": "https://www.img-ikyu.com/contents/common/image/acc6/00000146/1/org/11547068.jpg","alt": "Unit bus type"}],"attributeCodes": ["20", "6", "30", "28", "9", "29"],"rates": [{"planId": "11539639","plan": "[Early Bird 60] Book at least 60 days in advance for an even better deal! (No meals included)","planImages": ["https://www.img-ikyu.com/contents/common/image/acc6/00000146/0/org/13235400.jpg"],"meal": "No meals","mealCode": "000","isBreakfastIncluded": false,"isDinnerIncluded": false,"sale": "USUALLY","memberRankRequired": null,"isLimitedTwoWeeks": false,"isBookableStartSoon": false,"isBookableEndSoon": false,"planCheckInFrom": null,"planCheckInUntil": null,"planCheckOutUntil": null,"priceTotalJpy": 19144,"pricePerNightJpy": 19144,"priceListedTotalJpy": 25024,"baseDiscountPercent": 10,"discountPercent": 23.5,"currency": "JPY","priceTotal": 19144,"pricePerNight": 19144,"pricesIncludeTax": true,"hotSpringTaxIncludedJpy": 0,"points": 3378,"pointRate": 15,"instantPoints": 3378,"roomsLeft": 11,"nights": 1,"adults": 2,"roomCount": 1,"priceTotalEarnPointsJpy": 22522,"children": {},"isOccupancyAsRequested": true,"isFreeCancellation": true,"freeCancellationUntil": "2027-01-13","freeCancellationDaysBefore": 2,"ladder": [{"daysBefore": 1,"chargePercent": 20,"charge": null},{"daysBefore": 0,"chargePercent": 80,"charge": null}],"noShowChargePercent": 100}]}]}
Reading the prices. They're ikyu's public rates per room, for the whole stay and the party you asked for. priceTotalJpy is the headline price, with the stay's points spent at once, which is how ikyu shows it. priceTotalEarnPointsJpy is the price if you earn the points instead. pricesIncludeTax is true on every rate, and on the hotel-stay row where it describes the lowest rate: ikyu quotes consumption tax and service charge inside the price. hotSpringTaxIncludedJpy (lowestHotSpringTaxIncludedJpy for the lowest rate) is the hot spring tax already inside the price, in yen for the stay, and 0 where the plan isn't sold with it included. A local accommodation tax, or a bathing tax the property collects on arrival, isn't in the price and has no amount in the data.
id names the hotel and the stay, and the same hotel over several date ranges gives rows that don't collide. With one row per rate, the id includes the room and plan ids as well.
isOccupancyAsRequested matters more than it looks. ikyu will quietly price a different party when it can't price the one you asked for. Each rate records the nights, adults and rooms ikyu priced, and this flag is false on any rate where they differ from your request.
More columns on each rate:
| Field | What it holds |
|---|---|
planImages | The plan's own photo URLs. An empty list when it has none |
sale | ikyu's sale status code for the plan (for example USUALLY for a regular plan). Null when not given |
memberRankRequired | The ikyu membership rank the plan is restricted to. Null for a plan open to everyone |
isLimitedTwoWeeks | true when ikyu flags the plan as limited to a two-week window |
isBookableStartSoon / isBookableEndSoon | true when the plan's booking window opens soon / closes soon |
planCheckInFrom / planCheckInUntil / planCheckOutUntil | Check-in and check-out times set by this plan, where they differ from the hotel's. Null when the plan uses the hotel's times |
baseDiscountPercent | The discount rate ikyu shows on the plan, in percent. Null when there is none |
instantPoints | Points applied at once for this rate. Null when not given |
roomCount | The number of rooms the rate was priced for |
With plan details on, the cheapest rates of each stay add planNotes and planContent (the plan's notes and description), paymentOption (for example "card online only" or "pay at the hotel") with ikyu's code in paymentOptionCode, minNights / maxNights and minRooms / maxRooms, the plan's meals with where and when they're served and the menu, childPricing (one entry per child category with category, rule and value, where rule is percentOfAdult, fixedJpy, notAccepted, sameAsAdult or free), bookingError (ikyu's reason this stay can't be booked on the plan, null when it can) and nightDates. All are null or empty when ikyu gives nothing.
With hotel details on, the record gains a hotel object: address, coordinates, access, amenities, facilities, hot spring, parking, pickup, pets, children policy, tax note, aspect ratings and images.
How much does it cost to scrape ikyu.com room rates?
| Event | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
actor-start, per run | $0.002 | $0.002 | $0.002 | $0.002 |
hotel-resolved, per hotel name looked up (URLs and ids skip it) | $0.002 | $0.002 | $0.002 | $0.002 |
hotel-checked, per hotel and stay ikyu answered, priced or not: a sold-out stay, a stay whose plans were all filtered out or unchanged, and an id ikyu has no hotel for are charged this alone | $0.0005 | $0.0005 | $0.0005 | $0.0005 |
hotel-priced, per hotel and stay returned, however many rooms and plans it holds | $0.003 | $0.0027 | $0.0024 | $0.0021 |
Enterprise plans pay the Business price.
$3.50 per 1,000 priced hotel-stays on the Free plan, $2.60 on Business. You pay by the stay, not by the row, and hotel details cost nothing extra. Proxy usage and platform usage are included.
- Ten hotels by id, one stay each: $0.002 + 10 × ($0.003 + $0.0005) = $0.037 ($0.028 on Business)
- Twenty hotels by name, three stays each: $0.002 + 20 × $0.002 + 60 × ($0.003 + $0.0005) = $0.252 ($0.198 on Business)
What you pay when there's nothing to price:
- A sold-out stay comes back as one row with
isSoldOut: trueand costs $0.0005. - A stay whose rates were all removed by your own filters comes back as one row with
rateCount: 0,ratesFound(how many rates ikyu had) and the reason inerror, and costs $0.0005. - An unchanged stay in an only-changes run writes no row and costs $0.0005.
- A stay ikyu didn't answer, and a hotel name ikyu can't match, cost nothing. You get a row saying why.
On Apify's Free plan, the $5 of credits you get each month covers about 135 runs like the first example, or roughly 1,350 priced hotel-stays.
How big is a grid, and how fast is a run?
| Run | Result | Time |
|---|---|---|
| Hotel Vischio Kyoto by GRANVIA, 1 night | 1 hotel-stay, 5 room types | 5 s |
| 4 Kyoto hotels × 3 stays, one row per room and rate plan | 12 hotel-stays, 307 rate rows | 4 s |
| 6 hotels × 6 stays, one row per room and rate plan | 36 hotel-stays, 1,665 rate rows | 8 s |
| 99 hotels across Japan × 3 stays | 297 hotel-stays (252 priced, 45 sold out) | 30 to 37 s on most runs, up to 2 min |
These are whole runs on Apify, measured between 1 and 3 October 2026.
On a long list you can expect about 500 hotel-stays a minute. One measured run in five was slower, at about 150 a minute. The default one-hour run limit therefore covers roughly 9,000 to 30,000 hotel-stays, and you can raise the run timeout for more.
FAQ
How should I pass a hotel?
The id or the URL is the safe way, and both are free to resolve. A name in English or Japanese works too, but it resolves to ikyu's first suggestion for that name, and a namesake is possible. A name ikyu can't match at all gets a row saying so, at no charge.
What happens when a hotel is sold out on my dates?
You get one row for that hotel and stay with isSoldOut: true and no rates, billed $0.0005. In the 99-hotel run above, 45 of 297 stays came back that way.
Why did "Free-cancellation plans only" remove nothing, or everything?
It depends how close the stay is. The filter keeps plans that are still free to cancel today. Thirty days out, every rate at the hotels we measured was free to cancel (87 of 87 and 21 of 21), so nothing is removed. Three days out, all 7 rates at one hotel had passed their deadline. Read freeCancellationUntil on each rate if you need the date itself.
Can I get one row per rate plan for a spreadsheet?
Switch on "One row per rate plan". Each rate becomes its own row with the hotel, stay and room fields repeated. "Maximum rows per hotel-stay" then keeps the cheapest rates of a stay, up to 300.
How are children priced?
Add each child's age (0 to 12) under "Children's ages". ikyu prices children by age group and drops plans that don't accept them. With plan details on, childPricing shows each plan's rule per age group: a percentage of the adult price, a fixed amount in yen, free, the same as an adult, or not accepted.
Do I need proxies or an ikyu account?
No proxy to set up, no proxy charges, and no login. The prices are the ones ikyu shows to any visitor.
What are the limits?
- Member-only ikyu Plus rates need a login and aren't included. A plan restricted to a membership rank is flagged in
memberRankRequired. - Up to 100 rate plans come back per room type, 30 unless you raise it.
- With one row per rate, a stay is cut to its 300 cheapest rates.
- Plan details cover each stay's cheapest rates (5 by default). Set "Plan details for the cheapest N rates" to 0 for all of them, at one extra request per rate.
- Room sizes given in tatami mats have no square-metre figure, and
sizeSqmis null for those rooms.
Is it legal to scrape ikyu.com?
The actor reads only the rates ikyu serves to any logged-out visitor. Collecting public prices is generally legal. How you use them is your responsibility, under ikyu's terms and the law that applies to you.
Watch rates on a schedule, or price a stay from code
For a rolling watch on a competitor set, create an Apify Schedule with "Check-in days ahead" and a price memory store. Add "Only new or changed prices" and each run reports only the stays whose lowest price moved. A webhook can push those rows to Slack or a Google Sheet through Apify's integrations.
To price a stay from your own system, POST https://api.apify.com/v2/acts/boncross~ikyu-room-rates/run-sync-get-dataset-items with the input JSON as the body. It answers with the grid in the same call for a handful of hotels. For a long list, start the run asynchronously and read the dataset when it finishes. The apify-client packages for Node.js and Python wrap both.
Through the Apify MCP server (mcp.apify.com) the actor is a tool named boncross/ikyu-room-rates. An agent can price a named ryokan for given dates and read back its rooms and plans.
More from BonCross
- ikyu.com Reviews Scraper (一休): ikyu.com (一休) reviews for hotels and ryokan.
- ikyu.com Search Scraper (一休): ikyu.com (一休) search results for any Japanese area, station or landmark on your dates.
- Jalan.net Area Rates Scraper (じゃらん): Jalan (じゃらん) prices and rooms left for every available hotel in an area, a whole…
- Jalan.net Room Rates Scraper (じゃらん): Every plan and room Jalan (じゃらん) lists for a hotel on a date.
- Jalan.net Hotel Search Scraper (じゃらん): Jalan (じゃらん) hotel search results for any area and your dates.
- Marriott Hotel Details Scraper: Everything a Marriott property publishes: address, coordinates, phones, brand, guest…
Your feedback
If a grid looks short, a rate doesn't match ikyu's page, or you need a plan field that isn't here, open an issue on the Issues tab in Apify Console with the hotel id and dates. BonCross reads each one and replies there.