Japan Train Route & Fare Finder
Pricing
from $1.70 / 1,000 route option returneds
Japan Train Route & Fare Finder
Station-to-station train routes anywhere in Japan, JR and Shinkansen included - duration, fare, transfers and every leg with platforms.
Pricing
from $1.70 / 1,000 route option returneds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
One station-to-station lookup for Japan, answered in one run: how do I get from A to B, how long does it take, and what does it cost. JR, Shinkansen, private railways, subways, limited express services, highway buses and the walking legs in between are all covered, nationwide.
Ask for 東京 → 新大阪 and you get the のぞみ: departs 10:00, arrives 12:30, 150 minutes, 13,870 円 (8,910 円 base fare + 4,960 円 Shinkansen fee), zero transfers, 552.6 km, calling at 品川, 新横浜, 名古屋 and 京都, leaving from platform 16 and arriving on platform 22.
Up to three route options come back per search, each as one dataset item.
Input
| Field | Notes |
|---|---|
origin, destination | Station names in Japanese - kanji or kana both work (東京, とうきょう, 東京駅). |
datetime | ISO-8601 only, e.g. 2026-09-01T10:00. No timezone means Japan time. Empty means now. Anything else is rejected before the run is charged. |
searchType | depart (leave at that time) or arrive (be there by that time). |
preference | fastest, cheapest, or fewest_transfers. Decides which route is rank 1. |
maxRoutes | 1-3. The source offers no more than three. |
via | Optional stations to route through, in order, in Japanese. At most three; a fourth is dropped. A via station really does divert the route — 東京 → 新大阪 is 13,870 円 / 552.6 km direct, and 19,780 円 / 708.7 km via 金沢. |
useShinkansen, useLimitedExpress, useHighwayBus, useLocalBus | Turn classes of service off to price the journey without them. |
includeRomaji | Adds romaji station names. Off by default - see below. |
Output
One item per route option.
| Field | Notes |
|---|---|
rank | 1 is the best route under your preference. |
departure_time, arrival_time | HH:MM, Japan time, on the requested date. |
duration_minutes | Door to door, including transfer waits and walking. |
riding_minutes | Time actually aboard a vehicle. |
transfers | Number of changes. Walking between two stations is not counted as a transfer. |
total_fare_jpy | The whole trip in yen, IC-card fare where one applies. |
base_fare_jpy | The 乗車券 portion. |
express_fare_jpy | The 特別料金 portion - Shinkansen and limited-express supplements. |
seat_fees | Each supplement itemised, e.g. [{"label_ja": "自由席", "fare_jpy": 4960}]. |
distance_km | Rail distance for the itinerary. |
is_fastest, is_cheapest, is_fewest_transfers | The source's own badges on this route. |
legs[] | The journey in order. |
legs[].line_ja | e.g. JR新幹線のぞみ251号, 東武日光線, 徒歩. |
legs[].destination_ja | The train's final destination, e.g. 新大阪行. |
legs[].is_walk | true for a walking leg. |
legs[].from_station_ja, legs[].to_station_ja | Endpoints of this leg. |
legs[].departure_time, legs[].arrival_time | HH:MM. |
legs[].departure_platform, legs[].arrival_platform | Platform number as printed. |
legs[].stops[] | Intermediate stops with their times. |
resolved_origin_ja, resolved_destination_ja | The stations the source actually matched. Read these. |
query_origin, query_destination, search_type, preference, search_datetime_jst | Your request, echoed back. |
source_url | The exact page these numbers came from, so any figure can be rechecked by hand. |
Station names must be Japanese
The source matches Japanese only, and it does not fail when it cannot match:
it silently picks a different station and returns a perfectly valid itinerary
for it. Tokyo resolves to あいの里教育大, in Hokkaido, and the run then
reports an eleven-hour journey that is entirely real and entirely not what you
asked for.
Two things guard against that. resolved_origin_ja and resolved_destination_ja
on every item say which stations the numbers describe, and the run log carries a
warning whenever they differ from what you sent. Compare them before trusting a
result.
Kana works, so とうきょう and しんおおさか are both fine if kanji is
inconvenient.
Romaji
includeRomaji fills legs[].from_station_romaji and legs[].to_station_romaji
with Hepburn romaji - Tokyo, Shin'osaka, Hatchobori. These are
transliterated from the kana reading each station publishes on its own page, not
guessed from the kanji, which is why the option costs one extra request per
distinct station and is off by default.
With includeRomaji off, both fields are null. Intermediate stops in
legs[].stops[] are never romanised: the source gives no reading for them.
What this source does not give
Stated rather than guessed. A missing value is always null, never 0 and
never an empty string, because a zero in a fare column reads as a measurement.
- No reserved-seat fare when a cheaper seat class exists.
express_fare_jpyandseat_feesreport what the source quotes for the itinerary, which for Shinkansen searches is usually the 自由席 (non-reserved) supplement. 東京 → 新大阪 comes back as 13,870 円; a 指定席 reserved seat on the same train costs a few hundred yen more. - No per-leg fare. Fares are quoted per fare section, and a section can span
several legs, so splitting them across legs would be invention. The route-level
totals and
seat_feesare the real breakdown. - No seat availability, no booking, no ticket purchase. This is a timetable and fare lookup.
- No live delay or disruption data. Times are scheduled times.
- No romaji for line names.
line_jais Japanese only. - No coordinates and no station codes beyond the source's internal ids.
- Platform is often absent on private railways and on arrival at smaller
stations. It is
nullthere, not an empty string. - At most three routes per search, and no pagination past them.
- At most three
viastations. The source will accept more, but the schema promises three, so a fourth is dropped rather than silently honoured. - Dates outside the published timetable return nothing. Japanese timetables are published roughly a month ahead; a search far in the future fails rather than guessing.
Pricing
Pay per event. You are charged for starting the run and for each route option returned. A search that matches no route returns nothing and is charged only the start fee.