Japan Highway Bus Scraper — Timetables & Fares (Kosokubus)
Japan Highway Bus Scraper - Kosokubus Fares, Timetables & Routes
Extract Japanese intercity highway bus data from Kosokubus.com — Japan's largest bus booking aggregator. Returns structured records per route with operator name, seat class, amenities, overnight flag, fares in JPY, availability, and all boarding/alighting stops. Covers Willer Express, all six JR Bus regional subsidiaries, Sakura Kotsu, Keio Bus, Odakyu City Bus, Meitetsu Bus, Kintetsu Bus, Hankyu Bus, and 30+ other operators.
What does the Kosokubus scraper do?
Supply origin and destination prefecture codes, and the actor fetches the Kosokubus bus-list page for each corridor. Each route card is parsed and saved as a structured record. Filters for overnight service, seat class, and female-only seating are applied before saving.
Leave origin or destination blank to crawl all major corridors automatically. Use maxItems to cap the result count for quick sampling without crawling full corridor networks.
Kosokubus serves full server-rendered HTML — no JavaScript rendering needed. The actor runs on a residential Japanese proxy for geo-consistent results.
What data does it extract?
Each record contains 26 fields per route:
| Field | Type | Description |
|---|---|---|
trip_id |
string | Internal route code from Kosokubus |
operator |
string | Operator name in Japanese |
operator_en |
string | Operator name in English / romaji |
route_name |
string | Marketed route name (Japanese) |
origin_terminal |
string | First boarding stop name (Japanese) |
origin_terminal_en |
string | First boarding stop name (romaji) |
origin_city |
string | Origin prefecture name |
destination_terminal |
string | Final alighting stop name (Japanese) |
destination_terminal_en |
string | Final alighting stop name (romaji) |
destination_city |
string | Destination prefecture name |
departure_time |
string | Scheduled departure time in JST (HH:MM) |
arrival_time |
string | Scheduled arrival time in JST (HH:MM) |
duration_minutes |
integer | Total journey duration in minutes |
is_overnight |
boolean | True if this is an overnight service |
seat_class |
string | 4-row standard, 3-row relax, 2-row executive, or Cocoon pod |
seats_per_row |
integer | Seats per row: 2, 3, or 4 |
amenities |
array | wifi, outlet, toilet, blanket, slippers, reading_light, curtain_divider, female_only_area |
female_only_seats |
boolean | True if a female-only seating area is available |
fare_yen |
integer | Minimum fare in JPY |
fare_yen_max |
integer | Maximum fare in JPY when a range is shown |
seats_available |
integer | Available seats at scrape time |
has_toilet |
boolean | Toilet onboard |
stops |
array | All intermediate stops with departure times |
booking_url |
string | Direct booking detail URL on kosokubus.com |
scrape_url |
string | Source bus-list page URL |
How to use it
| Field | Type | Default | Description |
|---|---|---|---|
origin |
string | 00013 |
Origin prefecture code. Leave blank for major corridors. |
destination |
string | 00027 |
Destination prefecture code. Leave blank for all destinations from the given origin. |
overnightOnly |
boolean | false |
Return only overnight services. |
seatClass |
string | any |
Minimum seat class: any, 4row, 3row, 2row, or pod. |
femaleOnly |
boolean | false |
Return only routes with a female-only seating area. |
maxItems |
integer | 10 | Maximum route records to return. |
proxyConfiguration |
object | Residential JP | Residential Japan proxy is strongly recommended. |
Prefecture code reference
| Code | Prefecture |
|---|---|
00013 |
Tokyo (東京) |
00027 |
Osaka (大阪) |
00026 |
Kyoto (京都) |
00023 |
Aichi / Nagoya (愛知) |
00040 |
Fukuoka (福岡) |
00014 |
Kanagawa / Yokohama (神奈川) |
00028 |
Hyogo / Kobe (兵庫) |
00034 |
Hiroshima (広島) |
Codes follow the pattern 00001 (Hokkaido) through 00047 (Okinawa). The full list is available at kosokubus.com under the route search form.
Example: Tokyo to Osaka, first 10 routes
{
"origin": "00013",
"destination": "00027",
"maxItems": 10
}
Example: overnight buses only from Tokyo to Nagoya
{
"origin": "00013",
"destination": "00023",
"overnightOnly": true,
"maxItems": 20
}
Use cases
- Travel aggregators — build or update Japan bus search engines with structured route, fare, and availability data
- Inbound tourism apps — show visitors affordable highway-bus alternatives to Shinkansen, with seat-class breakdowns and overnight options
- JR Pass calculators — surface competing bus fares on covered corridors to help travelers evaluate pass value
- Transport researchers — map intercity bus networks, track fare changes, or analyze operator coverage by prefecture pair
- Price monitoring — detect fare changes or availability drops for specific corridors on a scheduled basis
FAQ
How many routes does the scraper collect? Kosokubus lists all routes for a corridor on a single page — typically 1 to 20 per prefecture pair. A full multi-corridor run covering major routes can return 1,000 to 3,000 records nationwide.
How current is the data? Timetable data (routes, stops, durations) is updated seasonally. Availability (seats remaining) and fares change daily — run the actor on a schedule to keep those fields current.
Why is a Japanese residential proxy required? Kosokubus returns geo-consistent content to Japanese IPs. Without a Japan proxy, some corridors may return empty results.
Output is available in JSON, CSV, and Excel via the Apify dataset export panel.