train: 951659,0,4
Thu Aug 6 13:18:04 2026 2026-08-06T13:18:04Z plat dest scheduled estimated __323905 Stations on the Belgrave and Lilydale lines will be affected by temporary car park closures, platform closures and changes to pedestrian access at select times, due to works as part of the Level Crossing Removal Project and other maintenance works. _*344824 From 8.30pm Monday 29 September 2025 until August 2026, there will be changes to the way you access and exit the station, due to escalator upgrade works. __357977 To enable Boronia Station Upgrade works, there will be temporary changes to vehicle and pedestrian access. __362298 Monday 11 May to late 2026 ** current, _* Later today, __ in the future Final stop Belgrave
3 1071 Flinders Street Station 2026-08-06T14:05:00Z 00:05:00 46m56s 2816 00:05:00 46m56s 2816 disruptions 362298 357977 344824 323905
10 1181 Southern Cross Station 2026-08-06T14:08:00Z 00:08:00 49m56s 2996 00:08:00 49m56s 2996 disruptions 362298 357977 344824 323905
4 1068 Flagstaff Station 2026-08-06T14:10:00Z 00:10:00 51m56s 3116 00:11:00 52m56s 3176 disruptions 362298 357977 344824 323905
4 1120 Melbourne Central Station 2026-08-06T14:11:00Z 00:11:00 52m56s 3176 00:12:00 53m56s 3236 disruptions 362298 357977 344824 323905
4 1155 Parliament Station 2026-08-06T14:13:00Z 00:13:00 54m56s 3296 00:15:00 56m56s 3416 disruptions 362298 357977 344824 323905
9 1162 Richmond Station 2026-08-06T14:16:00Z 00:16:00 57m56s 3476 no est disruptions 362298 357977 344824 323905
3 1030 Burnley Station 2026-08-06T14:19:00Z 00:19:00 60m56s 3656 no est disruptions 362298 357977 344824 323905
2 1090 Hawthorn Station 2026-08-06T14:21:00Z 00:21:00 62m56s 3776 no est disruptions 362298 357977 344824 323905
2 1080 Glenferrie Station 2026-08-06T14:23:00Z 00:23:00 64m56s 3896 no est disruptions 362298 357977 344824 323905
2 1012 Auburn Station 2026-08-06T14:25:00Z 00:25:00 66m56s 4016 no est disruptions 362298 357977 344824 323905
3 1032 Camberwell Station 2026-08-06T14:27:00Z 00:27:00 68m56s 4136 no est disruptions 362298 357977 344824 323905
2 1057 East Camberwell Station 2026-08-06T14:29:00Z 00:29:00 70m56s 4256 no est disruptions 362298 357977 344824 323905
2 1033 Canterbury Station 2026-08-06T14:31:00Z 00:31:00 72m56s 4376 no est disruptions 362298 357977 344824 323905
2 1037 Chatham Station 2026-08-06T14:33:00Z 00:33:00 74m56s 4496 no est disruptions 362298 357977 344824 323905
2 1229 Union Station 2026-08-06T14:35:00Z 00:35:00 76m56s 4616 no est disruptions 362298 357977 344824 323905
3 1026 Box Hill Station 2026-08-06T14:39:00Z 00:39:00 80m56s 4856 no est disruptions 362298 357977 344824 323905
2 1111 Laburnum Station 2026-08-06T14:41:00Z 00:41:00 82m56s 4976 no est disruptions 362298 357977 344824 323905
2 1023 Blackburn Station 2026-08-06T14:43:00Z 00:43:00 84m56s 5096 no est disruptions 362298 357977 344824 323905
2 1148 Nunawading Station 2026-08-06T14:46:00Z 00:46:00 87m56s 5276 no est disruptions 362298 357977 344824 323905
2 1128 Mitcham Station 2026-08-06T14:48:00Z 00:48:00 89m56s 5396 no est disruptions 362298 357977 344824 323905
2 1091 Heatherdale Station 2026-08-06T14:51:00Z 00:51:00 92m56s 5576 no est disruptions 362298 357977 344824 323905
2 1163 Ringwood Station 2026-08-06T14:54:00Z 00:54:00 95m56s 5756 no est disruptions 362298 357977 344824 323905
2 1092 Heathmont Station 2026-08-06T14:57:00Z 00:57:00 98m56s 5936 no est disruptions 362298 357977 344824 323905
2 1016 Bayswater Station 2026-08-06T15:00:00Z 01:00:00 101m56s 6116 no est disruptions 362298 357977 344824 323905
2 1025 Boronia Station 2026-08-06T15:03:00Z 01:03:00 104m56s 6296 no est disruptions 362298 357977 344824 323905
2 1067 Ferntree Gully Station 2026-08-06T15:06:00Z 01:06:00 107m56s 6476 no est disruptions 362298 357977 344824 323905
2 1199 Upper Ferntree Gully Station 2026-08-06T15:09:00Z 01:09:00 110m56s 6656 no est disruptions 362298 357977 344824 323905
2 1200 Upwey Station 2026-08-06T15:13:00Z 01:13:00 114m56s 6896 no est disruptions 362298 357977 344824 323905
1 1191 Tecoma Station 2026-08-06T15:15:00Z 01:15:00 116m56s 7016 no est disruptions 362298 357977 344824 323905
1 1018 Belgrave Station 2026-08-06T15:18:00Z 01:18:00 119m56s 7196 no est disruptions 362298 357977 344824 323905
$perl_scalar = { 'departures' => [ { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 1, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => '2026-08-06T14:05:00Z', 'flags' => '', 'platform_number' => '3', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:05:00Z', 'skipped_stops' => [], 'stop_id' => 1071 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 2, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => '2026-08-06T14:08:00Z', 'flags' => '', 'platform_number' => '10', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:08:00Z', 'skipped_stops' => [], 'stop_id' => 1181 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 3, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => '2026-08-06T14:11:00Z', 'flags' => '', 'platform_number' => '4', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:10:00Z', 'skipped_stops' => [], 'stop_id' => 1068 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 4, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => '2026-08-06T14:12:00Z', 'flags' => '', 'platform_number' => '4', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:11:00Z', 'skipped_stops' => [], 'stop_id' => 1120 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 5, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => '2026-08-06T14:15:00Z', 'flags' => '', 'platform_number' => '4', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:13:00Z', 'skipped_stops' => [], 'stop_id' => 1155 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 6, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '9', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:16:00Z', 'skipped_stops' => [], 'stop_id' => 1162 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 7, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '3', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:19:00Z', 'skipped_stops' => [], 'stop_id' => 1030 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 8, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:21:00Z', 'skipped_stops' => [], 'stop_id' => 1090 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 9, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:23:00Z', 'skipped_stops' => [], 'stop_id' => 1080 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 10, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:25:00Z', 'skipped_stops' => [], 'stop_id' => 1012 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 11, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '3', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:27:00Z', 'skipped_stops' => [], 'stop_id' => 1032 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 12, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:29:00Z', 'skipped_stops' => [], 'stop_id' => 1057 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 13, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:31:00Z', 'skipped_stops' => [], 'stop_id' => 1033 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 14, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:33:00Z', 'skipped_stops' => [], 'stop_id' => 1037 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 15, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:35:00Z', 'skipped_stops' => [], 'stop_id' => 1229 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 16, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '3', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:39:00Z', 'skipped_stops' => [], 'stop_id' => 1026 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 17, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:41:00Z', 'skipped_stops' => [], 'stop_id' => 1111 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 18, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:43:00Z', 'skipped_stops' => [], 'stop_id' => 1023 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 19, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:46:00Z', 'skipped_stops' => [], 'stop_id' => 1148 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 20, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:48:00Z', 'skipped_stops' => [], 'stop_id' => 1128 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 21, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:51:00Z', 'skipped_stops' => [], 'stop_id' => 1091 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 22, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:54:00Z', 'skipped_stops' => [], 'stop_id' => 1163 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 23, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T14:57:00Z', 'skipped_stops' => [], 'stop_id' => 1092 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 24, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T15:00:00Z', 'skipped_stops' => [], 'stop_id' => 1016 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 25, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T15:03:00Z', 'skipped_stops' => [], 'stop_id' => 1025 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 26, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T15:06:00Z', 'skipped_stops' => [], 'stop_id' => 1067 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 27, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T15:09:00Z', 'skipped_stops' => [], 'stop_id' => 1199 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 28, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T15:13:00Z', 'skipped_stops' => [], 'stop_id' => 1200 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 29, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '1', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T15:15:00Z', 'skipped_stops' => [], 'stop_id' => 1191 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 30, 'direction_id' => 2, 'disruption_ids' => [ 362298, 357977, 344824, 323905 ], 'estimated_departure_utc' => undef, 'flags' => 'E', 'platform_number' => '1', 'route_id' => 2, 'run_id' => 951659, 'run_ref' => '951659', 'scheduled_departure_utc' => '2026-08-06T15:18:00Z', 'skipped_stops' => [], 'stop_id' => 1018 } ], 'directions' => { '2' => { 'direction_id' => 2, 'direction_name' => 'Belgrave', 'route_id' => 2, 'route_type' => 0 } }, 'disruptions' => [ { 'colour' => '#ffbb00', 'description' => 'Monday 11 May to Tuesday 4 August', 'display_on_board' => 'false', 'display_status' => 'false', 'disruption_id' => 362298, 'disruption_status' => 'Current', 'disruption_type' => 'Station detour', 'from_date' => '2026-05-12T00:51:00Z', 'last_updated' => '2026-07-23T02:45:26Z', 'published_on' => '2026-05-12T02:11:45Z', 'routes' => [], 'stops' => [], 'title' => 'Belgrave Line: Replacement bus stop relocation at Bayswater Station until Tuesday 4 August 2026', 'to_date' => undef, 'url' => 'http://ptv.vic.gov.au/live-travel-updates/article/belgrave-line-replacement-bus-stop-relocation-at-bayswater-station-until-late-2026' }, { 'colour' => '#ffd500', 'description' => 'Works will continue until spring 2026. When complete, the new station precinct will feature:', 'display_on_board' => 'false', 'display_status' => 'false', 'disruption_id' => 357977, 'disruption_status' => 'Current', 'disruption_type' => 'Planned Closure', 'from_date' => '2026-03-26T16:10:00Z', 'last_updated' => '2026-08-04T08:47:49Z', 'published_on' => '2026-03-18T04:56:31Z', 'routes' => [], 'stops' => [], 'title' => 'Boronia Station: Major changes until spring 2026', 'to_date' => undef, 'url' => 'http://ptv.vic.gov.au/live-travel-updates/article/boronia-disruptions' }, { 'colour' => '#ffbb00', 'description' => 'Southern Cross Station: From 8.30pm Monday 29 September 2025 until August 2026, there will be changes to the way you access and exit the station, due to escalator upgrade works.', 'display_on_board' => 'true', 'display_status' => 'false', 'disruption_id' => 344824, 'disruption_status' => 'Current', 'disruption_type' => 'Station detour', 'from_date' => '2025-09-25T05:13:00Z', 'last_updated' => '2026-02-10T10:00:02Z', 'published_on' => '2025-09-25T05:26:57Z', 'routes' => [], 'stops' => [], 'title' => 'Southern Cross Station: From 8.30pm Monday 29 September 2025 until August 2026, there will be changes to the way you access and exit the station, due to escalator upgrade works.', 'to_date' => '2026-08-31T17:00:00Z', 'url' => 'http://ptv.vic.gov.au/live-travel-updates/article/page/plan-a-journey/maps/southern-cross-station-map-and-travel-information/' }, { 'colour' => '#ffd500', 'description' => 'Stations on the Alamein, Belgrave, Glen Waverley and Lilydale lines will be affected by temporary car park closures, platform closures and changes to pedestrian access at select times, due to works as part of the Level Crossing Removal Project and other maintenance works.', 'display_on_board' => 'false', 'display_status' => 'false', 'disruption_id' => 323905, 'disruption_status' => 'Current', 'disruption_type' => 'Planned Closure', 'from_date' => '2024-10-28T10:54:00Z', 'last_updated' => '2026-07-02T09:13:53Z', 'published_on' => '2024-10-29T04:29:05Z', 'routes' => [], 'stops' => [], 'title' => 'Alamein, Belgrave, Glen Waverley and Lilydale 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/alamein-belgrave-glen-waverley-and-lilydale-line-stations-temporary-car-park-closures-and-pedestrian-access-changes-until-further-notice' } ], 'routes' => { '2' => { 'geopath' => [], 'route_gtfs_id' => '2-BEG', 'route_id' => 2, 'route_name' => 'Belgrave', 'route_number' => '', 'route_type' => 0 } }, 'runs' => { '951659' => { 'destination_name' => 'Belgrave', 'direction_id' => 2, 'express_stop_count' => 1, 'externalService' => 7, 'final_stop_id' => 1018, 'geopath' => [], 'interchange' => { 'distributor' => undef, 'feeder' => { 'advertised' => 'false', 'destination_name' => 'Parliament', 'direction_id' => 1, 'route_id' => 7, 'run_ref' => '950164', 'stop_id' => 1155 } }, 'route_id' => 2, 'route_type' => 0, 'run_id' => 951659, 'run_note' => '', 'run_ref' => '951659', 'run_sequence' => 0, 'status' => 'scheduled', 'vehicle_descriptor' => { 'air_conditioned' => undef, 'description' => '6 Car Xtrapolis', 'id' => '1330T-1423T-245M-246M-59M-60M', 'length' => '142', 'low_floor' => undef, 'operator' => 'Metro Trains Melbourne', 'supplier' => 'CIS - Metro Trains Melbourne' }, 'vehicle_position' => { 'bearing' => '107.836725606184', 'datetime_utc' => '2026-08-06T23:15:51', 'direction' => 'Inbound', 'easting' => '338412.442928515', 'expiry_time' => '2026-08-06T23:18:31', 'latitude' => '-37.8797081911373', 'longitude' => '145.162614635075', 'northing' => '5805940.31536251', 'supplier' => 'CIS - Metro Trains Melbourne' } } }, 'status' => { 'health' => 1, 'version' => '3.0' }, 'stops' => { '1012' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1012, 'stop_landmark' => '', 'stop_latitude' => '-37.8224', 'stop_longitude' => '145.045837', 'stop_name' => 'Auburn', 'stop_sequence' => 0, 'stop_suburb' => 'Hawthorn East', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1016' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1016, 'stop_landmark' => '', 'stop_latitude' => '-37.84173', 'stop_longitude' => '145.268143', 'stop_name' => 'Bayswater', 'stop_sequence' => 0, 'stop_suburb' => 'Bayswater', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'false', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1018' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1018, 'stop_landmark' => '', 'stop_latitude' => '-37.9091', 'stop_longitude' => '145.355286', 'stop_name' => 'Belgrave', 'stop_sequence' => 0, 'stop_suburb' => 'Belgrave', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1023' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1023, 'stop_landmark' => '', 'stop_latitude' => '-37.82007', 'stop_longitude' => '145.150009', 'stop_name' => 'Blackburn', 'stop_sequence' => 0, 'stop_suburb' => 'Blackburn', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1025' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1025, 'stop_landmark' => '', 'stop_latitude' => '-37.8604546', 'stop_longitude' => '145.284378', 'stop_name' => 'Boronia', 'stop_sequence' => 0, 'stop_suburb' => 'Boronia', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1026' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1026, 'stop_landmark' => '', 'stop_latitude' => '-37.8192177', 'stop_longitude' => '145.121429', 'stop_name' => 'Box Hill', 'stop_sequence' => 0, 'stop_suburb' => 'Box Hill', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'false', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1030' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1030, 'stop_landmark' => '', 'stop_latitude' => '-37.8275566', 'stop_longitude' => '145.007553', 'stop_name' => 'Burnley', 'stop_sequence' => 0, 'stop_suburb' => 'Burnley', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1032' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1032, 'stop_landmark' => '', 'stop_latitude' => '-37.8265648', 'stop_longitude' => '145.058685', 'stop_name' => 'Camberwell', 'stop_sequence' => 0, 'stop_suburb' => 'Camberwell', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1033' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1033, 'stop_landmark' => '', 'stop_latitude' => '-37.82449', 'stop_longitude' => '145.081223', 'stop_name' => 'Canterbury', 'stop_sequence' => 0, 'stop_suburb' => 'Canterbury', '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' } }, '1037' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1037, 'stop_landmark' => '', 'stop_latitude' => '-37.8241463', 'stop_longitude' => '145.08873', 'stop_name' => 'Chatham', 'stop_sequence' => 0, 'stop_suburb' => 'Surrey Hills', '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' } }, '1057' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1057, 'stop_landmark' => '', 'stop_latitude' => '-37.8258934', 'stop_longitude' => '145.068192', 'stop_name' => 'East Camberwell', 'stop_sequence' => 0, 'stop_suburb' => 'Camberwell', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1067' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1067, 'stop_landmark' => '', 'stop_latitude' => '-37.8817', 'stop_longitude' => '145.295258', 'stop_name' => 'Ferntree Gully', 'stop_sequence' => 0, 'stop_suburb' => 'Ferntree Gully', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1068' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1068, 'stop_landmark' => '', 'stop_latitude' => '-37.8119774', 'stop_longitude' => '144.955658', 'stop_name' => 'Flagstaff', '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' } }, '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' } }, '1080' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1080, 'stop_landmark' => '', 'stop_latitude' => '-37.8214645', 'stop_longitude' => '145.036438', 'stop_name' => 'Glenferrie', 'stop_sequence' => 0, 'stop_suburb' => 'Hawthorn', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1090' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1090, 'stop_landmark' => '', 'stop_latitude' => '-37.8218231', 'stop_longitude' => '145.0229', 'stop_name' => 'Hawthorn', 'stop_sequence' => 0, 'stop_suburb' => 'Hawthorn', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1091' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1091, 'stop_landmark' => '', 'stop_latitude' => '-37.81884', 'stop_longitude' => '145.213547', 'stop_name' => 'Heatherdale', 'stop_sequence' => 0, 'stop_suburb' => 'Ringwood', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1092' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1092, 'stop_landmark' => '', 'stop_latitude' => '-37.82832', 'stop_longitude' => '145.244553', 'stop_name' => 'Heathmont', 'stop_sequence' => 0, 'stop_suburb' => 'Heathmont', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1111' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1111, 'stop_landmark' => '', 'stop_latitude' => '-37.8207779', 'stop_longitude' => '145.1407', 'stop_name' => 'Laburnum', 'stop_sequence' => 0, 'stop_suburb' => 'Blackburn', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'false', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1120' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1120, 'stop_landmark' => '', 'stop_latitude' => '-37.8099365', 'stop_longitude' => '144.9626', 'stop_name' => 'Melbourne Central', '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' } }, '1128' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1128, 'stop_landmark' => '', 'stop_latitude' => '-37.8180122', 'stop_longitude' => '145.191971', 'stop_name' => 'Mitcham', 'stop_sequence' => 0, 'stop_suburb' => 'Mitcham', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1148' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1148, 'stop_landmark' => '', 'stop_latitude' => '-37.8204231', 'stop_longitude' => '145.175232', 'stop_name' => 'Nunawading', 'stop_sequence' => 0, 'stop_suburb' => 'Nunawading', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1155' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1155, 'stop_landmark' => '', 'stop_latitude' => '-37.8110542', 'stop_longitude' => '144.9729', 'stop_name' => 'Parliament', 'stop_sequence' => 0, 'stop_suburb' => 'Melbourne City', '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' } }, '1163' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1163, 'stop_landmark' => '', 'stop_latitude' => '-37.81589', 'stop_longitude' => '145.228973', 'stop_name' => 'Ringwood', 'stop_sequence' => 0, 'stop_suburb' => 'Ringwood', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'false', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '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' } }, '1191' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1191, 'stop_landmark' => '', 'stop_latitude' => '-37.9081154', 'stop_longitude' => '145.343', 'stop_name' => 'Tecoma', 'stop_sequence' => 0, 'stop_suburb' => 'Tecoma', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1199' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1199, 'stop_landmark' => '', 'stop_latitude' => '-37.8926735', 'stop_longitude' => '145.307526', 'stop_name' => 'Upper Ferntree Gully', 'stop_sequence' => 0, 'stop_suburb' => 'Upper Ferntree Gully', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1200' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1200, 'stop_landmark' => '', 'stop_latitude' => '-37.90369', 'stop_longitude' => '145.331329', 'stop_name' => 'Upwey', 'stop_sequence' => 0, 'stop_suburb' => 'Upwey', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1229' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1229, 'stop_landmark' => '', 'stop_latitude' => '-37.82312', 'stop_longitude' => '145.100281', 'stop_name' => 'Union', 'stop_sequence' => 0, 'stop_suburb' => 'Mont Albert', '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' } } } }