OrbTop

Japan Rail Scraper - JR, Shinkansen, Metro Timetables

TRAVELBUSINESSDEVELOPER TOOLS

Japan Rail Timetable Scraper - JR, Shinkansen & Metro

Scrape Japan rail timetables and fares from Yahoo! Transit. Returns ranked itineraries, segment-by-segment routing, IC-card fares, transfer counts, train type, and JR Pass eligibility for the JR Group, every Shinkansen line, Tokyo Metro, Toei, and the major private railways — which is more Japanese rail data than any single Apify actor has ever indexed.


Japan Rail Timetable Scraper Features

  • Scrapes A-to-B journey itineraries with up to three ranked routes per query.
  • Returns scheduled departure boards by station and line.
  • Covers JR East, JR West, JR Central, JR Kyushu, JR Hokkaido, and JR Shikoku — every Shinkansen included.
  • Indexes Tokyo Metro, Toei Subway, and the major private rail operators (Odakyu, Tokyu, Keio, Seibu, Tobu, Keikyu, Hankyu, Hanshin, Kintetsu, Meitetsu, Nankai, Sotetsu).
  • Splits IC-card fare from base fare and surfaces transfer counts. Most aggregators don't.
  • Resolves romaji station names for ~80 highest-traffic hubs (every Shinkansen station, every Tokyo / Osaka / Kyoto major). Accepts kanji or hiragana for full coverage.
  • Classifies train type — Shinkansen, Limited Express, Express, Rapid, Local — and named services (Nozomi, Hikari, Kodama, Sakura, Tsubame, Hayabusa, Komachi, Narita Express, Romancecar).
  • Computes JR Pass eligibility per route, correctly excluding Nozomi, Mizuho, and Hayabusa.
  • Pure HTML scraping — no Playwright, no captcha solving.

Who Uses Japan Rail Data?

  • Inbound-tourism platforms — Surface accurate timetables and fares to visitors planning trips. Japan is on track for 60M annual tourists by 2030, and most of them ride trains.
  • JR Pass calculators — Decide whether the 7/14/21-day pass beats individual tickets. Now you have the data to actually compare.
  • Travel aggregators — Feed clean rail data into multi-modal trip planners alongside flights and hotels.
  • MaaS startups — Build first-mile/last-mile services that integrate with the world's densest rail network.
  • Logistics & freight planners — Track passenger schedules to align operations around peak rail traffic.
  • Researchers & data journalists — Hyperdia shut down public access in 2022. There hasn't been a clean replacement until now.

How Japan Rail Timetable Scraper Works

  1. Pick a mode — journey_search for A-to-B itineraries, station_board for line-by-line departures from a single station.
  2. Enter origin and destination station names in kanji, hiragana, or romaji. The scraper resolves romaji for major hubs automatically; for smaller stations, paste the kanji.
  3. Optionally specify date and time. Empty values default to 24 hours ahead at 09:00 JST, which is a reasonable starting point.
  4. Run the actor. It hits Yahoo! Transit, parses the server-rendered HTML, and returns up to maxItems records.

Input

{
  "mode": "journey_search",
  "origin": "東京",
  "destination": "京都",
  "date": "",
  "time": "",
  "includeShinkansen": true,
  "maxItems": 10
}
Field Type Default Description
mode string journey_search Either journey_search (A-to-B itineraries) or station_board (departures from a single station).
origin string 東京 Origin station. Kanji, hiragana, or romaji. Used in journey_search mode.
destination string 京都 Destination station. Same encoding rules as origin.
station string 東京 Station for station_board mode. Same encoding rules.
date string "" YYYY-MM-DD. Empty defaults to 24h ahead.
time string "" HH:MM (24h). Empty defaults to 09:00.
includeShinkansen boolean true Allow Shinkansen segments in journey results.
maxItems integer 10 Cap on output rows (1-500).
proxyConfiguration object Apify residential, JP Override only if you have a reason.

Station Board Example

{
  "mode": "station_board",
  "station": "東京",
  "maxItems": 50
}

Returns up to 50 scheduled departures from Tokyo Station, walking each major line's timetable.


Japan Rail Timetable Scraper Output Fields

Journey Search Mode

{
  "mode": "journey_search",
  "route_id": "2026-04-26-1",
  "origin_station": "東京",
  "origin_station_en": "Tokyo",
  "origin_line": "JR東海道本線",
  "destination_station": "京都",
  "destination_station_en": "Kyoto",
  "destination_line": "JR琵琶湖線新快速",
  "departure_time": "2026-04-26T09:20:00",
  "arrival_time": "2026-04-26T17:42:00",
  "duration_minutes": 502,
  "transfers": 4,
  "segments": [
    "JR東海道本線 (熱海行) | dep 09:20 東京 -> arr 11:09 熱海 | platform 10->2",
    "JR東海道本線 (当駅始発浜松行) | dep 11:14 熱海 -> arr 13:44 浜松 | platform 3->4",
    "JR東海道本線 (当駅始発豊橋行) | dep 13:46 浜松 -> arr 14:21 豊橋 | platform 3->8",
    "JR東海道本線快速 (当駅始発米原行) | dep 14:32 豊橋 -> arr 16:39 米原 | platform 5->2",
    "JR琵琶湖線新快速 (播州赤穂行) | dep 16:47 米原 -> arr 17:42 京都 | platform 3->5"
  ],
  "total_fare_yen": 8470,
  "ic_card_fare_yen": 8470,
  "seat_fee_yen": 0,
  "distance_km": 513.6,
  "train_type": "Rapid",
  "train_name": "",
  "operator": "JR",
  "operator_type": "jr",
  "is_shinkansen": false,
  "jr_pass_eligible": true,
  "source_url": "https://transit.yahoo.co.jp/search/result?...",
  "scraped_at": "2026-04-25T14:13:08.073Z"
}
Field Type Description
mode string journey_search for itinerary records.
route_id string Route identifier within the result set (1, 2, 3 prefixed by date).
origin_station string Origin station in kanji.
origin_station_en string Origin station romanised when available.
origin_line string First-leg line name.
destination_station string Destination in kanji.
destination_station_en string Destination romanised when available.
destination_line string Last-leg line name.
departure_time string Scheduled departure (ISO8601 JST).
arrival_time string Scheduled arrival (ISO8601 JST).
duration_minutes integer Total journey duration.
transfers integer Number of train transfers.
segments array Per-leg summary: line, destination, departure, arrival, platforms.
total_fare_yen integer Total fare in JPY (IC-priority).
ic_card_fare_yen integer IC-card (Suica/Pasmo) fare.
seat_fee_yen integer Reserved-seat / Shinkansen supplement. 0 unless the page surfaces it.
distance_km number Total distance.
train_type string Highest-tier type: Shinkansen, Limited Express, Express, Rapid, Local.
train_name string Named service (Nozomi, Hikari, Narita Express, etc.) or empty.
operator string Primary operator name.
operator_type string One of: jr_shinkansen, jr, metro, private_rail, monorail, new_transit, other.
is_shinkansen boolean True if any segment is on a Shinkansen line.
jr_pass_eligible boolean True if every JR/Shinkansen segment is covered by the nationwide JR Pass.
source_url string Yahoo! Transit URL the row was extracted from.
scraped_at string ISO8601 timestamp.

Station Board Mode

{
  "mode": "station_board",
  "route_id": "16646",
  "origin_station": "東京",
  "origin_station_en": "Tokyo",
  "origin_line": "JR東海道新幹線",
  "destination_station": "博",
  "destination_line": "JR東海道新幹線",
  "departure_time": "2026-04-25T06:00:00",
  "train_type": "Shinkansen",
  "train_name": "",
  "operator": "JR Central",
  "operator_type": "jr_shinkansen",
  "is_shinkansen": true,
  "jr_pass_eligible": true,
  "direction": "JR東海道新幹線 新大阪・博多方面",
  "station_id": "22828",
  "source_url": "https://transit.yahoo.co.jp/timetable/22828/1341"
}

The same field set as journey mode, with direction and station_id populated. Fare, distance, and transfer fields are zero in this mode — they don't apply to single-departure rows.


FAQ

How do I scrape Japan rail timetables?

Japan Rail Timetable Scraper hits Yahoo! Transit, the most stable English-friendly back-end for Japanese rail data. Pick journey_search to get A-to-B itineraries between two stations, or station_board to walk every line departing from one station. Enter station names in kanji, hiragana, or (for major hubs) romaji.

How much does Japan Rail Timetable Scraper cost to run?

Japan Rail Timetable Scraper uses pay-per-event pricing. Each run costs $0.10 to start plus $0.001 per record returned. A full journey-search query typically returns 3 records, putting it well under a cent in record charges.

Does this scraper work without proxies?

Japan Rail Timetable Scraper runs without proxies in most cases. Yahoo! Transit doesn't gate the public route planner behind a captcha or WAF. The default proxy configuration is Apify Residential JP as a defensive measure — flip useApifyProxy off if you'd prefer no proxy at all.

Can I get Shinkansen seat fees and reserved-seat supplements?

Japan Rail Timetable Scraper surfaces the seat-fee field but does not always populate it. Yahoo! Transit's summary view reports the IC-priority fare; the per-route detail page (the next planned enhancement) is where 特急料金 / 新幹線料金 lives. For now, expect seat_fee_yen: 0 on most rows — open an issue if you need it now.

How do I look up a station that's not in the romaji map?

Use the kanji or hiragana name. The actor passes any non-ASCII input directly to Yahoo! Transit, which understands every Japanese station. Romaji shortcuts only exist for the ~80 highest-traffic hubs (every Shinkansen station plus major Tokyo / Osaka / Kyoto / Sapporo / Fukuoka stations) since maintaining a full romaji index would be a separate project.

Is JR Pass eligibility accurate?

Japan Rail Timetable Scraper sets jr_pass_eligible: true only when every segment runs on a JR-operated line and no segment uses a Nozomi, Mizuho, or Hayabusa service — which is exactly the rule the official JR Pass terms encode. Mixed itineraries that cross onto private rail return false, as they should.


Need More Features?

Need per-segment seat fees, a regional JR Pass eligibility breakdown, or a bilingual station name on every row? File an issue or get in touch.

Why Use Japan Rail Timetable Scraper?

  • No supply on Apify. Hyperdia died in 2022 and Navitime's enterprise API runs ¥200,000+/month. This is the gap.
  • One actor, every operator. JR Group, all Shinkansen, Tokyo Metro, Toei, and a long list of private rail operators in a single, consistent schema. You don't have to stitch together five sources.
  • Clean output. Returns structured JSON with split fares, segment routing, and JR Pass logic baked in — so you spend less time parsing Japanese rail conventions and more time using the data.