Jalan Japanese Hotel & Ryokan Availability
Pricing
from $0.14 / 1,000 hotel scrapeds
Jalan Japanese Hotel & Ryokan Availability
Live prices and availability from Jalan (jalan.net), Japan largest domestic accommodation site.
Pricing
from $0.14 / 1,000 hotel scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Live prices from Jalan, Recruit's domestic accommodation site and the largest hotel and ryokan inventory in Japan. Ask one question - where, which night, how many people - and get back a small flat list of facilities with the cheapest bookable price for that stay, the plan behind it, the guest rating and the review count.
Built to be an agent's tool rather than a crawler: two requests for a typical run, a flat JSON record per hotel, and a default budget of twenty rows.
Prices are real quotes for the dates you asked for
This is the part worth reading before you compare this actor with another one.
Jalan has an obvious keyword search that returns thirty hotels with prices on them. Its prices do not change with the date. Measured on 2026-08-24, the same Shinjuku query for 15 September, 19 September and 31 December returned byte-identical prices for all thirty facilities - New Year's Eve at the same rate as a Tuesday. Jalan labels that column 目安, "a guide", and means it.
This actor does not use that endpoint. It resolves your destination through Jalan's own suggest service and then reads the area availability listing, which reprices properly: the same Hakone ryokan quoted ¥26,400 for a September midweek and ¥41,800 for New Year's Eve. A live test in the repo fails the build if that ever stops being true, because a stale price is worse than no price.
Input
| Field | Notes |
|---|---|
destination | Free text. Japanese works best - 箱根, 新宿駅, 沖縄, or a facility name. Romaji such as hakone resolves to the same region. |
checkIn | YYYY-MM-DD. Must be today or later and within a year. Only ISO is accepted, deliberately: an ambiguous date would be searched as the wrong night without telling you. |
nights | Default 1, up to 30. |
adults | Default 2. Changes the quoted prices, so it is not cosmetic. |
rooms | Default 1. |
maxItems | Default 20. Also the cap on how many hotel-scraped events you can be charged. |
includeUnpriced | Default off - see below. |
destination is resolved to the tightest bookable area that matches, so
箱根 searches Hakone rather than the whole of Kanagawa. Where it landed is
reported on every row (resolved_area) and in the run log, so a surprising
result set is always explainable.
Children are not supported. Jalan prices them by age band, and picking a band for you would invent a price.
Output
One flat record per hotel.
| Field | Notes |
|---|---|
hotel_id | Jalan's facility number, the NNNNNN in /yadNNNNNN/. |
url, plan_url | The facility page and its plan list. |
name | As Jalan prints it, e.g. 箱根湯本温泉 ホテル南風荘. |
area, prefecture | Jalan's own breadcrumb, e.g. 神奈川県 > 箱根. |
rating | Guest review average out of 5. null when the facility has no reviews. |
review_count | Reviews behind that average. null, never 0, when there are none. |
lowest_total_price_jpy | Cheapest bookable total for the whole party and the whole stay, tax included. |
lowest_price_per_person_jpy | The same quote per person, as Jalan prints it. |
price_basis | Jalan's own words for what the two figures assume, e.g. 1泊 大人2名 合計(税込). Read this before comparing rows. |
plan_name | The cheapest plan listed under the facility. |
plan_per_person_jpy, plan_total_jpy | That plan's prices. Not always equal to lowest_total_price_jpy, which is the facility-wide minimum. |
plan_labels | Room type and meal plan as printed, e.g. ["和洋室", "朝・夕"]. |
plan_rooms_left | Rooms Jalan says remain on that plan. null when it does not say. |
description, catch_phrase | The facility's paragraph and its promotional line. |
access | Directions as printed. |
thumbnail_url | First listing photo. |
query, resolved_area, area_url | What you asked for, where it resolved, and the exact page the row came from. |
check_in, check_out, nights, adults, rooms | Echo of the stay, so a dataset merged across several runs stays readable. |
Japanese is returned exactly as Jalan prints it
Nothing is translated, transliterated or romanised. 箱根湯本温泉 ホテル南風荘
comes back as 箱根湯本温泉 ホテル南風荘. The romanisation would be ours, not
Jalan's, and it would be wrong often enough to matter.
Fields Jalan does not give, and are therefore not here
- No street address. The availability listing prints directions (
access) but not a postal address. It is not nulled into every row; it simply is not a field. The facility page has one, and fetching one extra page per hotel would multiply the cost of every run. - No room-level inventory, no cancellation policy, no photos beyond the first.
- No English name. Jalan does not publish one for most facilities.
- Anything Jalan omits for a particular hotel is
null, never0or"". A zero rating would read as a measured score of zero, which is a different claim from "not rated yet".
Sold-out facilities
Off by default. A facility Jalan lists with no price has nothing bookable on
your dates, so it is dropped rather than delivered with a null price - you are
not charged for a row whose answer is empty. Set includeUnpriced to true to
get the full listing; those rows are then charged like any other.
Paid placements are excluded
Jalan puts sponsored [PR] cassettes above its organic results. They are never
emitted and never charged for. You get the ranking Jalan's own sort produced.
Limits worth knowing
- 30 facilities per page. Asking for more than 30 fetches more pages, which is slower and costs more. Past the end of an area Jalan re-serves the last page rather than returning nothing, so the actor de-duplicates by facility id and stops - you are never charged twice for the same hotel.
- A year ahead at most. Past Jalan's booking window the listing degrades to undated guide prices, so the actor refuses the date instead of quoting one.
- Japan only. Jalan is domestic inventory.
Pricing
Pay per event: a small charge to start the run, then one hotel-scraped event
per hotel actually delivered. A run that finds nothing bookable costs only the
start fee.