Japan Train Route & Fare Finder avatar

Japan Train Route & Fare Finder

Pricing

from $1.70 / 1,000 route option returneds

Go to Apify Store
Japan Train Route & Fare Finder

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

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

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

FieldNotes
origin, destinationStation names in Japanese - kanji or kana both work (東京, とうきょう, 東京駅).
datetimeISO-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.
searchTypedepart (leave at that time) or arrive (be there by that time).
preferencefastest, cheapest, or fewest_transfers. Decides which route is rank 1.
maxRoutes1-3. The source offers no more than three.
viaOptional 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, useLocalBusTurn classes of service off to price the journey without them.
includeRomajiAdds romaji station names. Off by default - see below.

Output

One item per route option.

FieldNotes
rank1 is the best route under your preference.
departure_time, arrival_timeHH:MM, Japan time, on the requested date.
duration_minutesDoor to door, including transfer waits and walking.
riding_minutesTime actually aboard a vehicle.
transfersNumber of changes. Walking between two stations is not counted as a transfer.
total_fare_jpyThe whole trip in yen, IC-card fare where one applies.
base_fare_jpyThe 乗車券 portion.
express_fare_jpyThe 特別料金 portion - Shinkansen and limited-express supplements.
seat_feesEach supplement itemised, e.g. [{"label_ja": "自由席", "fare_jpy": 4960}].
distance_kmRail distance for the itinerary.
is_fastest, is_cheapest, is_fewest_transfersThe source's own badges on this route.
legs[]The journey in order.
legs[].line_jae.g. JR新幹線のぞみ251号, 東武日光線, 徒歩.
legs[].destination_jaThe train's final destination, e.g. 新大阪行.
legs[].is_walktrue for a walking leg.
legs[].from_station_ja, legs[].to_station_jaEndpoints of this leg.
legs[].departure_time, legs[].arrival_timeHH:MM.
legs[].departure_platform, legs[].arrival_platformPlatform number as printed.
legs[].stops[]Intermediate stops with their times.
resolved_origin_ja, resolved_destination_jaThe stations the source actually matched. Read these.
query_origin, query_destination, search_type, preference, search_datetime_jstYour request, echoed back.
source_urlThe 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_jpy and seat_fees report 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_fees are 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_ja is 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 null there, not an empty string.
  • At most three routes per search, and no pagination past them.
  • At most three via stations. 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.