ikyu.com Room Rates Scraper (一休) avatar

ikyu.com Room Rates Scraper (一休)

Pricing

from $2.10 / 1,000 hotel-priceds

Go to Apify Store
ikyu.com Room Rates Scraper (一休)

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

BonCross API

Maintained by Community

Actor 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 metresMinimum and maximum capacity
Bed configurationPlan name and plan id
💴 Stay total and nightly price in JPY, tax includedSame prices in your currency
♨️ Hot spring tax already in each rateTax-inclusive flag
List price and discount percentageikyu points and point rate
🍽️ Meal plan, with breakfast and dinner flagsRooms left on each plan
Free cancellation status and last free dateCharge ladder and no-show charge
🕒 Plan check-in and check-out timesGrid size: room types, plans, rates
Lowest total, lowest refundable and lowest with breakfastPrevious lowest price and change
📍 Address, coordinates and accessHot spring, amenities, parking, pets and children policy

How to scrape ikyu.com room rates

  1. Sign up for Apify, which is free, and open ikyu.com Room Rates Scraper.
  2. Paste your hotels, one per line. An ikyu URL such as https://www.ikyu.com/en-us/00000146/ works, and so does the id 00000146 or the hotel's name in English or Japanese.
  3. Set the dates, adults and rooms. If you want prices in another currency beside the yen, pick it.
  4. 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
}
FieldNotes
hotels, startUrlsikyu URLs, 8-digit ids or names, typed or loaded in bulk.
maxItems, maxRowsRun-wide caps on priced hotel-stays and on rows. Both default to 0, no cap.
maxRowsPerStayWith one row per rate, the most rows kept per stay, cheapest first. Default 300, which is also the maximum.
checkIn, checkOutFixed dates, YYYY-MM-DD.
checkInDaysAhead, nightsUsed when the dates are empty. Defaults 30 and 1.
staysSeveral date ranges for the same hotels, up to 366 a run.
adults, rooms, childrenAgesAdults per room (default 2), rooms (default 1) and one age per child, 0 to 12.
freeCancellationOnly, breakfastOnly, dinnerOnlyKeep only plans still free to cancel today, or with that meal.
minPerNight, maxPerNightA nightly price band per room, in the selected currency. 0 is off.
includePlanDetails, planDetailsPerStayPlan details for each stay's cheapest rates (default 5, and 0 means every rate).
includeHotelDetailsThe hotel's address, coordinates, times, amenities and images. No extra charge.
maxRatesPerRoomHow many rate plans come back per room type, cheapest first. Default 30, up to 100.
flattenRoomsOne row per rate plan, with the hotel and stay fields repeated.
currency, languageJPY by default, and yen prices are always included. en (default) or ja.
priceStoreName, onlyNewOrChangedThe price memory for scheduled runs, and the switch that returns only changed stays.
maxConcurrency, delayMsParallel requests (default 8) and an optional pause before each one (default 0).

For developers

  • maxItems counts priced hotel-stays. Sold-out and unchanged stays aren't counted. maxRows counts rows, and with flattenRooms a row is one room and rate plan.
  • maxRatesPerRoom caps 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.
  • includePlanDetails makes one extra request per rate, for the cheapest planDetailsPerStay rates of each stay. It isn't spent on sold-out or unchanged stays.
  • childrenAges maps 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.
  • priceStoreName names a key-value store that remembers the lowest nightly price per hotel, stay, occupancy and currency. The next run fills previousLowestPerNight, priceChange and priceChangePct. With onlyNewOrChanged, a stay whose lowest price hasn't moved writes no row.
  • stays accepts checkIn/checkOut or lowercase checkin/checkout. It replaces checkIn and checkOut when set. Lowercase checkin, checkout and checkinDaysAhead work at the top level too.
  • maxConcurrency runs from 1 to 32 and delayMs up 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:

FieldWhat it holds
planImagesThe plan's own photo URLs. An empty list when it has none
saleikyu's sale status code for the plan (for example USUALLY for a regular plan). Null when not given
memberRankRequiredThe ikyu membership rank the plan is restricted to. Null for a plan open to everyone
isLimitedTwoWeekstrue when ikyu flags the plan as limited to a two-week window
isBookableStartSoon / isBookableEndSoontrue when the plan's booking window opens soon / closes soon
planCheckInFrom / planCheckInUntil / planCheckOutUntilCheck-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
baseDiscountPercentThe discount rate ikyu shows on the plan, in percent. Null when there is none
instantPointsPoints applied at once for this rate. Null when not given
roomCountThe 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?

EventFree planStarterScaleBusiness
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: true and 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 in error, 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?

RunResultTime
Hotel Vischio Kyoto by GRANVIA, 1 night1 hotel-stay, 5 room types5 s
4 Kyoto hotels × 3 stays, one row per room and rate plan12 hotel-stays, 307 rate rows4 s
6 hotels × 6 stays, one row per room and rate plan36 hotel-stays, 1,665 rate rows8 s
99 hotels across Japan × 3 stays297 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 sizeSqm is null for those rooms.

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

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.