train: 988001,0,4
Wed Sep 23 17:05:41 2026 2026-09-23T17:05:41Z plat dest scheduled estimated __369188 Stations on the Sandringham line will be affected by temporary car park closures, platform closures and changes to pedestrian access at select times, due to works as part of project and other maintenance works. ** current, _* Later today, __ in the future Final stop Sandringham
13 1181 Southern Cross Station 2026-09-23T19:14:00Z 05:14:00 128m19s 7699 no est disruptions 369188
8 1071 Flinders Street Station 2026-09-23T19:24:00Z 05:24:00 138m19s 8299 no est disruptions 369188
2 1162 Richmond Station 2026-09-23T19:28:00Z 05:28:00 142m19s 8539 no est disruptions 369188
2 1180 South Yarra Station 2026-09-23T19:31:00Z 05:31:00 145m19s 8719 no est disruptions 369188
2 1158 Prahran Station 2026-09-23T19:33:00Z 05:33:00 147m19s 8839 no est disruptions 369188
2 1214 Windsor Station 2026-09-23T19:35:00Z 05:35:00 149m19s 8959 no est disruptions 369188
2 1013 Balaclava Station 2026-09-23T19:37:00Z 05:37:00 151m19s 9079 no est disruptions 369188
2 1165 Ripponlea Station 2026-09-23T19:39:00Z 05:39:00 153m19s 9199 no est disruptions 369188
2 1061 Elsternwick Station 2026-09-23T19:41:00Z 05:41:00 155m19s 9319 no est disruptions 369188
2 1074 Gardenvale Station 2026-09-23T19:43:00Z 05:43:00 157m19s 9439 no est disruptions 369188
2 1143 North Brighton Station 2026-09-23T19:44:00Z 05:44:00 158m19s 9499 no est disruptions 369188
2 1126 Middle Brighton Station 2026-09-23T19:47:00Z 05:47:00 161m19s 9679 no est disruptions 369188
3 1027 Brighton Beach Station 2026-09-23T19:49:00Z 05:49:00 163m19s 9799 no est disruptions 369188
2 1086 Hampton Station 2026-09-23T19:52:00Z 05:52:00 166m19s 9979 no est disruptions 369188
1 1173 Sandringham Station 2026-09-23T19:54:00Z 05:54:00 168m19s 10099 no est disruptions 369188
$perl_scalar = { 'departures' => [ { 'at_platform' => 'false', 'departure_note' => 'via Flinders Street', 'departure_sequence' => 1, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '13', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:14:00Z', 'skipped_stops' => [], 'stop_id' => 1181 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 2, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '8', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:24:00Z', 'skipped_stops' => [], 'stop_id' => 1071 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 3, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:28:00Z', 'skipped_stops' => [], 'stop_id' => 1162 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 4, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:31:00Z', 'skipped_stops' => [], 'stop_id' => 1180 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 5, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:33:00Z', 'skipped_stops' => [], 'stop_id' => 1158 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 6, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:35:00Z', 'skipped_stops' => [], 'stop_id' => 1214 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 7, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:37:00Z', 'skipped_stops' => [], 'stop_id' => 1013 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 8, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:39:00Z', 'skipped_stops' => [], 'stop_id' => 1165 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 9, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:41:00Z', 'skipped_stops' => [], 'stop_id' => 1061 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 10, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:43:00Z', 'skipped_stops' => [], 'stop_id' => 1074 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 11, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:44:00Z', 'skipped_stops' => [], 'stop_id' => 1143 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 12, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:47:00Z', 'skipped_stops' => [], 'stop_id' => 1126 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 13, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '3', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:49:00Z', 'skipped_stops' => [], 'stop_id' => 1027 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 14, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:52:00Z', 'skipped_stops' => [], 'stop_id' => 1086 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 15, 'direction_id' => 12, 'disruption_ids' => [ 369188 ], 'estimated_departure_utc' => undef, 'flags' => 'E', 'platform_number' => '1', 'route_id' => 12, 'run_id' => 988001, 'run_ref' => '988001', 'scheduled_departure_utc' => '2026-09-23T19:54:00Z', 'skipped_stops' => [], 'stop_id' => 1173 } ], 'directions' => { '12' => { 'direction_id' => 12, 'direction_name' => 'Sandringham', 'route_id' => 12, 'route_type' => 0 } }, 'disruptions' => [ { 'colour' => '#ffd500', 'description' => 'Stations on the Sandringham line will be affected by temporary car park closures, platform closures and changes to pedestrian access at select times, due to works as part of project and other maintenance works.', 'display_on_board' => 'false', 'display_status' => 'false', 'disruption_id' => 369188, 'disruption_status' => 'Current', 'disruption_type' => 'Planned Closure', 'from_date' => '2026-08-29T21:47:00Z', 'last_updated' => '2026-08-29T21:56:22Z', 'published_on' => '2026-08-29T21:55:06Z', 'routes' => [], 'stops' => [], 'title' => 'Sandringham Line stations: Temporary car park closures and pedestrian access changes until further notice', 'to_date' => undef, 'url' => 'http://ptv.vic.gov.au/live-travel-updates/article/sandringham-line-stations-temporary-car-park-closures-and-pedestrian-access-changes-until-further-notice' } ], 'routes' => { '12' => { 'geopath' => [], 'route_gtfs_id' => '2-SHM', 'route_id' => 12, 'route_name' => 'Sandringham', 'route_number' => '', 'route_type' => 0 } }, 'runs' => { '988001' => { 'destination_name' => 'Sandringham', 'direction_id' => 12, 'express_stop_count' => 0, 'externalService' => undef, 'final_stop_id' => 1173, 'geopath' => [], 'interchange' => { 'distributor' => { 'advertised' => 'false', 'destination_name' => 'Southern Cross', 'direction_id' => 1, 'route_id' => 12, 'run_ref' => '988006', 'stop_id' => 1181 }, 'feeder' => { 'advertised' => 'true', 'destination_name' => 'Flinders Street', 'direction_id' => 1, 'route_id' => 17, 'run_ref' => '954300', 'stop_id' => 1071 } }, 'route_id' => 12, 'route_type' => 0, 'run_id' => 988001, 'run_note' => '', 'run_ref' => '988001', 'run_sequence' => 0, 'status' => 'scheduled', 'vehicle_descriptor' => undef, 'vehicle_position' => undef } }, 'status' => { 'health' => 1, 'version' => '3.0' }, 'stops' => { '1013' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1013, 'stop_landmark' => '', 'stop_latitude' => '-37.8694878', 'stop_longitude' => '144.993515', 'stop_name' => 'Balaclava', 'stop_sequence' => 0, 'stop_suburb' => 'Balaclava', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1027' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1027, 'stop_landmark' => '', 'stop_latitude' => '-37.9264832', 'stop_longitude' => '144.989151', 'stop_name' => 'Brighton Beach', 'stop_sequence' => 0, 'stop_suburb' => 'Brighton', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1, 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1,Zone 2' } }, '1061' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1061, 'stop_landmark' => '', 'stop_latitude' => '-37.88475', 'stop_longitude' => '145.0009', 'stop_name' => 'Elsternwick', 'stop_sequence' => 0, 'stop_suburb' => 'Elsternwick', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1071' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1071, 'stop_landmark' => '', 'stop_latitude' => '-37.81831', 'stop_longitude' => '144.966965', 'stop_name' => 'Flinders Street', 'stop_sequence' => 0, 'stop_suburb' => 'Melbourne City', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1074' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1074, 'stop_landmark' => '', 'stop_latitude' => '-37.8966942', 'stop_longitude' => '145.004166', 'stop_name' => 'Gardenvale', 'stop_sequence' => 0, 'stop_suburb' => 'Brighton', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1086' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1086, 'stop_landmark' => '', 'stop_latitude' => '-37.9380646', 'stop_longitude' => '145.001419', 'stop_name' => 'Hampton', 'stop_sequence' => 0, 'stop_suburb' => 'Hampton', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1126' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1126, 'stop_landmark' => '', 'stop_latitude' => '-37.9151344', 'stop_longitude' => '144.996292', 'stop_name' => 'Middle Brighton', 'stop_sequence' => 0, 'stop_suburb' => 'Brighton', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1, 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1,Zone 2' } }, '1143' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1143, 'stop_landmark' => '', 'stop_latitude' => '-37.9048843', 'stop_longitude' => '145.002609', 'stop_name' => 'North Brighton', 'stop_sequence' => 0, 'stop_suburb' => 'Brighton', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1, 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1,Zone 2' } }, '1158' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1158, 'stop_landmark' => '', 'stop_latitude' => '-37.8495178', 'stop_longitude' => '144.989853', 'stop_name' => 'Prahran', 'stop_sequence' => 0, 'stop_suburb' => 'Prahran', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1162' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1162, 'stop_landmark' => '', 'stop_latitude' => '-37.8240738', 'stop_longitude' => '144.990158', 'stop_name' => 'Richmond', 'stop_sequence' => 0, 'stop_suburb' => 'Richmond', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1165' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1165, 'stop_landmark' => '', 'stop_latitude' => '-37.8759079', 'stop_longitude' => '144.995239', 'stop_name' => 'Ripponlea', 'stop_sequence' => 0, 'stop_suburb' => 'Ripponlea', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1173' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1173, 'stop_landmark' => '', 'stop_latitude' => '-37.95033', 'stop_longitude' => '145.004562', 'stop_name' => 'Sandringham', 'stop_sequence' => 0, 'stop_suburb' => 'Sandringham', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'false', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1180' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1180, 'stop_landmark' => '', 'stop_latitude' => '-37.8384438', 'stop_longitude' => '144.99234', 'stop_name' => 'South Yarra', 'stop_sequence' => 0, 'stop_suburb' => 'South Yarra', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'false', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1181' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1181, 'stop_landmark' => '', 'stop_latitude' => '-37.8179321', 'stop_longitude' => '144.951416', 'stop_name' => 'Southern Cross', 'stop_sequence' => 0, 'stop_suburb' => 'Melbourne City', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'true', 'zone' => 'Zone 1' } }, '1214' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1214, 'stop_landmark' => '', 'stop_latitude' => '-37.8560524', 'stop_longitude' => '144.992035', 'stop_name' => 'Windsor', 'stop_sequence' => 0, 'stop_suburb' => 'Windsor', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } } } }