Jalan Japan Hotel Prices — What a Night Costs by Area
Pricing
from $20.00 / 1,000 area analyzeds
Jalan Japan Hotel Prices — What a Night Costs by Area
Enter a Japanese place name and a date, and see what a hotel night really costs on Jalan. You get the typical price per person, the lowest-highest range, how many hotels still have rooms that night, and the average guest rating. $0.02 per area checked, no results = no charge. Unofficial.
Pricing
from $20.00 / 1,000 area analyzeds
Rating
0.0
(0)
Developer
h ichi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Unofficial — independent tool, not affiliated with, endorsed by, or sponsored by Jalan. It reads only publicly visible pages. Support, reliability guarantees and the full disclaimer are at the bottom of this page.
What it does: Name a place in Japan and a night, and get what a hotel bed there really costs on Jalan, Japan's biggest domestic booking site.
You enter: a place, in Japanese or English — 京都, 箱根, or Kyoto, Hakone — plus the night, or how many days ahead to look.
You get: for that one night: how many hotels still have a room free, the typical price for one person and the low-to-high range in yen and US dollars, the guest-rating spread, Jalan's own sub-area split, and the cheapest and dearest stay by name.
Price: $0.02 per place. +$0.002 per row if you also want the list of hotels. No results = no charge.
Example: enter Kyoto, 30 days ahead → 150 hotels still had a room on 2026-10-09 · typical ¥12,912 a head (US$83.94), from ¥3,500 to ¥50,000 · guest rating 4.2 out of 5 across the 64% of them that carry one · cheapest 旅館なかなか at ¥3,500 (real run, 2026-09-09)
Unofficial — not affiliated with Jalan. Reads public pages only.
Pricing — $0.02 per place
| Event | Price | When |
|---|---|---|
| Area night summary | $0.02 | Per place analyzed, one night |
| Individual hotel | $0.002 | Only if you turn on Also return each hotel as a row |
A default run (1 place, summary only) costs $0.02 and takes about 17 seconds. You pay per place; there is no monthly fee. A place that returns zero hotels is never charged.
Two places on two dates is four charges, not one — every place-and-night pair is its own $0.02. About 5 places fit a single run's reading time; the platform's $3.00 Maximum cost per run would stop one at 150.
Input
| Field | Example | Notes |
|---|---|---|
areas | ["Kyoto"] | Japanese place names work best (京都, 箱根, 別府). The 47 prefectures and about 40 famous areas are also known by their English names. Anything else is sent to the site as typed and echoed back as areaResolved. $0.02 each |
checkInDate | "2026-10-09" | The night to price. Leave empty to use today in Japan plus daysAhead, so a saved input never goes stale |
daysAhead | 30 | Used only when checkInDate is empty. 0–180 |
nights | 1 | 1–14. Longer stays find fewer hotels; the yen figures stay per person for one night |
adults | 2 | 1–10, all sharing one room. Changes the per-head price and how many hotels have a room big enough |
maxHotelsSampled | 90 | 30–150. Only used on the rare run where the site stops returning cheapest-first |
includeIndividualHotels | false | Turn on to also get every hotel that was read, one row each (+$0.002 per row) |
convertToUsd | true | Adds US dollar figures at today's rate. A failed lookup never fails the run |
What the yen figures cover
Every row carries priceJpyBasis, so you never have to guess:
priceJpyBasis | What it means | When you get it |
|---|---|---|
population | Every hotel with a room that night was read — the figures describe all of them | Up to 150 hotels, which is most places most nights (Kyoto above: 150 found, 150 read) |
sample | Only the hotels that were read | Above 150 hotels, or when a page did not land where it was asked to |
sampledListings always says how many hotels the figures were measured on, and totalListingsFound how many the site said there were.
Five pages of 30 are read per place. When there are more than 150 hotels, those five pages are spread down the site's cheapest-first list — one at the cheap end, one a quarter of the way down, one at the middle, one at three quarters, one at the dear end — so the sample covers the whole price range instead of piling up at the cheap end.
The price is not always quoted per person
This is the one thing worth knowing about Jalan's numbers. A hotel card ends either 「3,500円**/人**」 or 「20,000円**/室**」 — per person or per room — while the little grey line under it says 「(大人2名利用時)」 either way. Measured 2026-09-09 for Kyoto on 2026-10-09: 1 of the 30 cards on the first page and 16 of the 30 cards at the dear end quoted the room.
So every room price is divided by the number of adults its own card says it covers, and both halves are returned:
priceJpyandpricePerPersonJpy— always per person, comparable across hotelspriceQuotedJpyandpriceQuotedPer(personorroom) on each hotel row — the number Jalan printed and which of the two it wasperRoomQuotedShare— what fraction of the hotels read went through that division (0.1867 in the example below)
A tool that reads the number without its unit puts a ¥100,000 room next to a ¥20,000 head in the same median. That ¥50,000 maximum below is a ¥100,000 room for two.
Output example (type: "area_night_price_summary")
Measured on 2026-09-09 (real run, {"areas": ["Kyoto"], "daysAhead": 30, "nights": 1, "adults": 2, "includeIndividualHotels": false}). The whole row, nothing shortened.
{"type": "area_night_price_summary","area": "Kyoto","areaResolved": "京都","areaStatus": "ok","checkInDate": "2026-10-09","nights": 1,"adults": 2,"sortUsed": "price_asc","totalListingsFound": 150,"totalFoundCapped": false,"sampledListings": 150,"priceJpy": {"min": 3500,"p25": 9992,"median": 12912,"p75": 15968,"max": 50000,"average": 13313},"priceJpyBasis": "population","pricedListings": 150,"perRoomQuotedShare": 0.1867,"priceUsd": {"min": 22.75,"p25": 64.96,"median": 83.94,"p75": 103.81,"max": 325.05,"average": 86.55},"exchangeRateJpyUsd": 0.006501,"guestRating": {"min": 3.0,"p25": 4.0,"median": 4.2,"p75": 4.4,"max": 4.7,"average": 4.11},"ratedShare": 0.64,"reviewsPerHotel": {"median": 104,"max": 5540},"subAreaMix": [{"subArea": "京都駅周辺","hotels": 69,"medianPricePerPersonJpy": 13175},{"subArea": "河原町・烏丸・大宮周辺","hotels": 54,"medianPricePerPersonJpy": 13350},{"subArea": "祇園・東山・北白川周辺","hotels": 15,"medianPricePerPersonJpy": 14336},{"subArea": "湯の花・丹波・美山","hotels": 4,"medianPricePerPersonJpy": 4000},{"subArea": "天橋立・宮津・舞鶴","hotels": 3,"medianPricePerPersonJpy": 3900},{"subArea": "嵯峨野・嵐山・高雄","hotels": 2,"medianPricePerPersonJpy": 5100},{"subArea": "綾部・福知山","hotels": 2,"medianPricePerPersonJpy": 4398},{"subArea": "丹後・久美浜","hotels": 1,"medianPricePerPersonJpy": 3800}],"cheapestStay": {"name": "旅館なかなか","yadNo": "372448","pricePerPersonJpy": 3500},"dearestStay": {"name": "サクラクロスホテル京都清水","yadNo": "392838","pricePerPersonJpy": 50000},"monotonicityCheck": "ok","hint": null,"sourceUrl": "https://www.jalan.net/uw/uwp2011/uww2011search.do?actionId=G&keyword=%8B%9E%93s&stayYear=2026&stayMonth=10&stayDay=09&stayCount=1&adultNum=2&roomCount=1&distCd=06&rootCd=7701&screenId=UWW2011&activeSort=1&minPrice=0&maxPrice=999999&dispStartIndex=0","checkedAt": "2026-09-09T01:09:09.902873+00:00"}
With Also return each hotel as a row turned on you additionally get one row per hotel:
{"type": "hotel","area": "Ginzan","checkInDate": "2026-10-09","yadNo": "324795","name": "天童セントラルホテル","subArea": "山形・蔵王・天童・上山","priceQuotedJpy": 4579,"priceQuotedPer": "person","pricePerPersonJpy": 4579,"guestRating": 4.1,"reviewCount": 559,"address": "山形県天童市本町2-1-31","hotelUrl": "https://www.jalan.net/yad324795/"}
When a place comes back empty
areaStatus is ok as soon as the site returns hotels, not_found when it returns none — with hint naming the next thing to try in one sentence (null otherwise). A place that returns nothing is never charged.
Jalan matches the word loosely against hotel names, so a place name it does not know can still find something: measured 2026-09-09, zzzqqxnotarealplace returned 8 hotels, most of them with "Place" in the name, from Otaru to Fukuoka. Read areaResolved and the sub-area split when a result looks scattered — a real place name concentrates in a few sub-areas.
What this Actor does not do
- No photos, no guest-review text, no hotel blurbs, no plan wording. The product is the numbers plus the plain facts about a hotel — name, sub-area, address, price, rating, review count. This is a deliberate limit, not an oversight (Jalan's terms, art.5-1 and art.8)
- No booking, and no prices from any other site. These are Jalan's own asking prices for that one night
- No history. Each run reads the site live; nothing is kept between runs. Run the same place on two dates yourself to see a night-by-night curve
- No hotels without a room that night. Hotels the site lists under 「keyword only」 are left out on purpose — see below
- No personal data. Guest ratings are returned as a score and a count, never as text or as anything about who wrote them
Notes on the data
- Every page is Windows-31J (Shift_JIS), robots.txt included. The place name is sent as its CP932 bytes (
京都→%8B%9E%93s); sent as anything else the site finds nothing totalListingsFoundis hotels with a room free that night, not a hotel directory. It moves with the date, which is the point: measured for京都, 2 adults, 1 room, 1 night — 150 on 2026-10-09, 157 on 2026-10-08 and 173 on 2026-11-03. A night two days away finds far fewer than one a month out- 1,000 exactly means the site stopped counting. That is the ceiling an undated search saturates at, so a dated search reporting exactly 1,000 sets
totalFoundCapped: trueand the figure should be read as "at least 1,000" - Hotels that match the name but have no room that night are dropped. The site prints them under 「以下は、キーワードのみ合致した宿泊施設です」 with the note that their price is the cheapest over the next four months — a different night and a different number. Measured 2026-09-09,
Ginzanprinted 30 cards of which 23 were bookable that night; the other 7 were left out averageis the mean of the hotels read, like every other figure inpriceJpy; whenpriceJpyBasisispopulationthose are all of them- Guest ratings cover fewer hotels than the prices do. About a third of hotels carry no Jalan score at all —
ratedSharesays how many did (0.64 in the example above), and the rating figures keep their two decimals rather than being rounded to whole stars sortUsedis alwaysprice_asc. The site's own default is relevance order, so cheapest-first is asked for explicitly every time and checked afterwards:monotonicityCheckisokwhen the prices really did come back in order andviolatedwhen they did not, in which case the run stops paging and the figures cover only the pages already read and saysamplesubAreaMixuses Jalan's own regions (京都駅周辺,祇園・東山・北白川周辺,天橋立・宮津・舞鶴), which are how Japanese travellers divide a destination — not wards, not train lines- Requests are spaced 2 seconds apart and one place costs at most 5 of them; the run carries a wall-clock budget, and if it is reached the remaining places are read from their first page only and their rows say
truncatedForTimeLimit: true
If something goes wrong
- Wrong number or a failed run? Open a ticket on the Issues tab. I read every one and reply within 2 business days (Japan time).
- You never get a fake "empty" result. If the site can't be read, the run fails and says so.
- No results = no charge. You only pay for results you actually get.
- Checked every week. An automatic test runs this tool weekly; if the site changes, I fix it.
- Public pages only. No login, no personal data, and it goes easy on the site.
More tools by the same author
- Mercari Japan Sold Prices — What Items Really Sell For
- Yahoo! Auctions Japan Sold Prices — Median, Range, Bids
All tools (Japan marketplaces, real estate, jobs, racing, prediction markets): https://apify.com/jpmarketdata
Disclaimer
Unofficial, independent tool — not affiliated with, endorsed by, or sponsored by Jalan. Product names and logos belong to their owners and only say where the data comes from. Data is read from public pages, for market research; check before you act on it.