{
  "locos": {
    "2026-07-16": {
      "4V51_Basingstoke": {
        "camera": "",
        "expected_time": "04:23",
        "headcode": "4V51",
        "location": "Basingstoke",
        "locos": [
          "66501"
        ],
        "source": "manual",
        "train_id": "864V51C316",
        "updated_at": "2026-09-09T20:03:16+00:00"
      }
    },
    "2026-08-17": {
      "1Q19_Newark": {
        "camera": "",
        "expected_time": "16:30",
        "headcode": "1Q19",
        "location": "Newark",
        "locos": [
          "43014",
          "43062 \"John Armitt\""
        ],
        "source": "manual",
        "train_id": "151Q19CM17",
        "updated_at": "2026-08-17T17:36:30+00:00"
      },
      "1Q20_Newark": {
        "camera": "",
        "expected_time": "23:42",
        "headcode": "1Q20",
        "location": "Newark",
        "locos": [
          "43062 \"John Armitt\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "541Q20C717",
        "updated_at": "2026-08-18T03:54:34+00:00"
      },
      "1Z60_Swinton": {
        "camera": "",
        "expected_time": "18:20",
        "headcode": "1Z60",
        "location": "Swinton",
        "locos": [
          "43301",
          "43303"
        ],
        "source": "manual",
        "train_id": "571Z602U17",
        "updated_at": "2026-08-17T17:40:12+00:00"
      },
      "2Q24_Banbury": {
        "camera": "",
        "expected_time": "14:03",
        "headcode": "2Q24",
        "location": "Banbury",
        "locos": [
          "153383"
        ],
        "source": "manual",
        "train_id": "742Q241J17",
        "updated_at": "2026-08-17T17:36:13+00:00"
      },
      "5Z49_Dawlish": {
        "camera": "",
        "expected_time": "20:03",
        "headcode": "5Z49",
        "location": "Dawlish",
        "locos": [
          "175006"
        ],
        "source": "manual",
        "train_id": "845Z491Y17",
        "updated_at": "2026-08-17T19:56:50+00:00"
      },
      "6B47_Severn_Tunnel": {
        "camera": "",
        "expected_time": "20:46",
        "headcode": "6B47",
        "location": "Severn Tunnel",
        "locos": [
          "66656"
        ],
        "source": "manual",
        "train_id": "816B47CY17",
        "updated_at": "2026-08-17T20:08:16+00:00"
      },
      "6C52_Wigan": {
        "camera": "",
        "expected_time": "12:16",
        "headcode": "6C52",
        "location": "Wigan",
        "locos": [
          "66671 \"Wensleydale Railway Association 25 Years 1990-2015\""
        ],
        "source": "manual",
        "train_id": "366C52CI17",
        "updated_at": "2026-08-17T20:01:44+00:00"
      },
      "6E67_Bredon": {
        "camera": "",
        "expected_time": "18:28\u00bd",
        "headcode": "6E67",
        "location": "Bredon",
        "locos": [
          "66121",
          "66035 \"Resourceful\""
        ],
        "source": "manual",
        "train_id": "796E67CQ17",
        "updated_at": "2026-08-17T17:42:10+00:00"
      },
      "6E85_Doncaster": {
        "camera": "",
        "expected_time": "15:11",
        "headcode": "6E85",
        "location": "Doncaster",
        "locos": [
          "69005 \"Eastleigh\""
        ],
        "source": "manual",
        "train_id": "466E85CC17",
        "updated_at": "2026-08-17T17:38:32+00:00"
      },
      "6H61_Wingfield": {
        "camera": "",
        "expected_time": "19:32",
        "headcode": "6H61",
        "location": "Wingfield",
        "locos": [
          "70XXX"
        ],
        "source": "manual",
        "train_id": "656H61CV17",
        "updated_at": "2026-08-17T19:51:53+00:00"
      },
      "6J00_Banbury": {
        "camera": "",
        "expected_time": "12:35",
        "headcode": "6J00",
        "location": "Banbury",
        "locos": [
          "DR73923"
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-17T19:59:36+00:00"
      },
      "6L48_Watford": {
        "camera": "",
        "expected_time": "20:36",
        "headcode": "6L48",
        "location": "Watford",
        "locos": [
          "66314 \"Katie\""
        ],
        "source": "manual",
        "train_id": "366L48CQ17",
        "updated_at": "2026-08-17T19:56:31+00:00"
      },
      "6L72_Barking": {
        "camera": "",
        "expected_time": "19:19\u00bd",
        "headcode": "6L72",
        "location": "Barking",
        "locos": [
          "66079 \"James Nightall GC\""
        ],
        "source": "manual",
        "train_id": "736L72CW17",
        "updated_at": "2026-08-17T19:52:11+00:00"
      },
      "6M01_Chesterfield": {
        "camera": "",
        "expected_time": "11:50",
        "headcode": "6M01",
        "location": "Chesterfield",
        "locos": [
          "66787 \"Three Bridges ASC\""
        ],
        "source": "manual",
        "train_id": "256M01CH17",
        "updated_at": "2026-08-17T20:01:55+00:00"
      },
      "6M84_Thankerton": {
        "camera": "",
        "expected_time": "19:58",
        "headcode": "6M84",
        "location": "Thankerton",
        "locos": [
          "70804"
        ],
        "source": "manual",
        "train_id": "026M84CO17",
        "updated_at": "2026-08-17T19:57:50+00:00"
      },
      "6M91_Bedford": {
        "camera": "",
        "expected_time": "14:17",
        "headcode": "6M91",
        "location": "Bedford",
        "locos": [
          "66618 \"Railways Illustrated Annual Photographic Awards Al\""
        ],
        "source": "manual",
        "train_id": "746M91CI17",
        "updated_at": "2026-08-17T19:58:42+00:00"
      },
      "6Q75_Bredon": {
        "camera": "",
        "expected_time": "13:12",
        "headcode": "6Q75",
        "location": "Bredon",
        "locos": [
          "DR75016"
        ],
        "source": "manual",
        "train_id": "836Q751E17",
        "updated_at": "2026-08-17T20:01:27+00:00"
      },
      "6S50_Thankerton": {
        "camera": "",
        "expected_time": "14:55",
        "headcode": "6S50",
        "location": "Thankerton",
        "locos": [
          "66155 \"Jackie Cleave\""
        ],
        "source": "manual",
        "train_id": "096S50CK17",
        "updated_at": "2026-08-17T19:58:31+00:00"
      },
      "6V55_Bredon": {
        "camera": "",
        "expected_time": "19:40",
        "headcode": "6V55",
        "location": "Bredon",
        "locos": [
          "66727 \"Maritime One\""
        ],
        "source": "manual",
        "train_id": "556V551Q17",
        "updated_at": "2026-08-17T19:57:59+00:00"
      },
      "6V55_Severn_Tunnel": {
        "camera": "",
        "expected_time": "20:59",
        "headcode": "6V55",
        "location": "Severn Tunnel",
        "locos": [
          "66727 \"Maritime One\""
        ],
        "source": "manual",
        "train_id": "556V551Q17",
        "updated_at": "2026-08-17T20:08:00+00:00"
      }
    },
    "2026-08-18": {
      "0E14_Derby": {
        "camera": "",
        "expected_time": "08:05",
        "headcode": "0E14",
        "location": "Derby",
        "locos": [
          "37501 \"Teesside Steelmaster\""
        ],
        "source": "manual",
        "train_id": "570E142C18",
        "updated_at": "2026-08-18T16:19:01+00:00"
      },
      "0E14_Swinton": {
        "camera": "",
        "expected_time": "08:57",
        "headcode": "0E14",
        "location": "Swinton",
        "locos": [
          "37501 \"Teesside Steelmaster\""
        ],
        "source": "manual",
        "train_id": "570E142C18",
        "updated_at": "2026-08-18T14:40:58+00:00"
      },
      "0E57_Chesterfield": {
        "camera": "",
        "expected_time": "12:16\u00bd",
        "headcode": "0E57",
        "location": "Chesterfield",
        "locos": [
          "57306 \"Branch Line Society\"",
          "57310 \"UK Railtours\""
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-18T14:57:55+00:00"
      },
      "0M51_Thankerton": {
        "camera": "",
        "expected_time": "",
        "headcode": "0M51",
        "location": "Thankerton",
        "locos": [
          "66155"
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-18T14:38:46+00:00"
      },
      "0M58_Watford": {
        "camera": "",
        "expected_time": "11:51",
        "headcode": "0M58",
        "location": "Watford",
        "locos": [
          "37800 \"Cassiopeia\""
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-18T16:24:52+00:00"
      },
      "0Z40_Watford": {
        "camera": "",
        "expected_time": "11:48",
        "headcode": "0Z40",
        "location": "Watford",
        "locos": [
          "57302",
          "47593 \"Galloway Princess\""
        ],
        "source": "manual",
        "train_id": "420Z402C18",
        "updated_at": "2026-08-18T14:50:37+00:00"
      },
      "0Z88_Garsdale": {
        "camera": "",
        "expected_time": "15:17",
        "headcode": "0Z88",
        "location": "Garsdale",
        "locos": [
          "37409 \"Loch Awe\""
        ],
        "source": "manual",
        "train_id": "270Z881K18",
        "updated_at": "2026-08-18T16:33:30+00:00"
      },
      "0Z88_Swinton": {
        "camera": "",
        "expected_time": "12:33",
        "headcode": "0Z88",
        "location": "Swinton",
        "locos": [
          "37409 \"Loch Awe\""
        ],
        "source": "manual",
        "train_id": "270Z881K18",
        "updated_at": "2026-08-18T15:04:14+00:00"
      },
      "1M11_Watford": {
        "camera": "",
        "expected_time": "",
        "headcode": "1M11",
        "location": "Watford",
        "locos": [
          "47805 (D1935) \"Roger Hosking MA 1925-2013\"",
          "47810 (D1924) \"Crewe Diesel Depot\""
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-09-09T18:26:32+00:00"
      },
      "1Q20_Swinton": {
        "camera": "",
        "expected_time": "00:55",
        "headcode": "1Q20",
        "location": "Swinton",
        "locos": [
          "43062 \"John Armitt\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "541Q20C717",
        "updated_at": "2026-08-18T14:13:26+00:00"
      },
      "3Q19_Swinton": {
        "camera": "",
        "expected_time": "01:04",
        "headcode": "3Q19",
        "location": "Swinton",
        "locos": [
          "37424",
          "37425 \"Sir Robert McAlpine / Concrete Bob\""
        ],
        "source": "manual",
        "train_id": "573Q19C917",
        "updated_at": "2026-08-18T05:31:43+00:00"
      },
      "5Q66_Chesterfield": {
        "camera": "",
        "expected_time": "12:01",
        "headcode": "5Q66",
        "location": "Chesterfield",
        "locos": [
          "37501 \"Teesside Steelmaster\"",
          "730027",
          "730025"
        ],
        "source": "manual",
        "train_id": "165Q661H18",
        "updated_at": "2026-08-18T15:00:10+00:00"
      },
      "5Q66_Swinton": {
        "camera": "",
        "expected_time": "11:24\u00bd",
        "headcode": "5Q66",
        "location": "Swinton",
        "locos": [
          "37501 \"Teesside Steelmaster\"",
          "730027",
          "730025"
        ],
        "source": "manual",
        "train_id": "165Q661H18",
        "updated_at": "2026-08-18T14:47:58+00:00"
      },
      "5Q66_Wingfield": {
        "camera": "",
        "expected_time": "12:16",
        "headcode": "5Q66",
        "location": "Wingfield",
        "locos": [
          "37501 \"Teesside Steelmaster\"",
          "730027",
          "730025"
        ],
        "source": "manual",
        "train_id": "165Q661H18",
        "updated_at": "2026-08-18T15:00:21+00:00"
      },
      "5Q87_Watford": {
        "camera": "",
        "expected_time": "13:27",
        "headcode": "5Q87",
        "location": "Watford",
        "locos": [
          "701507",
          "701511",
          "37800 \"Cassiopeia\"",
          "37884 \"Cepheus\""
        ],
        "source": "manual",
        "train_id": "575Q872G18",
        "updated_at": "2026-08-18T16:08:58+00:00"
      },
      "6A11_Severn_Tunnel": {
        "camera": "",
        "expected_time": "03:15\u00bd",
        "headcode": "6A11",
        "location": "Severn Tunnel",
        "locos": [
          "66654"
        ],
        "source": "manual",
        "train_id": "806A11C817",
        "updated_at": "2026-08-18T14:11:17+00:00"
      },
      "6A61_Newbury": {
        "camera": "",
        "expected_time": "14:18\u00bd",
        "headcode": "6A61",
        "location": "Newbury",
        "locos": [
          "59005 \"Kenneth J Painter\""
        ],
        "source": "manual",
        "train_id": "826A61CK18",
        "updated_at": "2026-08-18T15:14:00+00:00"
      },
      "6B51_Watford": {
        "camera": "",
        "expected_time": "12:50",
        "headcode": "6B51",
        "location": "Watford",
        "locos": [
          "66704 \"Colchester Power Signalbox\"",
          "66710 \"Karen Harrison\""
        ],
        "source": "manual",
        "train_id": "726B51CI18",
        "updated_at": "2026-08-18T15:08:20+00:00"
      },
      "6C52_Horton": {
        "camera": "",
        "expected_time": "14:16",
        "headcode": "6C52",
        "location": "Horton",
        "locos": [
          "66671 \"Wensleydale Railway Association 25 Years 1990-2015\""
        ],
        "source": "manual",
        "train_id": "356C52CJ18",
        "updated_at": "2026-08-18T15:14:57+00:00"
      },
      "6D89_Keighley": {
        "camera": "",
        "expected_time": "05:14",
        "headcode": "6D89",
        "location": "Keighley",
        "locos": [
          "66301 \"Drax Power Station 50\""
        ],
        "source": "manual",
        "train_id": "176D89C418",
        "updated_at": "2026-08-18T14:27:19+00:00"
      },
      "6G10_Derby": {
        "camera": "",
        "expected_time": "02:50",
        "headcode": "6G10",
        "location": "Derby",
        "locos": [
          "66601 \"The Hope Valley\""
        ],
        "source": "manual",
        "train_id": "346G10C018",
        "updated_at": "2026-08-18T14:09:25+00:00"
      },
      "6G10_Wingfield": {
        "camera": "",
        "expected_time": "02:37\u00bd",
        "headcode": "6G10",
        "location": "Wingfield",
        "locos": [
          "66601 \"The Hope Valley\""
        ],
        "source": "manual",
        "train_id": "346G10C018",
        "updated_at": "2026-08-18T14:09:44+00:00"
      },
      "6J15_Swinton": {
        "camera": "",
        "expected_time": "12:30",
        "headcode": "6J15",
        "location": "Swinton",
        "locos": [
          "DR75404"
        ],
        "source": "manual",
        "train_id": "566J151G18",
        "updated_at": "2026-08-18T15:07:02+00:00"
      },
      "6L38_Thankerton": {
        "camera": "",
        "expected_time": "18:21\u00bd",
        "headcode": "6L38",
        "location": "Thankerton",
        "locos": [
          "66741 \"Swanage Railway\""
        ],
        "source": "manual",
        "train_id": "076L38CV18",
        "updated_at": "2026-08-18T17:30:29+00:00"
      },
      "6M37_Keighley": {
        "camera": "",
        "expected_time": "13:48",
        "headcode": "6M37",
        "location": "Keighley",
        "locos": [
          "66730 \"Whitemoor\""
        ],
        "source": "manual",
        "train_id": "096M37CI18",
        "updated_at": "2026-08-18T15:12:40+00:00"
      },
      "6M90_Bredon": {
        "camera": "",
        "expected_time": "06:27",
        "headcode": "6M90",
        "location": "Bredon",
        "locos": [
          "66797"
        ],
        "source": "manual",
        "train_id": "816M90C518",
        "updated_at": "2026-08-18T14:32:56+00:00"
      },
      "6M92_St_Albans": {
        "camera": "",
        "expected_time": "15:26",
        "headcode": "6M92",
        "location": "St Albans",
        "locos": [
          "66603"
        ],
        "source": "manual",
        "train_id": "516M92CM18",
        "updated_at": "2026-08-18T16:08:42+00:00"
      },
      "6V70_Newbury": {
        "camera": "",
        "expected_time": "19:11",
        "headcode": "6V70",
        "location": "Newbury",
        "locos": [
          "66416",
          "66564"
        ],
        "source": "manual",
        "train_id": "726V70CT18",
        "updated_at": "2026-08-18T18:15:01+00:00"
      }
    },
    "2026-08-19": {
      "0Z47_Wigan": {
        "camera": "",
        "expected_time": "14:42\u00bd",
        "headcode": "0Z47",
        "location": "Wigan",
        "locos": [
          "47760",
          "57012"
        ],
        "source": "manual",
        "train_id": "110Z471L19",
        "updated_at": "2026-08-19T14:49:46+00:00"
      },
      "0Z55_Swinton": {
        "camera": "",
        "expected_time": "13:49\u00bd",
        "headcode": "0Z55",
        "location": "Swinton",
        "locos": [
          "66118"
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-19T18:17:20+00:00"
      },
      "0Z98_Derby": {
        "camera": "",
        "expected_time": "11:23",
        "headcode": "0Z98",
        "location": "Derby",
        "locos": [
          "67023 \"Stella\"",
          "66549"
        ],
        "source": "manual",
        "train_id": "170Z982E19",
        "updated_at": "2026-08-19T17:17:51+00:00"
      },
      "0Z98_Wingfield": {
        "camera": "",
        "expected_time": "11:14",
        "headcode": "0Z98",
        "location": "Wingfield",
        "locos": [
          "67023 \"Stella\"",
          "66549"
        ],
        "source": "manual",
        "train_id": "170Z982E19",
        "updated_at": "2026-08-19T17:19:30+00:00"
      },
      "1Z46_Bredon": {
        "camera": "",
        "expected_time": "10:56",
        "headcode": "1Z46",
        "location": "Bredon",
        "locos": [
          "43049 \"Neville Hill\"",
          "43050 \"Loch Morar\""
        ],
        "source": "manual",
        "train_id": "411Z461619",
        "updated_at": "2026-08-19T18:19:33+00:00"
      },
      "1Z47_Dawlish": {
        "camera": "",
        "expected_time": "17:19",
        "headcode": "1Z47",
        "location": "Dawlish",
        "locos": [
          "43050 \"Loch Morar\"",
          "43049 \"Neville Hill\""
        ],
        "source": "manual",
        "train_id": "831Z471T19",
        "updated_at": "2026-08-19T17:00:38+00:00"
      },
      "1Z64_Keighley": {
        "camera": "",
        "expected_time": "19:49",
        "headcode": "1Z64",
        "location": "Keighley",
        "locos": [
          "47813",
          "37669"
        ],
        "source": "manual",
        "train_id": "161Z641S19",
        "updated_at": "2026-08-19T23:12:15+00:00"
      },
      "1Z92_Basingstoke": {
        "camera": "",
        "expected_time": "18:26",
        "headcode": "1Z92",
        "location": "Basingstoke",
        "locos": [
          "67021",
          "67005 \"King's Messenger\""
        ],
        "source": "manual",
        "train_id": "871Z921T19",
        "updated_at": "2026-08-19T18:09:31+00:00"
      },
      "4L68_Barking": {
        "camera": "",
        "expected_time": "20:31",
        "headcode": "4L68",
        "location": "Barking",
        "locos": [
          "99003",
          "99001"
        ],
        "source": "manual",
        "train_id": "664L681M19",
        "updated_at": "2026-08-19T23:14:09+00:00"
      },
      "4Z61_Newark": {
        "camera": "",
        "expected_time": "21:27",
        "headcode": "4Z61",
        "location": "Newark",
        "locos": [
          "99006",
          "99010"
        ],
        "source": "manual",
        "train_id": "234Z611Z19",
        "updated_at": "2026-08-19T23:06:09+00:00"
      },
      "5Q31_York_North": {
        "camera": "",
        "expected_time": "17:36\u00bd",
        "headcode": "5Q31",
        "location": "York North",
        "locos": [
          "810003",
          "810004"
        ],
        "source": "manual",
        "train_id": "235Q311T19",
        "updated_at": "2026-08-19T18:09:50+00:00"
      },
      "5Z47_Dawlish": {
        "camera": "",
        "expected_time": "16:56",
        "headcode": "5Z47",
        "location": "Dawlish",
        "locos": [
          "175115"
        ],
        "source": "manual",
        "train_id": "845Z471S19",
        "updated_at": "2026-08-19T17:06:17+00:00"
      },
      "6A18_Newbury": {
        "camera": "",
        "expected_time": "12:02",
        "headcode": "6A18",
        "location": "Newbury",
        "locos": [
          "66561"
        ],
        "source": "manual",
        "train_id": "826A18CE19",
        "updated_at": "2026-08-19T18:18:53+00:00"
      },
      "6A26_Watford": {
        "camera": "",
        "expected_time": "01:57",
        "headcode": "6A26",
        "location": "Watford",
        "locos": [
          "60055 \"Thomas Barnardo\""
        ],
        "source": "manual",
        "train_id": "406A261Y18",
        "updated_at": "2026-08-19T18:23:39+00:00"
      },
      "6A50_Newbury": {
        "camera": "",
        "expected_time": "12:25",
        "headcode": "6A50",
        "location": "Newbury",
        "locos": [
          "59206 \"John F. Yeoman - Rail Pioneer\""
        ],
        "source": "manual",
        "train_id": "826A50CG19",
        "updated_at": "2026-08-19T18:18:07+00:00"
      },
      "6A61_Newbury": {
        "camera": "",
        "expected_time": "14:18\u00bd",
        "headcode": "6A61",
        "location": "Newbury",
        "locos": [
          "59xxx"
        ],
        "source": "manual",
        "train_id": "826A61CK19",
        "updated_at": "2026-08-19T18:16:40+00:00"
      },
      "6A70_Newbury": {
        "camera": "",
        "expected_time": "16:20",
        "headcode": "6A70",
        "location": "Newbury",
        "locos": [
          "66413"
        ],
        "source": "manual",
        "train_id": "826A70CO19",
        "updated_at": "2026-08-19T18:12:02+00:00"
      },
      "6B51_Watford": {
        "camera": "",
        "expected_time": "12:48",
        "headcode": "6B51",
        "location": "Watford",
        "locos": [
          "66704 \"Colchester Power Signalbox\"",
          "66710 \"Karen Harrison\""
        ],
        "source": "manual",
        "train_id": "726B51CI19",
        "updated_at": "2026-08-19T14:59:33+00:00"
      },
      "6C52_Horton": {
        "camera": "",
        "expected_time": "14:06",
        "headcode": "6C52",
        "location": "Horton",
        "locos": [
          "66671 \"Wensleydale Railway Association 25 Years 1990-2015\""
        ],
        "source": "manual",
        "train_id": "356C52CJ19",
        "updated_at": "2026-08-19T18:16:45+00:00"
      },
      "6C52_Wigan": {
        "camera": "",
        "expected_time": "11:41",
        "headcode": "6C52",
        "location": "Wigan",
        "locos": [
          "66671 \"Wensleydale Railway Association 25 Years 1990-2015\""
        ],
        "source": "manual",
        "train_id": "356C52CJ19",
        "updated_at": "2026-08-19T18:18:57+00:00"
      },
      "6C92_Severn_Tunnel": {
        "camera": "",
        "expected_time": "10:06",
        "headcode": "6C92",
        "location": "Severn Tunnel",
        "locos": [
          "66771 \"Amanda\""
        ],
        "source": "manual",
        "train_id": "796C921B19",
        "updated_at": "2026-08-19T18:20:09+00:00"
      },
      "6D12_York_North": {
        "camera": "",
        "expected_time": "15:54",
        "headcode": "6D12",
        "location": "York North",
        "locos": [
          "66026"
        ],
        "source": "manual",
        "train_id": "156D12CM19",
        "updated_at": "2026-08-19T18:12:08+00:00"
      },
      "6D89_Keighley": {
        "camera": "",
        "expected_time": "05:11",
        "headcode": "6D89",
        "location": "Keighley",
        "locos": [
          "66730 \"Whitemoor\""
        ],
        "source": "manual",
        "train_id": "236D89C319",
        "updated_at": "2026-08-19T18:22:10+00:00"
      },
      "6E11_Banbury": {
        "camera": "",
        "expected_time": "13:29",
        "headcode": "6E11",
        "location": "Banbury",
        "locos": [
          "66139"
        ],
        "source": "manual",
        "train_id": "746E11CJ19",
        "updated_at": "2026-08-19T18:17:29+00:00"
      },
      "6E15_Banbury": {
        "camera": "",
        "expected_time": "23:18\u00bd",
        "headcode": "6E15",
        "location": "Banbury",
        "locos": [
          "66311"
        ],
        "source": "manual",
        "train_id": "866E15C719",
        "updated_at": "2026-08-19T22:56:58+00:00"
      },
      "6E15_Basingstoke": {
        "camera": "",
        "expected_time": "22:02",
        "headcode": "6E15",
        "location": "Basingstoke",
        "locos": [
          "66311"
        ],
        "source": "manual",
        "train_id": "866E15C719",
        "updated_at": "2026-08-19T23:03:36+00:00"
      },
      "6E30_Swinton": {
        "camera": "",
        "expected_time": "03:19\u00bd",
        "headcode": "6E30",
        "location": "Swinton",
        "locos": [
          "66127"
        ],
        "source": "manual",
        "train_id": "796E30CX18",
        "updated_at": "2026-08-19T18:22:48+00:00"
      },
      "6E30_York_North": {
        "camera": "",
        "expected_time": "04:41",
        "headcode": "6E30",
        "location": "York North",
        "locos": [
          "66127"
        ],
        "source": "manual",
        "train_id": "796E30CX18",
        "updated_at": "2026-08-19T18:22:17+00:00"
      },
      "6E39_Doncaster": {
        "camera": "",
        "expected_time": "01:09",
        "headcode": "6E39",
        "location": "Doncaster",
        "locos": [
          "66730 \"Whitemoor\""
        ],
        "source": "manual",
        "train_id": "316E39C818",
        "updated_at": "2026-08-19T17:57:42+00:00"
      },
      "6E49_Bredon": {
        "camera": "",
        "expected_time": "00:59",
        "headcode": "6E49",
        "location": "Bredon",
        "locos": [
          "66179",
          "66658"
        ],
        "source": "manual",
        "train_id": "776E49C918",
        "updated_at": "2026-08-19T18:01:07+00:00"
      },
      "6E67_Bredon": {
        "camera": "",
        "expected_time": "18:24\u00bd",
        "headcode": "6E67",
        "location": "Bredon",
        "locos": [
          "66654"
        ],
        "source": "manual",
        "train_id": "796E67CQ19",
        "updated_at": "2026-08-19T18:06:18+00:00"
      },
      "6E77_Keighley": {
        "camera": "",
        "expected_time": "18:49\u00bd",
        "headcode": "6E77",
        "location": "Keighley",
        "locos": [
          "66301 \"Drax Power Station 50\""
        ],
        "source": "manual",
        "train_id": "096E77CT19",
        "updated_at": "2026-08-19T18:03:57+00:00"
      },
      "6E98_York_North": {
        "camera": "",
        "expected_time": "05:40",
        "headcode": "6E98",
        "location": "York North",
        "locos": [
          "66787 \"Three Bridges ASC\""
        ],
        "source": "manual",
        "train_id": "586E981119",
        "updated_at": "2026-08-19T18:21:53+00:00"
      },
      "6H55_York_North": {
        "camera": "",
        "expected_time": "19:41",
        "headcode": "6H55",
        "location": "York North",
        "locos": [
          "66742 \"ABP Port of Immingham Centenary 1912-2012\""
        ],
        "source": "manual",
        "train_id": "136H55CU19",
        "updated_at": "2026-08-19T20:16:06+00:00"
      },
      "6H61_Wingfield": {
        "camera": "",
        "expected_time": "19:35",
        "headcode": "6H61",
        "location": "Wingfield",
        "locos": [
          "70003"
        ],
        "source": "manual",
        "train_id": "656H61CV19",
        "updated_at": "2026-08-19T20:15:20+00:00"
      },
      "6L10_St_Albans": {
        "camera": "",
        "expected_time": "02:24",
        "headcode": "6L10",
        "location": "St Albans",
        "locos": [
          "66614 \"Poppy 1916 - 2018\""
        ],
        "source": "manual",
        "train_id": "346L10CZ18",
        "updated_at": "2026-08-19T18:23:04+00:00"
      },
      "6L38_Wigan": {
        "camera": "",
        "expected_time": "00:29",
        "headcode": "6L38",
        "location": "Wigan",
        "locos": [
          "66741 \"Swanage Railway\""
        ],
        "source": "manual",
        "train_id": "076L38CV18",
        "updated_at": "2026-08-19T18:01:41+00:00"
      },
      "6L72_Barking": {
        "camera": "",
        "expected_time": "19:19\u00bd",
        "headcode": "6L72",
        "location": "Barking",
        "locos": [
          "66090 \"Maritime Intermodal Six\""
        ],
        "source": "manual",
        "train_id": "736L72CW19",
        "updated_at": "2026-08-19T19:39:09+00:00"
      },
      "6M31_Keighley": {
        "camera": "",
        "expected_time": "11:41\u00bd",
        "headcode": "6M31",
        "location": "Keighley",
        "locos": [
          "66301 \"Drax Power Station 50\""
        ],
        "source": "manual",
        "train_id": "176M31CF19",
        "updated_at": "2026-08-19T17:14:52+00:00"
      },
      "6M42_Bredon": {
        "camera": "",
        "expected_time": "11:25",
        "headcode": "6M42",
        "location": "Bredon",
        "locos": [
          "66786 \"Cambridge University Railway Club\""
        ],
        "source": "manual",
        "train_id": "816M42CF19",
        "updated_at": "2026-08-19T18:19:19+00:00"
      },
      "6M45_Watford": {
        "camera": "",
        "expected_time": "10:39",
        "headcode": "6M45",
        "location": "Watford",
        "locos": [
          "66091 \"accurascale\""
        ],
        "source": "manual",
        "train_id": "896M45C619",
        "updated_at": "2026-08-19T18:19:39+00:00"
      },
      "6M72_York_North": {
        "camera": "",
        "expected_time": "20:20",
        "headcode": "6M72",
        "location": "York North",
        "locos": [
          "66425 \"Nigel J Kirchstein 1957-2021\""
        ],
        "source": "manual",
        "train_id": "236M72CX19",
        "updated_at": "2026-08-19T23:10:33+00:00"
      },
      "6M95_Watford": {
        "camera": "",
        "expected_time": "20:58",
        "headcode": "6M95",
        "location": "Watford",
        "locos": [
          "68007 \"30 Years of DRS\"",
          "68001 \"Evolution\""
        ],
        "source": "manual",
        "train_id": "896M95CT19",
        "updated_at": "2026-08-19T23:07:53+00:00"
      },
      "6M96_Barking": {
        "camera": "",
        "expected_time": "00:20",
        "headcode": "6M96",
        "location": "Barking",
        "locos": [
          "66xxx"
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-19T18:02:16+00:00"
      },
      "6O71_Watford": {
        "camera": "",
        "expected_time": "16:22",
        "headcode": "6O71",
        "location": "Watford",
        "locos": [
          "66091 \"accurascale\""
        ],
        "source": "manual",
        "train_id": "706O71CP19",
        "updated_at": "2026-08-19T18:11:56+00:00"
      },
      "6S50_Thankerton": {
        "camera": "",
        "expected_time": "15:00\u00bd",
        "headcode": "6S50",
        "location": "Thankerton",
        "locos": [
          "66109 \"Teesport Express\""
        ],
        "source": "manual",
        "train_id": "096S50CK19",
        "updated_at": "2026-08-19T18:13:23+00:00"
      },
      "6U33_Ribblehead": {
        "camera": "",
        "expected_time": "02:03",
        "headcode": "6U33",
        "location": "Ribblehead",
        "locos": [
          "DR80213"
        ],
        "source": "manual",
        "train_id": "296U331718",
        "updated_at": "2026-08-19T18:23:22+00:00"
      },
      "6V06_Watford": {
        "camera": "",
        "expected_time": "16:27",
        "headcode": "6V06",
        "location": "Watford",
        "locos": [
          "66050 \"Yorkshire Rose\""
        ],
        "source": "manual",
        "train_id": "576V06CJ19",
        "updated_at": "2026-08-19T18:10:50+00:00"
      },
      "6V12_Barking": {
        "camera": "",
        "expected_time": "01:02",
        "headcode": "6V12",
        "location": "Barking",
        "locos": [
          "66xxx \"Maritime\""
        ],
        "source": "manual",
        "train_id": "516V12C019",
        "updated_at": "2026-08-19T17:59:25+00:00"
      },
      "6V18_Newbury": {
        "camera": "",
        "expected_time": "14:50",
        "headcode": "6V18",
        "location": "Newbury",
        "locos": [
          "66588"
        ],
        "source": "manual",
        "train_id": "746V18CN19",
        "updated_at": "2026-08-19T18:13:29+00:00"
      },
      "6V53_Newbury": {
        "camera": "",
        "expected_time": "12:08",
        "headcode": "6V53",
        "location": "Newbury",
        "locos": [
          "66546"
        ],
        "source": "manual",
        "train_id": "746V531H19",
        "updated_at": "2026-08-19T18:18:48+00:00"
      },
      "6V60_Newbury": {
        "camera": "",
        "expected_time": "17:09\u00bd",
        "headcode": "6V60",
        "location": "Newbury",
        "locos": [
          "66957 \"Stephenson Locomotive Society 1909-2009\"",
          "66605 \"Tribute\""
        ],
        "source": "manual",
        "train_id": "726V60CP19",
        "updated_at": "2026-08-19T18:10:40+00:00"
      },
      "6V70_Newbury": {
        "camera": "",
        "expected_time": "19:05",
        "headcode": "6V70",
        "location": "Newbury",
        "locos": [
          "59202 \"Pride of Ferrybridge\"",
          "59204 \"Vale of Glamorgan\""
        ],
        "source": "manual",
        "train_id": "726V70CT19",
        "updated_at": "2026-08-19T18:08:36+00:00"
      },
      "6V81_Derby": {
        "camera": "",
        "expected_time": "19:40",
        "headcode": "6V81",
        "location": "Derby",
        "locos": [
          "66653 \"Barry Needham\""
        ],
        "source": "manual",
        "train_id": "256V81CW19",
        "updated_at": "2026-08-19T20:17:58+00:00"
      },
      "6V81_Wingfield": {
        "camera": "",
        "expected_time": "19:11\u00bd",
        "headcode": "6V81",
        "location": "Wingfield",
        "locos": [
          "66653 \"Barry Needham\""
        ],
        "source": "manual",
        "train_id": "256V81CW19",
        "updated_at": "2026-08-19T19:38:27+00:00"
      },
      "6V95_Newbury": {
        "camera": "",
        "expected_time": "12:56",
        "headcode": "6V95",
        "location": "Newbury",
        "locos": [
          "60099 \"Ben More Assynt\""
        ],
        "source": "manual",
        "train_id": "726V95CG19",
        "updated_at": "2026-08-19T18:17:34+00:00"
      },
      "6X22_Chesterfield": {
        "camera": "",
        "expected_time": "14:29",
        "headcode": "6X22",
        "location": "Chesterfield",
        "locos": [
          "57310 \"UK Railtours\"",
          "57306 \"Branch Line Society\""
        ],
        "source": "manual",
        "train_id": "206X221K19",
        "updated_at": "2026-08-19T14:52:31+00:00"
      },
      "6Z05_Bredon": {
        "camera": "",
        "expected_time": "23:37",
        "headcode": "6Z05",
        "location": "Bredon",
        "locos": [
          "66656"
        ],
        "source": "manual",
        "train_id": "796Z052X19",
        "updated_at": "2026-08-19T22:57:04+00:00"
      },
      "6Z05_Severn_Tunnel": {
        "camera": "",
        "expected_time": "22:01",
        "headcode": "6Z05",
        "location": "Severn Tunnel",
        "locos": [
          "66656"
        ],
        "source": "manual",
        "train_id": "796Z052X19",
        "updated_at": "2026-08-19T23:03:19+00:00"
      },
      "6Z37_Keighley": {
        "camera": "",
        "expected_time": "13:43\u00bd",
        "headcode": "6Z37",
        "location": "Keighley",
        "locos": [
          "66730 \"Whitemoor\""
        ],
        "source": "manual",
        "train_id": "096Z371L19",
        "updated_at": "2026-08-19T18:17:25+00:00"
      },
      "6Z51_Newbury": {
        "camera": "",
        "expected_time": "12:31",
        "headcode": "6Z51",
        "location": "Newbury",
        "locos": [
          "60029 \"Ben Nevis\""
        ],
        "source": "manual",
        "train_id": "826Z511G19",
        "updated_at": "2026-08-19T18:17:40+00:00"
      }
    },
    "2026-08-20": {
      "0M57_Derby": {
        "camera": "",
        "expected_time": "15:55",
        "headcode": "0M57",
        "location": "Derby",
        "locos": [
          "37800 \"Cassiopeia\""
        ],
        "source": "manual",
        "train_id": "650M571O20",
        "updated_at": "2026-08-20T18:19:42+00:00"
      },
      "0M58_Derby": {
        "camera": "",
        "expected_time": "16:31",
        "headcode": "0M58",
        "location": "Derby",
        "locos": [
          "37501 \"Teesside Steelmaster,\""
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-20T18:17:48+00:00"
      },
      "0Q59_Basingstoke": {
        "camera": "",
        "expected_time": "10:20",
        "headcode": "0Q59",
        "location": "Basingstoke",
        "locos": [
          "93003",
          "68024"
        ],
        "source": "manual",
        "train_id": "860Q591F20",
        "updated_at": "2026-08-20T14:23:41+00:00"
      },
      "0Z37_Watford": {
        "camera": "",
        "expected_time": "21:42",
        "headcode": "0Z37",
        "location": "Watford",
        "locos": [
          "47727 \"Edinburgh Castle / Caisteal Dh\u00f9n \u00c8ideann\"",
          "47739"
        ],
        "source": "manual",
        "train_id": "870Z372Z20",
        "updated_at": "2026-08-20T21:14:42+00:00"
      },
      "0Z47_Swinton": {
        "camera": "",
        "expected_time": "12:49\u00bd",
        "headcode": "0Z47",
        "location": "Swinton",
        "locos": [
          "57310 \"UK Railtours\"",
          "73966"
        ],
        "source": "manual",
        "train_id": "590Z471H20",
        "updated_at": "2026-08-20T14:19:30+00:00"
      },
      "1Z57_Beattock": {
        "camera": "",
        "expected_time": "11:12",
        "headcode": "1Z57",
        "location": "Beattock",
        "locos": [
          "57314 \"Conwy Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "361Z571A20",
        "updated_at": "2026-08-20T14:22:55+00:00"
      },
      "1Z57_Wigan": {
        "camera": "",
        "expected_time": "08:05",
        "headcode": "1Z57",
        "location": "Wigan",
        "locos": [
          "57314 \"Conwy Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "361Z571A20",
        "updated_at": "2026-08-20T14:25:49+00:00"
      },
      "1Z58_Bolton_Le_Sands": {
        "camera": "",
        "expected_time": "21:15",
        "headcode": "1Z58",
        "location": "Bolton Le Sands",
        "locos": [
          "57314 \"Conwy Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "041Z581U20",
        "updated_at": "2026-08-20T20:33:43+00:00"
      },
      "1Z58_Thankerton": {
        "camera": "",
        "expected_time": "17:48",
        "headcode": "1Z58",
        "location": "Thankerton",
        "locos": [
          "57314 \"Conwy Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "041Z581U20",
        "updated_at": "2026-08-20T18:15:25+00:00"
      },
      "4E00_Barking": {
        "camera": "",
        "expected_time": "05:18",
        "headcode": "4E00",
        "location": "Barking",
        "locos": [
          "66715 \"Valour IN MEMORY OF ALL RAILWAY EMPLOYEES WHO GAVE\"",
          "99001"
        ],
        "source": "manual",
        "train_id": "514E00C420",
        "updated_at": "2026-08-20T05:31:03+00:00"
      },
      "4M47_Watford": {
        "camera": "",
        "expected_time": "14:48",
        "headcode": "4M47",
        "location": "Watford",
        "locos": [
          "99002"
        ],
        "source": "manual",
        "train_id": "514M47CJ20",
        "updated_at": "2026-08-20T14:29:51+00:00"
      },
      "5Q16_Derby": {
        "camera": "",
        "expected_time": "11:32",
        "headcode": "5Q16",
        "location": "Derby",
        "locos": [
          "37501 \"Teesside Steelmaster\""
        ],
        "source": "manual",
        "train_id": "655Q161F20",
        "updated_at": "2026-08-20T14:22:09+00:00"
      },
      "5Q69_Chesterfield": {
        "camera": "",
        "expected_time": "15:52\u00bd",
        "headcode": "5Q69",
        "location": "Chesterfield",
        "locos": [
          "165015"
        ],
        "source": "manual",
        "train_id": "235Q691P20",
        "updated_at": "2026-08-20T15:07:07+00:00"
      },
      "5Q69_Wingfield": {
        "camera": "",
        "expected_time": "16:08",
        "headcode": "5Q69",
        "location": "Wingfield",
        "locos": [
          "165015"
        ],
        "source": "manual",
        "train_id": "235Q691P20",
        "updated_at": "2026-08-20T18:18:42+00:00"
      },
      "6A80_Newbury": {
        "camera": "",
        "expected_time": "20:22\u00bd",
        "headcode": "6A80",
        "location": "Newbury",
        "locos": [
          "59201 \"Westbury PSB 1984-2024\""
        ],
        "source": "manual",
        "train_id": "826A80CX20",
        "updated_at": "2026-08-20T19:41:18+00:00"
      },
      "6C52_Horton": {
        "camera": "",
        "expected_time": "14:04",
        "headcode": "6C52",
        "location": "Horton",
        "locos": [
          "66671 \"Wensleydale Railway Association 25 Years 1990-2015\""
        ],
        "source": "manual",
        "train_id": "356C52CJ20",
        "updated_at": "2026-08-20T14:40:58+00:00"
      },
      "6D31_Keighley": {
        "camera": "",
        "expected_time": "19:41",
        "headcode": "6D31",
        "location": "Keighley",
        "locos": [
          "66770 \"Darius Cheskin\""
        ],
        "source": "manual",
        "train_id": "096D31CW20",
        "updated_at": "2026-08-20T20:37:38+00:00"
      },
      "6D33_Doncaster": {
        "camera": "",
        "expected_time": "09:37",
        "headcode": "6D33",
        "location": "Doncaster",
        "locos": [
          "66310 \"Bo'ness and Kinneil Railway\""
        ],
        "source": "manual",
        "train_id": "096D331420",
        "updated_at": "2026-08-20T14:58:35+00:00"
      },
      "6D37_Keighley": {
        "camera": "",
        "expected_time": "13:51",
        "headcode": "6D37",
        "location": "Keighley",
        "locos": [
          "66301 \"Drax Power Station 50\""
        ],
        "source": "manual",
        "train_id": "096D37CK20",
        "updated_at": "2026-08-20T14:42:26+00:00"
      },
      "6D51_Keighley": {
        "camera": "",
        "expected_time": "13:10\u00bd",
        "headcode": "6D51",
        "location": "Keighley",
        "locos": [
          "66770 \"Darius Cheskin\""
        ],
        "source": "manual",
        "train_id": "176D51CJ20",
        "updated_at": "2026-08-20T14:45:35+00:00"
      },
      "6D78_Doncaster": {
        "camera": "",
        "expected_time": "09:25",
        "headcode": "6D78",
        "location": "Doncaster",
        "locos": [
          "66706 \"Nene Valley\""
        ],
        "source": "manual",
        "train_id": "176D78CC20",
        "updated_at": "2026-08-20T14:59:24+00:00"
      },
      "6D90_Keighley": {
        "camera": "",
        "expected_time": "07:12",
        "headcode": "6D90",
        "location": "Keighley",
        "locos": [
          "66301 \"Drax Power Station 50\""
        ],
        "source": "manual",
        "train_id": "176D90C520",
        "updated_at": "2026-08-20T15:02:25+00:00"
      },
      "6E03_Swinton": {
        "camera": "",
        "expected_time": "15:21",
        "headcode": "6E03",
        "location": "Swinton",
        "locos": [
          "66548",
          "70005",
          "66601 \"The Hope Valley\""
        ],
        "source": "manual",
        "train_id": "346E03CN20",
        "updated_at": "2026-08-20T14:28:36+00:00"
      },
      "6E17_Swinton": {
        "camera": "",
        "expected_time": "21:55",
        "headcode": "6E17",
        "location": "Swinton",
        "locos": [
          "66310 \"Bo'ness and Kinneil Railway\""
        ],
        "source": "manual",
        "train_id": "346E17CY20",
        "updated_at": "2026-08-20T21:13:43+00:00"
      },
      "6E25_Swinton": {
        "camera": "",
        "expected_time": "04:52\u00bd",
        "headcode": "6E25",
        "location": "Swinton",
        "locos": [
          "70017"
        ],
        "source": "manual",
        "train_id": "346E251120",
        "updated_at": "2026-08-20T05:33:15+00:00"
      },
      "6E51_Swinton": {
        "camera": "",
        "expected_time": "14:17",
        "headcode": "6E51",
        "location": "Swinton",
        "locos": [
          "66316"
        ],
        "source": "manual",
        "train_id": "346E51CK20",
        "updated_at": "2026-08-20T14:34:10+00:00"
      },
      "6F93_St_Albans": {
        "camera": "",
        "expected_time": "12:32",
        "headcode": "6F93",
        "location": "St Albans",
        "locos": [
          "66687 \"Annette\""
        ],
        "source": "manual",
        "train_id": "636F93CI20",
        "updated_at": "2026-08-20T14:48:41+00:00"
      },
      "6H12_York_North": {
        "camera": "",
        "expected_time": "09:34",
        "headcode": "6H12",
        "location": "York North",
        "locos": [
          "66742 \"ABP Port of Immingham Centenary 1912-2012\""
        ],
        "source": "manual",
        "train_id": "136H12C620",
        "updated_at": "2026-08-20T14:59:04+00:00"
      },
      "6L38_Beattock": {
        "camera": "",
        "expected_time": "19:16",
        "headcode": "6L38",
        "location": "Beattock",
        "locos": [
          "66741 \"Swanage Railway\""
        ],
        "source": "manual",
        "train_id": "076L38CV20",
        "updated_at": "2026-08-20T20:40:54+00:00"
      },
      "6L38_Thankerton": {
        "camera": "",
        "expected_time": "18:21\u00bd",
        "headcode": "6L38",
        "location": "Thankerton",
        "locos": [
          "66741 \"Swanage Railway\""
        ],
        "source": "manual",
        "train_id": "076L38CV20",
        "updated_at": "2026-08-20T18:11:47+00:00"
      },
      "6L99_Barking": {
        "camera": "",
        "expected_time": "06:09",
        "headcode": "6L99",
        "location": "Barking",
        "locos": [
          "66059"
        ],
        "source": "manual",
        "train_id": "346L99C919",
        "updated_at": "2026-08-20T15:05:28+00:00"
      },
      "6M01_Chesterfield": {
        "camera": "",
        "expected_time": "11:54",
        "headcode": "6M01",
        "location": "Chesterfield",
        "locos": [
          "66309 \"Charley Wallace\""
        ],
        "source": "manual",
        "train_id": "256M01CH20",
        "updated_at": "2026-08-20T14:51:30+00:00"
      },
      "6M25_Keighley": {
        "camera": "",
        "expected_time": "06:29",
        "headcode": "6M25",
        "location": "Keighley",
        "locos": [
          "66730 \"Whitemoor\""
        ],
        "source": "manual",
        "train_id": "236M25C320",
        "updated_at": "2026-08-20T15:04:04+00:00"
      },
      "6M38_Keighley": {
        "camera": "",
        "expected_time": "13:43\u00bd",
        "headcode": "6M38",
        "location": "Keighley",
        "locos": [
          "66730 \"Whitemoor\""
        ],
        "source": "manual",
        "train_id": "096M38CI20",
        "updated_at": "2026-08-20T14:43:20+00:00"
      },
      "6M53_Banbury": {
        "camera": "",
        "expected_time": "22:31",
        "headcode": "6M53",
        "location": "Banbury",
        "locos": [
          "66718 \"Peter, Lord Hendy of Richmond Hill\""
        ],
        "source": "manual",
        "train_id": "856M531J20",
        "updated_at": "2026-08-21T00:47:25+00:00"
      },
      "6M78_Horton": {
        "camera": "",
        "expected_time": "07:08",
        "headcode": "6M78",
        "location": "Horton",
        "locos": [
          "66696 \"The Green Progressor\""
        ],
        "source": "manual",
        "train_id": "236M78C420",
        "updated_at": "2026-08-20T15:03:23+00:00"
      },
      "6M78_Keighley": {
        "camera": "",
        "expected_time": "06:05\u00bd",
        "headcode": "6M78",
        "location": "Keighley",
        "locos": [
          "66696 \"The Green Progressor\""
        ],
        "source": "manual",
        "train_id": "236M78C420",
        "updated_at": "2026-08-20T05:26:12+00:00"
      },
      "6M98_Swinton": {
        "camera": "",
        "expected_time": "19:33\u00bd",
        "headcode": "6M98",
        "location": "Swinton",
        "locos": [
          "66656"
        ],
        "source": "manual",
        "train_id": "216M981R20",
        "updated_at": "2026-08-20T20:39:51+00:00"
      },
      "6S48_Beattock": {
        "camera": "",
        "expected_time": "12:32",
        "headcode": "6S48",
        "location": "Beattock",
        "locos": [
          "70804"
        ],
        "source": "manual",
        "train_id": "106S48CG20",
        "updated_at": "2026-08-20T14:48:58+00:00"
      },
      "6S48_Thankerton": {
        "camera": "",
        "expected_time": "13:19",
        "headcode": "6S48",
        "location": "Thankerton",
        "locos": [
          "70804"
        ],
        "source": "manual",
        "train_id": "106S48CG20",
        "updated_at": "2026-08-20T14:45:08+00:00"
      },
      "6V02_Wingfield": {
        "camera": "",
        "expected_time": "22:52",
        "headcode": "6V02",
        "location": "Wingfield",
        "locos": [
          "66127"
        ],
        "source": "manual",
        "train_id": "156V02CY20",
        "updated_at": "2026-08-21T00:46:55+00:00"
      },
      "6V11_Newbury": {
        "camera": "",
        "expected_time": "18:56",
        "headcode": "6V11",
        "location": "Newbury",
        "locos": [
          "66004"
        ],
        "source": "manual",
        "train_id": "636V11CT20",
        "updated_at": "2026-08-20T18:11:02+00:00"
      },
      "6X01_Swinton": {
        "camera": "",
        "expected_time": "10:57",
        "headcode": "6X01",
        "location": "Swinton",
        "locos": [
          "66311"
        ],
        "source": "manual",
        "train_id": "226X01CG20",
        "updated_at": "2026-08-20T14:54:36+00:00"
      },
      "6Z05_Swinton": {
        "camera": "",
        "expected_time": "05:48",
        "headcode": "6Z05",
        "location": "Swinton",
        "locos": [
          "66656"
        ],
        "source": "manual",
        "train_id": "796Z052X19",
        "updated_at": "2026-08-20T05:28:13+00:00"
      },
      "6Z05_Wingfield": {
        "camera": "",
        "expected_time": "01:50",
        "headcode": "6Z05",
        "location": "Wingfield",
        "locos": [
          "66656"
        ],
        "source": "manual",
        "train_id": "796Z052X19",
        "updated_at": "2026-08-20T00:50:37+00:00"
      }
    },
    "2026-08-21": {
      "0M58_Watford": {
        "camera": "",
        "expected_time": "18:05\u00bd",
        "headcode": "0M58",
        "location": "Watford",
        "locos": [
          "37800 \"Cassiopeia\""
        ],
        "source": "manual",
        "train_id": "870M581T21",
        "updated_at": "2026-08-22T07:29:47+00:00"
      },
      "0Z49_Peterborough": {
        "camera": "",
        "expected_time": "07:51",
        "headcode": "0Z49",
        "location": "Peterborough",
        "locos": [
          "57310 \"UK Railtours\"",
          "57306 \"Branch Line Society\""
        ],
        "source": "manual",
        "train_id": "590Z491621",
        "updated_at": "2026-08-21T13:32:25+00:00"
      },
      "1Q18_Dawlish": {
        "camera": "",
        "expected_time": "16:06\u00bd",
        "headcode": "1Q18",
        "location": "Dawlish",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "741Q18C521",
        "updated_at": "2026-08-21T13:30:51+00:00"
      },
      "3Q29_Swinton": {
        "camera": "",
        "expected_time": "23:34\u00bd",
        "headcode": "3Q29",
        "location": "Swinton",
        "locos": [
          "37424",
          "96604",
          "999606",
          "977969",
          "37425 \"Sir Robert McAlpine / Concrete Bob\"",
          "6262",
          "9803"
        ],
        "source": "manual",
        "train_id": "233Q291821",
        "updated_at": "2026-08-22T07:13:54+00:00"
      },
      "4L47_Watford": {
        "camera": "",
        "expected_time": "00:30",
        "headcode": "4L47",
        "location": "Watford",
        "locos": [
          "99005"
        ],
        "source": "manual",
        "train_id": "664L47C820",
        "updated_at": "2026-08-21T13:52:27+00:00"
      },
      "5Q87_Watford": {
        "camera": "",
        "expected_time": "13:36",
        "headcode": "5Q87",
        "location": "Watford",
        "locos": [
          "37800 \"Cassiopeia\"",
          "701514",
          "701505"
        ],
        "source": "manual",
        "train_id": "575Q871G21",
        "updated_at": "2026-08-21T13:15:20+00:00"
      },
      "6E70_Swinton": {
        "camera": "",
        "expected_time": "08:11\u00bd",
        "headcode": "6E70",
        "location": "Swinton",
        "locos": [
          "66050 \"Yorkshire Rose\""
        ],
        "source": "manual",
        "train_id": "736E70C121",
        "updated_at": "2026-08-21T13:31:38+00:00"
      },
      "6M01_Chesterfield": {
        "camera": "",
        "expected_time": "11:57",
        "headcode": "6M01",
        "location": "Chesterfield",
        "locos": [
          "66309 \"Charley Wallace\""
        ],
        "source": "manual",
        "train_id": "256M01CH21",
        "updated_at": "2026-08-21T13:25:59+00:00"
      },
      "6M25_Keighley": {
        "camera": "",
        "expected_time": "06:34",
        "headcode": "6M25",
        "location": "Keighley",
        "locos": [
          "66706 \"Nene Valley\""
        ],
        "source": "manual",
        "train_id": "236M25C321",
        "updated_at": "2026-08-21T13:43:48+00:00"
      },
      "6M51_Bredon": {
        "camera": "",
        "expected_time": "08:23",
        "headcode": "6M51",
        "location": "Bredon",
        "locos": [
          "66190 \"Martin House Children\u2019s Hospice\"",
          "66057"
        ],
        "source": "manual",
        "train_id": "776M51C521",
        "updated_at": "2026-08-21T13:30:11+00:00"
      },
      "6M61_Swinton": {
        "camera": "",
        "expected_time": "18:52",
        "headcode": "6M61",
        "location": "Swinton",
        "locos": [
          "66797"
        ],
        "source": "manual",
        "train_id": "256M61CX21",
        "updated_at": "2026-08-22T07:23:56+00:00"
      },
      "6M78_Horton": {
        "camera": "",
        "expected_time": "07:14",
        "headcode": "6M78",
        "location": "Horton",
        "locos": [
          "66696 \"The Green Progressor\""
        ],
        "source": "manual",
        "train_id": "236M782421",
        "updated_at": "2026-08-21T13:33:44+00:00"
      },
      "6M78_Keighley": {
        "camera": "",
        "expected_time": "05:51",
        "headcode": "6M78",
        "location": "Keighley",
        "locos": [
          "66696 \"The Green Progressor\""
        ],
        "source": "manual",
        "train_id": "236M782421",
        "updated_at": "2026-08-21T13:44:47+00:00"
      },
      "6O02_Basingstoke": {
        "camera": "",
        "expected_time": "07:48",
        "headcode": "6O02",
        "location": "Basingstoke",
        "locos": [
          "59102 \"Village of Chantry\""
        ],
        "source": "manual",
        "train_id": "826O02C521",
        "updated_at": "2026-08-21T13:32:56+00:00"
      },
      "6Q59_Banbury": {
        "camera": "",
        "expected_time": "08:52",
        "headcode": "6Q59",
        "location": "Banbury",
        "locos": [
          "DR75017"
        ],
        "source": "manual",
        "train_id": "746Q591A21",
        "updated_at": "2026-08-21T13:29:25+00:00"
      },
      "6S31_York_North": {
        "camera": "",
        "expected_time": "07:45",
        "headcode": "6S31",
        "location": "York North",
        "locos": [
          "70817",
          "66177"
        ],
        "source": "manual",
        "train_id": "236S31C621",
        "updated_at": "2026-08-21T13:33:15+00:00"
      },
      "6V55_Bredon": {
        "camera": "",
        "expected_time": "19:30\u00bd",
        "headcode": "6V55",
        "location": "Bredon",
        "locos": [
          "66716 \"Locomotive and Carriage Institution Centenary 1911\""
        ],
        "source": "manual",
        "train_id": "556V551Q21",
        "updated_at": "2026-08-22T07:20:45+00:00"
      },
      "6V81_Derby": {
        "camera": "",
        "expected_time": "19:42",
        "headcode": "6V81",
        "location": "Derby",
        "locos": [
          "66056"
        ],
        "source": "manual",
        "train_id": "256V81CW21",
        "updated_at": "2026-08-22T07:20:23+00:00"
      },
      "6V81_Wingfield": {
        "camera": "",
        "expected_time": "19:11\u00bd",
        "headcode": "6V81",
        "location": "Wingfield",
        "locos": [
          "66056"
        ],
        "source": "manual",
        "train_id": "256V81CW21",
        "updated_at": "2026-08-22T07:22:12+00:00"
      },
      "6X41_Barking": {
        "camera": "",
        "expected_time": "00:37\u00bd",
        "headcode": "6X41",
        "location": "Barking",
        "locos": [
          "66314 \"Katie\""
        ],
        "source": "manual",
        "train_id": "516X41C021",
        "updated_at": "2026-08-21T13:51:00+00:00"
      },
      "6Y48_Basingstoke": {
        "camera": "",
        "expected_time": "09:39",
        "headcode": "6Y48",
        "location": "Basingstoke",
        "locos": [
          "69001 \"Mayflower\"",
          "69013"
        ],
        "source": "manual",
        "train_id": "866Y48CE21",
        "updated_at": "2026-08-21T13:27:14+00:00"
      }
    },
    "2026-08-22": {
      "0Z86_Watford": {
        "camera": "",
        "expected_time": "06:14",
        "headcode": "0Z86",
        "location": "Watford",
        "locos": [
          "86259 \"Peter Pan / Les Ross\""
        ],
        "source": "manual",
        "train_id": "700Z861522",
        "updated_at": "2026-08-22T08:26:27+00:00"
      },
      "1Q68_Derby": {
        "camera": "",
        "expected_time": "09:42",
        "headcode": "1Q68",
        "location": "Derby",
        "locos": [
          "43303",
          "43301"
        ],
        "source": "manual",
        "train_id": "161Q68C122",
        "updated_at": "2026-08-22T11:17:59+00:00"
      },
      "1Q79_Bedford": {
        "camera": "",
        "expected_time": "17:42",
        "headcode": "1Q79",
        "location": "Bedford",
        "locos": [
          "73962 \"Dick Mabbutt\"",
          "73965 \"Des O'Brien\"",
          "73963 \"Janice\"",
          "73964 \"Jeanette\""
        ],
        "source": "manual",
        "train_id": "891Q79CE22",
        "updated_at": "2026-08-22T18:52:41+00:00"
      },
      "1Z60_York_North": {
        "camera": "",
        "expected_time": "17:54",
        "headcode": "1Z60",
        "location": "York North",
        "locos": [
          "57601 \"Windsor Castle\"",
          "47746 \"Chris Fudge 29.7.70 - 22.6.10\""
        ],
        "source": "manual",
        "train_id": "151Z601U22",
        "updated_at": "2026-08-22T19:52:13+00:00"
      },
      "3Q29_Chesterfield": {
        "camera": "",
        "expected_time": "00:29",
        "headcode": "3Q29",
        "location": "Chesterfield",
        "locos": [
          "37424",
          "96604",
          "999606",
          "977969",
          "37425 \"Sir Robert McAlpine / Concrete Bob\"",
          "6262",
          "9803"
        ],
        "source": "manual",
        "train_id": "233Q291821",
        "updated_at": "2026-08-22T13:36:26+00:00"
      },
      "3Q29_Derby": {
        "camera": "",
        "expected_time": "01:18\u00bd",
        "headcode": "3Q29",
        "location": "Derby",
        "locos": [
          "37424",
          "96604",
          "999606",
          "977969",
          "37425 \"Sir Robert McAlpine / Concrete Bob\"",
          "6262",
          "9803"
        ],
        "source": "manual",
        "train_id": "233Q291821",
        "updated_at": "2026-08-22T08:45:47+00:00"
      },
      "4B56_Severn_Tunnel": {
        "camera": "",
        "expected_time": "17:49",
        "headcode": "4B56",
        "location": "Severn Tunnel",
        "locos": [
          "66716 \"Locomotive and Carriage Institution Centenary 1911\""
        ],
        "source": "manual",
        "train_id": "774B561T22",
        "updated_at": "2026-08-22T18:49:26+00:00"
      },
      "5Z42_Keighley": {
        "camera": "",
        "expected_time": "16:41",
        "headcode": "5Z42",
        "location": "Keighley",
        "locos": [
          "37706",
          "47813"
        ],
        "source": "manual",
        "train_id": "115Z421K22",
        "updated_at": "2026-08-22T18:31:22+00:00"
      },
      "6L83_Barking": {
        "camera": "",
        "expected_time": "13:51",
        "headcode": "6L83",
        "location": "Barking",
        "locos": [
          "60028"
        ],
        "source": "manual",
        "train_id": "736L831H22",
        "updated_at": "2026-08-22T13:28:36+00:00"
      },
      "6M03_Thankerton": {
        "camera": "",
        "expected_time": "15:24\u00bd",
        "headcode": "6M03",
        "location": "Thankerton",
        "locos": [
          "66756 \"Royal Corps of Signals\""
        ],
        "source": "manual",
        "train_id": "076M031O22",
        "updated_at": "2026-08-22T15:11:50+00:00"
      }
    },
    "2026-08-23": {
      "0M50_Thankerton": {
        "camera": "",
        "expected_time": "09:47",
        "headcode": "0M50",
        "location": "Thankerton",
        "locos": [
          "92020 \"BILLY STIRLING\""
        ],
        "source": "manual",
        "train_id": "070M501D23",
        "updated_at": "2026-08-23T09:16:41+00:00"
      },
      "1Q31_Swinton": {
        "camera": "",
        "expected_time": "11:10",
        "headcode": "1Q31",
        "location": "Swinton",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "591Q31CG23",
        "updated_at": "2026-08-23T11:55:46+00:00"
      },
      "2Z08_Wingfield": {
        "camera": "",
        "expected_time": "10:39",
        "headcode": "2Z08",
        "location": "Wingfield",
        "locos": [
          "950001"
        ],
        "source": "manual",
        "train_id": "322Z081E23",
        "updated_at": "2026-08-23T09:31:28+00:00"
      },
      "6E47_Bredon": {
        "camera": "",
        "expected_time": "21:01\u00bd",
        "headcode": "6E47",
        "location": "Bredon",
        "locos": [
          "66185 \"DP WORLD London Gateway\""
        ],
        "source": "manual",
        "train_id": "796E47CS23",
        "updated_at": "2026-08-23T19:59:46+00:00"
      },
      "6U34_Swinton": {
        "camera": "",
        "expected_time": "08:13\u00bd",
        "headcode": "6U34",
        "location": "Swinton",
        "locos": [
          "DR80214"
        ],
        "source": "manual",
        "train_id": "346U341B23",
        "updated_at": "2026-08-23T07:58:52+00:00"
      },
      "6Y76_Swinton": {
        "camera": "",
        "expected_time": "09:47",
        "headcode": "6Y76",
        "location": "Swinton",
        "locos": [
          "66419 \"Lionesses' Roar\""
        ],
        "source": "manual",
        "train_id": "566Y761D23",
        "updated_at": "2026-08-23T18:17:41+00:00"
      }
    },
    "2026-08-24": {
      "0Z38_Beattock": {
        "camera": "",
        "expected_time": "14:16",
        "headcode": "0Z38",
        "location": "Beattock",
        "locos": [
          "37219 \"Jonty Jarvis\"",
          "37421"
        ],
        "source": "manual",
        "train_id": "070Z381M24",
        "updated_at": "2026-08-24T15:38:21+00:00"
      },
      "0Z96_Chesterfield": {
        "camera": "",
        "expected_time": "14:51",
        "headcode": "0Z96",
        "location": "Chesterfield",
        "locos": [
          "97302 \"Ffestiniog",
          "Welsh Highland Railways / Rheilffyrdd\""
        ],
        "source": "manual",
        "train_id": "270Z962P24",
        "updated_at": "2026-08-24T15:35:01+00:00"
      },
      "1Q13_Garsdale": {
        "camera": "",
        "expected_time": "16:44",
        "headcode": "1Q13",
        "location": "Garsdale",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "091Q13CR24",
        "updated_at": "2026-08-24T17:54:21+00:00"
      },
      "1Q13_Keighley": {
        "camera": "",
        "expected_time": "18:23\u00bd",
        "headcode": "1Q13",
        "location": "Keighley",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "091Q13CR24",
        "updated_at": "2026-08-24T17:51:56+00:00"
      },
      "3Q06_Banbury": {
        "camera": "",
        "expected_time": "19:01",
        "headcode": "3Q06",
        "location": "Banbury",
        "locos": [
          "999606",
          "96609",
          "37175",
          "9703",
          "9808",
          "6260"
        ],
        "source": "manual",
        "train_id": "573Q06CO24",
        "updated_at": "2026-08-24T18:12:18+00:00"
      },
      "4E21_Peterborough": {
        "camera": "",
        "expected_time": "15:11",
        "headcode": "4E21",
        "location": "Peterborough",
        "locos": [
          "66702 \"Blue Lightning\""
        ],
        "source": "manual",
        "train_id": "494E21CI24",
        "updated_at": "2026-08-24T15:31:42+00:00"
      },
      "4E39_Barking": {
        "camera": "",
        "expected_time": "13:45",
        "headcode": "4E39",
        "location": "Barking",
        "locos": [
          "66758 \"The Pavior\""
        ],
        "source": "manual",
        "train_id": "514E39CL24",
        "updated_at": "2026-08-24T15:41:03+00:00"
      },
      "4E91_Swinton": {
        "camera": "",
        "expected_time": "10:07\u00bd",
        "headcode": "4E91",
        "location": "Swinton",
        "locos": [
          "66511"
        ],
        "source": "manual",
        "train_id": "864E91C224",
        "updated_at": "2026-08-24T11:48:36+00:00"
      },
      "4M27_Wigan": {
        "camera": "",
        "expected_time": "10:03",
        "headcode": "4M27",
        "location": "Wigan",
        "locos": [
          "88006 \"Juno\""
        ],
        "source": "manual",
        "train_id": "074M27C524",
        "updated_at": "2026-08-24T11:49:14+00:00"
      },
      "4M29_Peterborough": {
        "camera": "",
        "expected_time": "14:37",
        "headcode": "4M29",
        "location": "Peterborough",
        "locos": [
          "66783 \"The Flying Dustman\""
        ],
        "source": "manual",
        "train_id": "494M29CH24",
        "updated_at": "2026-08-24T15:37:15+00:00"
      },
      "4M36_Severn_Tunnel": {
        "camera": "",
        "expected_time": "20:05",
        "headcode": "4M36",
        "location": "Severn Tunnel",
        "locos": [
          "68009 \"Titan\""
        ],
        "source": "manual",
        "train_id": "774M36CY24",
        "updated_at": "2026-08-24T19:13:03+00:00"
      },
      "4S43_Thankerton": {
        "camera": "",
        "expected_time": "13:32\u00bd",
        "headcode": "4S43",
        "location": "Thankerton",
        "locos": [
          "88008 \"Ariadne\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "704S43C624",
        "updated_at": "2026-08-24T15:42:18+00:00"
      },
      "4S44_Wigan": {
        "camera": "",
        "expected_time": "14:53",
        "headcode": "4S44",
        "location": "Wigan",
        "locos": [
          "88003 \"Genesis\""
        ],
        "source": "manual",
        "train_id": "704S44CK24",
        "updated_at": "2026-08-24T15:34:24+00:00"
      },
      "4S88_Watford": {
        "camera": "",
        "expected_time": "20:27",
        "headcode": "4S88",
        "location": "Watford",
        "locos": [
          "90005"
        ],
        "source": "manual",
        "train_id": "494S88CP24",
        "updated_at": "2026-08-24T19:36:28+00:00"
      },
      "4V44_Bredon": {
        "camera": "",
        "expected_time": "13:22",
        "headcode": "4V44",
        "location": "Bredon",
        "locos": [
          "68009 \"Titan\""
        ],
        "source": "manual",
        "train_id": "704V44CH24",
        "updated_at": "2026-08-24T15:44:13+00:00"
      },
      "6A40_Newbury": {
        "camera": "",
        "expected_time": "10:27\u00bd",
        "headcode": "6A40",
        "location": "Newbury",
        "locos": [
          "59206 \"John F. Yeoman - Rail Pioneer\"",
          "66602"
        ],
        "source": "manual",
        "train_id": "826A40CD24",
        "updated_at": "2026-08-24T11:46:01+00:00"
      },
      "6D63_Keighley": {
        "camera": "",
        "expected_time": "10:10",
        "headcode": "6D63",
        "location": "Keighley",
        "locos": [
          "66301 \"Drax Power Station 50\""
        ],
        "source": "manual",
        "train_id": "236D63CC24",
        "updated_at": "2026-08-24T11:46:35+00:00"
      },
      "6E47_Swinton": {
        "camera": "",
        "expected_time": "00:56",
        "headcode": "6E47",
        "location": "Swinton",
        "locos": [
          "66185 \"DP WORLD London Gateway\""
        ],
        "source": "manual",
        "train_id": "796E47CS23",
        "updated_at": "2026-08-24T07:18:37+00:00"
      },
      "6L38_Wigan": {
        "camera": "",
        "expected_time": "01:18",
        "headcode": "6L38",
        "location": "Wigan",
        "locos": [
          "66755 \"Tony Berkeley OBE RFG Chairman 1997-2018\"",
          "66741 \"Swanage Railway\""
        ],
        "source": "manual",
        "train_id": "096L38C723",
        "updated_at": "2026-08-24T07:16:11+00:00"
      },
      "6M78_Keighley": {
        "camera": "",
        "expected_time": "05:49",
        "headcode": "6M78",
        "location": "Keighley",
        "locos": [
          "66696 \"The Green Progressor\""
        ],
        "source": "manual",
        "train_id": "236M78C424",
        "updated_at": "2026-08-24T06:59:05+00:00"
      },
      "6V84_Wigan": {
        "camera": "",
        "expected_time": "10:02\u00bd",
        "headcode": "6V84",
        "location": "Wigan",
        "locos": [
          "66756 \"Royal Corps of Signals\""
        ],
        "source": "manual",
        "train_id": "296V84CB24",
        "updated_at": "2026-08-24T11:50:41+00:00"
      },
      "6X41_Watford": {
        "camera": "",
        "expected_time": "05:25",
        "headcode": "6X41",
        "location": "Watford",
        "locos": [
          "66314 \"Katie\""
        ],
        "source": "manual",
        "train_id": "516X41C424",
        "updated_at": "2026-08-24T07:00:01+00:00"
      }
    },
    "2026-08-25": {
      "0L57_Peterborough": {
        "camera": "",
        "expected_time": "",
        "headcode": "0L57",
        "location": "Peterborough",
        "locos": [
          "66519"
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-25T18:54:40+00:00"
      },
      "0Z20_Doncaster": {
        "camera": "",
        "expected_time": "21:49",
        "headcode": "0Z20",
        "location": "Doncaster",
        "locos": [
          "DB 66"
        ],
        "source": "manual",
        "train_id": "220Z202725",
        "updated_at": "2026-08-25T21:32:36+00:00"
      },
      "0Z56_Swinton": {
        "camera": "",
        "expected_time": "10:20\u00bd",
        "headcode": "0Z56",
        "location": "Swinton",
        "locos": [
          "56105",
          "56096",
          "56113",
          "56090",
          "56078"
        ],
        "source": "manual",
        "train_id": "550Z562C25",
        "updated_at": "2026-08-25T15:05:39+00:00"
      },
      "0Z67_Thankerton": {
        "camera": "",
        "expected_time": "08:12\u00bd",
        "headcode": "0Z67",
        "location": "Thankerton",
        "locos": [
          "3xDRS 66's"
        ],
        "source": "manual",
        "train_id": "040Z672625",
        "updated_at": "2026-08-25T15:25:14+00:00"
      },
      "1Q15_Bredon": {
        "camera": "",
        "expected_time": "12:14",
        "headcode": "1Q15",
        "location": "Bredon",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "591Q15C625",
        "updated_at": "2026-08-25T15:02:37+00:00"
      },
      "1Q15_Severn_Tunnel": {
        "camera": "",
        "expected_time": "15:18",
        "headcode": "1Q15",
        "location": "Severn Tunnel",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "591Q15C625",
        "updated_at": "2026-08-25T14:59:17+00:00"
      },
      "1Q47_Bolton_Le_Sands": {
        "camera": "",
        "expected_time": "15:41\u00bd",
        "headcode": "1Q47",
        "location": "Bolton Le Sands",
        "locos": [
          "43251",
          "43272"
        ],
        "source": "manual",
        "train_id": "571Q47CH25",
        "updated_at": "2026-08-25T14:57:21+00:00"
      },
      "1Q51_St_Albans": {
        "camera": "",
        "expected_time": "16:10",
        "headcode": "1Q51",
        "location": "St Albans",
        "locos": [
          "73964 \"Jeanette\"",
          "73965 \"Des O'Brien\""
        ],
        "source": "manual",
        "train_id": "571Q512J25",
        "updated_at": "2026-08-25T15:27:49+00:00"
      },
      "1S26_Doncaster": {
        "camera": "",
        "expected_time": "",
        "headcode": "1S26",
        "location": "Doncaster",
        "locos": [
          "68001 \"Evolution\"",
          "68007 \"30 Years of DRS\""
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-25T18:54:09+00:00"
      },
      "3Q20_St_Albans": {
        "camera": "",
        "expected_time": "01:53",
        "headcode": "3Q20",
        "location": "St Albans",
        "locos": [
          "37424"
        ],
        "source": "manual",
        "train_id": "573Q20C724",
        "updated_at": "2026-08-25T05:31:11+00:00"
      },
      "4E21_Swinton": {
        "camera": "",
        "expected_time": "17:37\u00bd",
        "headcode": "4E21",
        "location": "Swinton",
        "locos": [
          "66702 \"Blue Lightning\""
        ],
        "source": "manual",
        "train_id": "494E21CI25",
        "updated_at": "2026-08-25T16:51:35+00:00"
      },
      "4E46_Newark": {
        "camera": "",
        "expected_time": "04:47\u00bd",
        "headcode": "4E46",
        "location": "Newark",
        "locos": [
          "66044"
        ],
        "source": "manual",
        "train_id": "494E46C924",
        "updated_at": "2026-08-25T05:21:01+00:00"
      },
      "4E76_Swinton": {
        "camera": "",
        "expected_time": "20:04\u00bd",
        "headcode": "4E76",
        "location": "Swinton",
        "locos": [
          "66051 \"Maritime Intermodal Four\""
        ],
        "source": "manual",
        "train_id": "074E761J25",
        "updated_at": "2026-08-25T19:35:59+00:00"
      },
      "4L24_Watford": {
        "camera": "",
        "expected_time": "10:06",
        "headcode": "4L24",
        "location": "Watford",
        "locos": [
          "66723 \"Chinook\""
        ],
        "source": "manual",
        "train_id": "564L24C525",
        "updated_at": "2026-08-25T15:12:47+00:00"
      },
      "4L42_Watford": {
        "camera": "",
        "expected_time": "19:48",
        "headcode": "4L42",
        "location": "Watford",
        "locos": [
          "66587 \"AS ONE, WE CAN\""
        ],
        "source": "manual",
        "train_id": "334L42CP25",
        "updated_at": "2026-08-25T19:42:34+00:00"
      },
      "4L62_Watford": {
        "camera": "",
        "expected_time": "18:37",
        "headcode": "4L62",
        "location": "Watford",
        "locos": [
          "66780 \"The Cemex Express\""
        ],
        "source": "manual",
        "train_id": "364L62CN25",
        "updated_at": "2026-08-25T17:52:34+00:00"
      },
      "4M24_Barking": {
        "camera": "",
        "expected_time": "17:19",
        "headcode": "4M24",
        "location": "Barking",
        "locos": [
          "66723 \"Chinook\""
        ],
        "source": "manual",
        "train_id": "514M24CR25",
        "updated_at": "2026-08-25T16:51:13+00:00"
      },
      "4M46_Banbury": {
        "camera": "",
        "expected_time": "17:56",
        "headcode": "4M46",
        "location": "Banbury",
        "locos": [
          "66766 \"Gail Richardson\""
        ],
        "source": "manual",
        "train_id": "864M46CO25",
        "updated_at": "2026-08-25T16:57:25+00:00"
      },
      "4M48_Beattock": {
        "camera": "",
        "expected_time": "20:17",
        "headcode": "4M48",
        "location": "Beattock",
        "locos": [
          "88007 \"Electra\"",
          "88008 \"Ariadne\""
        ],
        "source": "manual",
        "train_id": "074M48CX25",
        "updated_at": "2026-08-25T19:31:12+00:00"
      },
      "4M48_Wigan": {
        "camera": "",
        "expected_time": "22:44",
        "headcode": "4M48",
        "location": "Wigan",
        "locos": [
          "88007 \"Electra\"",
          "88008 \"Ariadne\""
        ],
        "source": "manual",
        "train_id": "074M48CX25",
        "updated_at": "2026-08-26T00:00:01+00:00"
      },
      "4M58_Watford": {
        "camera": "",
        "expected_time": "20:23",
        "headcode": "4M58",
        "location": "Watford",
        "locos": [
          "66593 \"3MG Mersey Multimodal Gateway\""
        ],
        "source": "manual",
        "train_id": "514M58CR25",
        "updated_at": "2026-08-25T19:39:39+00:00"
      },
      "4M98_Basingstoke": {
        "camera": "",
        "expected_time": "19:07",
        "headcode": "4M98",
        "location": "Basingstoke",
        "locos": [
          "66505"
        ],
        "source": "manual",
        "train_id": "864M98CV25",
        "updated_at": "2026-08-25T18:27:02+00:00"
      },
      "4S43_Wigan": {
        "camera": "",
        "expected_time": "08:59",
        "headcode": "4S43",
        "location": "Wigan",
        "locos": [
          "88007 \"Electra\"",
          "88008 \"Ariadne\""
        ],
        "source": "manual",
        "train_id": "704S43C625",
        "updated_at": "2026-08-25T15:20:49+00:00"
      },
      "4S44_Beattock": {
        "camera": "",
        "expected_time": "18:14",
        "headcode": "4S44",
        "location": "Beattock",
        "locos": [
          "88005 \"Minerva\""
        ],
        "source": "manual",
        "train_id": "704S44CK25",
        "updated_at": "2026-08-25T17:30:23+00:00"
      },
      "4V46_Severn_Tunnel": {
        "camera": "",
        "expected_time": "22:23",
        "headcode": "4V46",
        "location": "Severn Tunnel",
        "locos": [
          "68005 \"Defiant\""
        ],
        "source": "manual",
        "train_id": "704V46CY25",
        "updated_at": "2026-08-25T21:24:48+00:00"
      },
      "6C92_Severn_Tunnel": {
        "camera": "",
        "expected_time": "10:14",
        "headcode": "6C92",
        "location": "Severn Tunnel",
        "locos": [
          "66732 \"GBRf The First Decade 1999-2009 John Smith - MD\""
        ],
        "source": "manual",
        "train_id": "796C92CB25",
        "updated_at": "2026-08-25T15:12:11+00:00"
      },
      "6D23_Watford": {
        "camera": "",
        "expected_time": "18:07",
        "headcode": "6D23",
        "location": "Watford",
        "locos": [
          "60055 \"Thomas Barnardo\""
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-25T17:22:20+00:00"
      },
      "6E15_Basingstoke": {
        "camera": "",
        "expected_time": "21:59",
        "headcode": "6E15",
        "location": "Basingstoke",
        "locos": [
          "66667 \"West Somerset Railway\""
        ],
        "source": "manual",
        "train_id": "866E15C725",
        "updated_at": "2026-08-25T21:31:29+00:00"
      },
      "6L38_Beattock": {
        "camera": "",
        "expected_time": "19:16",
        "headcode": "6L38",
        "location": "Beattock",
        "locos": [
          "66755 \"Tony Berkeley OBE RFG Chairman 1997-2018\""
        ],
        "source": "manual",
        "train_id": "076L38CV25",
        "updated_at": "2026-08-25T18:26:46+00:00"
      },
      "6L38_Thankerton": {
        "camera": "",
        "expected_time": "18:21\u00bd",
        "headcode": "6L38",
        "location": "Thankerton",
        "locos": [
          "66755 \"Tony Berkeley OBE RFG Chairman 1997-2018\""
        ],
        "source": "manual",
        "train_id": "076L38CV25",
        "updated_at": "2026-08-25T17:30:02+00:00"
      },
      "6M32_Watford": {
        "camera": "",
        "expected_time": "18:58",
        "headcode": "6M32",
        "location": "Watford",
        "locos": [
          "66719 \"Michael Portillo\""
        ],
        "source": "manual",
        "train_id": "896M32CM25",
        "updated_at": "2026-08-25T18:32:36+00:00"
      },
      "6M72_York_North": {
        "camera": "",
        "expected_time": "20:27\u00bd",
        "headcode": "6M72",
        "location": "York North",
        "locos": [
          "68001 \"Evolution\"",
          "68007 \"30 Years of DRS\""
        ],
        "source": "manual",
        "train_id": "236M72CX25",
        "updated_at": "2026-08-25T19:27:23+00:00"
      },
      "6N32_York_North": {
        "camera": "",
        "expected_time": "09:42",
        "headcode": "6N32",
        "location": "York North",
        "locos": [
          "66174"
        ],
        "source": "manual",
        "train_id": "226N321B25",
        "updated_at": "2026-08-25T15:16:06+00:00"
      },
      "6Q54_Chesterfield": {
        "camera": "",
        "expected_time": "09:35",
        "headcode": "6Q54",
        "location": "Chesterfield",
        "locos": [
          "43467",
          "43423"
        ],
        "source": "manual",
        "train_id": "566Q541E25",
        "updated_at": "2026-08-25T15:16:21+00:00"
      }
    },
    "2026-08-26": {
      "0M58_Bredon": {
        "camera": "",
        "expected_time": "11:55",
        "headcode": "0M58",
        "location": "Bredon",
        "locos": [
          "37512 \"Thornaby Demon\""
        ],
        "source": "manual",
        "train_id": "780M581G26",
        "updated_at": "2026-08-26T16:17:19+00:00"
      },
      "0M58_Severn_Tunnel": {
        "camera": "",
        "expected_time": "10:50",
        "headcode": "0M58",
        "location": "Severn Tunnel",
        "locos": [
          "37512 \"Thornaby Demon\""
        ],
        "source": "manual",
        "train_id": "780M581G26",
        "updated_at": "2026-08-26T16:21:51+00:00"
      },
      "0Z66_Preston": {
        "camera": "",
        "expected_time": "17:20",
        "headcode": "0Z66",
        "location": "Preston",
        "locos": [
          "66xxx"
        ],
        "source": "manual",
        "train_id": "420Z661R26",
        "updated_at": "2026-08-26T16:56:07+00:00"
      },
      "0Z86_Swinton": {
        "camera": "",
        "expected_time": "15:53",
        "headcode": "0Z86",
        "location": "Swinton",
        "locos": [
          "43484",
          "43468"
        ],
        "source": "manual",
        "train_id": "040Z861G26",
        "updated_at": "2026-08-26T15:59:12+00:00"
      },
      "0Z86_York_North": {
        "camera": "",
        "expected_time": "15:08",
        "headcode": "0Z86",
        "location": "York North",
        "locos": [
          "43484",
          "43468"
        ],
        "source": "manual",
        "train_id": "040Z861G26",
        "updated_at": "2026-08-26T16:03:59+00:00"
      },
      "1Q16_Bredon": {
        "camera": "",
        "expected_time": "15:09",
        "headcode": "1Q16",
        "location": "Bredon",
        "locos": [
          "43014",
          "43013 \"Mark Carne CBE\""
        ],
        "source": "manual",
        "train_id": "791Q16C326",
        "updated_at": "2026-08-26T16:03:14+00:00"
      },
      "1Z32_Wingfield": {
        "camera": "",
        "expected_time": "06:29",
        "headcode": "1Z32",
        "location": "Wingfield",
        "locos": [
          "47593 \"Galloway Princess\"",
          "57302"
        ],
        "source": "manual",
        "train_id": "271Z321626",
        "updated_at": "2026-08-26T16:38:51+00:00"
      },
      "1Z47_Derby": {
        "camera": "",
        "expected_time": "22:27",
        "headcode": "1Z47",
        "location": "Derby",
        "locos": [
          "47593 \"Galloway Princess\"",
          "57302"
        ],
        "source": "manual",
        "train_id": "771Z471T26",
        "updated_at": "2026-08-26T23:27:20+00:00"
      },
      "1Z74_Beattock": {
        "camera": "",
        "expected_time": "19:28",
        "headcode": "1Z74",
        "location": "Beattock",
        "locos": [
          "43251",
          "43272"
        ],
        "source": "manual",
        "train_id": "091Z742W26",
        "updated_at": "2026-08-26T19:33:07+00:00"
      },
      "4E07_Barking": {
        "camera": "",
        "expected_time": "13:31",
        "headcode": "4E07",
        "location": "Barking",
        "locos": [
          "66539"
        ],
        "source": "manual",
        "train_id": "514E07CL26",
        "updated_at": "2026-08-26T16:10:35+00:00"
      },
      "4E11_Swinton": {
        "camera": "",
        "expected_time": "07:56",
        "headcode": "4E11",
        "location": "Swinton",
        "locos": [
          "66312 \"Nigel Harris\""
        ],
        "source": "manual",
        "train_id": "494E11C026",
        "updated_at": "2026-08-26T16:32:33+00:00"
      },
      "4E24_Barking": {
        "camera": "",
        "expected_time": "11:37",
        "headcode": "4E24",
        "location": "Barking",
        "locos": [
          "66540 \"Ruby\""
        ],
        "source": "manual",
        "train_id": "514E24CH26",
        "updated_at": "2026-08-26T16:19:46+00:00"
      },
      "4E91_Basingstoke": {
        "camera": "",
        "expected_time": "03:05",
        "headcode": "4E91",
        "location": "Basingstoke",
        "locos": [
          "66570"
        ],
        "source": "manual",
        "train_id": "864E91C226",
        "updated_at": "2026-08-26T16:47:23+00:00"
      },
      "4L00_Swinton": {
        "camera": "",
        "expected_time": "16:55",
        "headcode": "4L00",
        "location": "Swinton",
        "locos": [
          "66792 \"Collaboration\""
        ],
        "source": "manual",
        "train_id": "254L00CS26",
        "updated_at": "2026-08-26T16:59:32+00:00"
      },
      "4L11_Peterborough": {
        "camera": "",
        "expected_time": "16:11",
        "headcode": "4L11",
        "location": "Peterborough",
        "locos": [
          "66312 \"Nigel Harris\""
        ],
        "source": "manual",
        "train_id": "254L11CJ26",
        "updated_at": "2026-08-26T15:58:53+00:00"
      },
      "4L18_Watford": {
        "camera": "",
        "expected_time": "19:11",
        "headcode": "4L18",
        "location": "Watford",
        "locos": [
          "66775 \"HMS Argyll\"",
          "66780 \"The Cemex Express\""
        ],
        "source": "manual",
        "train_id": "334L18CO26",
        "updated_at": "2026-08-26T19:36:49+00:00"
      },
      "4L26_Watford": {
        "camera": "",
        "expected_time": "00:06",
        "headcode": "4L26",
        "location": "Watford",
        "locos": [
          "66543"
        ],
        "source": "manual",
        "train_id": "664L26CZ25",
        "updated_at": "2026-08-26T16:53:07+00:00"
      },
      "4L29_Watford": {
        "camera": "",
        "expected_time": "00:42",
        "headcode": "4L29",
        "location": "Watford",
        "locos": [
          "66783 \"The Flying Dustman\""
        ],
        "source": "manual",
        "train_id": "664L29C725",
        "updated_at": "2026-08-26T16:48:32+00:00"
      },
      "4L47_Watford": {
        "camera": "",
        "expected_time": "00:38",
        "headcode": "4L47",
        "location": "Watford",
        "locos": [
          "99002"
        ],
        "source": "manual",
        "train_id": "664L47C825",
        "updated_at": "2026-08-26T16:49:47+00:00"
      },
      "4L48_Watford": {
        "camera": "",
        "expected_time": "15:31",
        "headcode": "4L48",
        "location": "Watford",
        "locos": [
          "88010 \"Aurora\""
        ],
        "source": "manual",
        "train_id": "704L48CN26",
        "updated_at": "2026-08-26T16:01:19+00:00"
      },
      "4L66_Watford": {
        "camera": "",
        "expected_time": "07:06",
        "headcode": "4L66",
        "location": "Watford",
        "locos": [
          "66725 \"SUNDERLAND\""
        ],
        "source": "manual",
        "train_id": "704L661526",
        "updated_at": "2026-08-26T16:34:08+00:00"
      },
      "4L67_Watford": {
        "camera": "",
        "expected_time": "15:06",
        "headcode": "4L67",
        "location": "Watford",
        "locos": [
          "90021 \"Donald Malcolm\"",
          "90048"
        ],
        "source": "manual",
        "train_id": "334L67CF26",
        "updated_at": "2026-08-26T16:04:30+00:00"
      },
      "4L89_Watford": {
        "camera": "",
        "expected_time": "08:23",
        "headcode": "4L89",
        "location": "Watford",
        "locos": [
          "90043",
          "90045"
        ],
        "source": "manual",
        "train_id": "334L89C326",
        "updated_at": "2026-08-26T16:29:48+00:00"
      },
      "4M07_Barking": {
        "camera": "",
        "expected_time": "10:19",
        "headcode": "4M07",
        "location": "Barking",
        "locos": [
          "68009 \"Titan\""
        ],
        "source": "manual",
        "train_id": "514M07CG26",
        "updated_at": "2026-08-26T16:25:22+00:00"
      },
      "4M22_Watford": {
        "camera": "",
        "expected_time": "14:27\u00bd",
        "headcode": "4M22",
        "location": "Watford",
        "locos": [
          "66720 \"wascosa\""
        ],
        "source": "manual",
        "train_id": "494M221G26",
        "updated_at": "2026-08-26T16:07:50+00:00"
      },
      "4M27_Wigan": {
        "camera": "",
        "expected_time": "10:00",
        "headcode": "4M27",
        "location": "Wigan",
        "locos": [
          "88006 \"Juno\""
        ],
        "source": "manual",
        "train_id": "074M27C526",
        "updated_at": "2026-08-26T16:26:46+00:00"
      },
      "4M29_Peterborough": {
        "camera": "",
        "expected_time": "14:57",
        "headcode": "4M29",
        "location": "Peterborough",
        "locos": [
          "66783 \"The Flying Dustman\""
        ],
        "source": "manual",
        "train_id": "494M29CH26",
        "updated_at": "2026-08-26T16:05:49+00:00"
      },
      "4M36_Severn_Tunnel": {
        "camera": "",
        "expected_time": "19:56",
        "headcode": "4M36",
        "location": "Severn Tunnel",
        "locos": [
          "68005 \"Defiant\""
        ],
        "source": "manual",
        "train_id": "774M36CY26",
        "updated_at": "2026-08-26T19:21:58+00:00"
      },
      "4M37_Severn_Tunnel": {
        "camera": "",
        "expected_time": "03:38\u00bd",
        "headcode": "4M37",
        "location": "Severn Tunnel",
        "locos": [
          "68005 \"Defiant\""
        ],
        "source": "manual",
        "train_id": "774M37C326",
        "updated_at": "2026-08-26T16:46:49+00:00"
      },
      "4M42_Barking": {
        "camera": "",
        "expected_time": "03:11",
        "headcode": "4M42",
        "location": "Barking",
        "locos": [
          "66596"
        ],
        "source": "manual",
        "train_id": "514M42C226",
        "updated_at": "2026-08-26T16:47:20+00:00"
      },
      "4M46_Banbury": {
        "camera": "",
        "expected_time": "18:04",
        "headcode": "4M46",
        "location": "Banbury",
        "locos": [
          "66766 \"Gail Richardson\""
        ],
        "source": "manual",
        "train_id": "864M46CO26",
        "updated_at": "2026-08-26T17:12:10+00:00"
      },
      "4M46_Basingstoke": {
        "camera": "",
        "expected_time": "15:48",
        "headcode": "4M46",
        "location": "Basingstoke",
        "locos": [
          "66766 \"Gail Richardson\""
        ],
        "source": "manual",
        "train_id": "864M46CO26",
        "updated_at": "2026-08-26T16:00:54+00:00"
      },
      "4M49_Beattock": {
        "camera": "",
        "expected_time": "01:25",
        "headcode": "4M49",
        "location": "Beattock",
        "locos": [
          "88005 \"Minerva\""
        ],
        "source": "manual",
        "train_id": "074M49C026",
        "updated_at": "2026-08-26T16:48:18+00:00"
      },
      "4M49_Wigan": {
        "camera": "",
        "expected_time": "04:05",
        "headcode": "4M49",
        "location": "Wigan",
        "locos": [
          "88005 \"Minerva\""
        ],
        "source": "manual",
        "train_id": "074M49C026",
        "updated_at": "2026-08-26T16:46:38+00:00"
      },
      "4M52_Barking": {
        "camera": "",
        "expected_time": "12:02",
        "headcode": "4M52",
        "location": "Barking",
        "locos": [
          "66523"
        ],
        "source": "manual",
        "train_id": "514M52CI26",
        "updated_at": "2026-08-26T16:16:19+00:00"
      },
      "4M57_Wigan": {
        "camera": "",
        "expected_time": "04:26",
        "headcode": "4M57",
        "location": "Wigan",
        "locos": [
          "66749 \"Christopher Hopcroft MBE 60 Years Railway Service\"",
          "66741 \"Swanage Railway\""
        ],
        "source": "manual",
        "train_id": "074M57C026",
        "updated_at": "2026-08-26T16:45:43+00:00"
      },
      "4M68_Watford": {
        "camera": "",
        "expected_time": "04:09",
        "headcode": "4M68",
        "location": "Watford",
        "locos": [
          "99XXX"
        ],
        "source": "manual",
        "train_id": "514M681126",
        "updated_at": "2026-08-26T03:04:52+00:00"
      },
      "4M73_Watford": {
        "camera": "",
        "expected_time": "01:16",
        "headcode": "4M73",
        "location": "Watford",
        "locos": [
          "66133"
        ],
        "source": "manual",
        "train_id": "494M73C725",
        "updated_at": "2026-08-26T16:48:28+00:00"
      },
      "4M77_Barking": {
        "camera": "",
        "expected_time": "04:30",
        "headcode": "4M77",
        "location": "Barking",
        "locos": [
          "88009 \"Diana\""
        ],
        "source": "manual",
        "train_id": "514M77C426",
        "updated_at": "2026-08-26T16:45:25+00:00"
      },
      "4M77_Watford": {
        "camera": "",
        "expected_time": "06:20",
        "headcode": "4M77",
        "location": "Watford",
        "locos": [
          "88009 \"Diana\""
        ],
        "source": "manual",
        "train_id": "514M77C426",
        "updated_at": "2026-08-26T16:39:44+00:00"
      },
      "4M88_Derby": {
        "camera": "",
        "expected_time": "14:31",
        "headcode": "4M88",
        "location": "Derby",
        "locos": [
          "70010"
        ],
        "source": "manual",
        "train_id": "654M88CK26",
        "updated_at": "2026-08-26T16:07:28+00:00"
      },
      "4M93_Watford": {
        "camera": "",
        "expected_time": "17:02",
        "headcode": "4M93",
        "location": "Watford",
        "locos": [
          "66543"
        ],
        "source": "manual",
        "train_id": "494M93CM26",
        "updated_at": "2026-08-26T16:58:17+00:00"
      },
      "4M96_Banbury": {
        "camera": "",
        "expected_time": "13:14",
        "headcode": "4M96",
        "location": "Banbury",
        "locos": [
          "66175 \"Rail Riders Express\""
        ],
        "source": "manual",
        "train_id": "864M96C626",
        "updated_at": "2026-08-26T16:12:19+00:00"
      },
      "4M98_Basingstoke": {
        "camera": "",
        "expected_time": "19:10",
        "headcode": "4M98",
        "location": "Basingstoke",
        "locos": [
          "66567"
        ],
        "source": "manual",
        "train_id": "864M98CV26",
        "updated_at": "2026-08-26T19:37:11+00:00"
      },
      "4M98_Swinton": {
        "camera": "",
        "expected_time": "19:09",
        "headcode": "4M98",
        "location": "Swinton",
        "locos": [
          "66302"
        ],
        "source": "manual",
        "train_id": "144M981R26",
        "updated_at": "2026-08-26T19:39:01+00:00"
      },
      "4N51_York_North": {
        "camera": "",
        "expected_time": "19:31",
        "headcode": "4N51",
        "location": "York North",
        "locos": [
          "66422 \"Max Joule 1958 - 1999\"",
          "66431 \"Kingmoor TMD\""
        ],
        "source": "manual",
        "train_id": "234N51CW26",
        "updated_at": "2026-08-26T19:30:51+00:00"
      },
      "4O32_Banbury": {
        "camera": "",
        "expected_time": "17:29",
        "headcode": "4O32",
        "location": "Banbury",
        "locos": [
          "66790 \"Louise\""
        ],
        "source": "manual",
        "train_id": "664O32CR26",
        "updated_at": "2026-08-26T16:54:48+00:00"
      },
      "4O99_Chesterfield": {
        "camera": "",
        "expected_time": "12:38",
        "headcode": "4O99",
        "location": "Chesterfield",
        "locos": [
          "66510"
        ],
        "source": "manual",
        "train_id": "174O99CH26",
        "updated_at": "2026-08-26T16:13:28+00:00"
      },
      "4O99_Swinton": {
        "camera": "",
        "expected_time": "12:08",
        "headcode": "4O99",
        "location": "Swinton",
        "locos": [
          "66510"
        ],
        "source": "manual",
        "train_id": "174O99CH26",
        "updated_at": "2026-08-26T16:15:57+00:00"
      },
      "4S38_Wigan": {
        "camera": "",
        "expected_time": "15:51\u00bd",
        "headcode": "4S38",
        "location": "Wigan",
        "locos": [
          "66097"
        ],
        "source": "manual",
        "train_id": "364S38CP26",
        "updated_at": "2026-08-26T16:00:23+00:00"
      },
      "4S43_Thankerton": {
        "camera": "",
        "expected_time": "13:29\u00bd",
        "headcode": "4S43",
        "location": "Thankerton",
        "locos": [
          "88008 \"Ariadne\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "704S43C626",
        "updated_at": "2026-08-26T16:10:56+00:00"
      },
      "4S44_Wigan": {
        "camera": "",
        "expected_time": "14:45",
        "headcode": "4S44",
        "location": "Wigan",
        "locos": [
          "88005 \"Minerva\""
        ],
        "source": "manual",
        "train_id": "704S441K26",
        "updated_at": "2026-08-26T16:06:33+00:00"
      },
      "4S45_Beattock": {
        "camera": "",
        "expected_time": "00:06",
        "headcode": "4S45",
        "location": "Beattock",
        "locos": [
          "88006 \"Juno\""
        ],
        "source": "manual",
        "train_id": "704S45CX25",
        "updated_at": "2026-08-26T16:53:22+00:00"
      },
      "4S60_Thankerton": {
        "camera": "",
        "expected_time": "09:37",
        "headcode": "4S60",
        "location": "Thankerton",
        "locos": [
          "90015",
          "90044"
        ],
        "source": "manual",
        "train_id": "514S60C825",
        "updated_at": "2026-08-26T16:28:33+00:00"
      },
      "4Z67_Swinton": {
        "camera": "",
        "expected_time": "15:18\u00bd",
        "headcode": "4Z67",
        "location": "Swinton",
        "locos": [
          "69006 \"John E Cronin\"",
          "66705 \"Golden Jubilee\""
        ],
        "source": "manual",
        "train_id": "564Z671O26",
        "updated_at": "2026-08-26T16:01:51+00:00"
      },
      "5Z45_Keighley": {
        "camera": "",
        "expected_time": "13:59",
        "headcode": "5Z45",
        "location": "Keighley",
        "locos": [
          "37706",
          "47813"
        ],
        "source": "manual",
        "train_id": "165Z451L26",
        "updated_at": "2026-08-26T16:08:48+00:00"
      },
      "6B51_Watford": {
        "camera": "",
        "expected_time": "12:37",
        "headcode": "6B51",
        "location": "Watford",
        "locos": [
          "66704 \"Colchester Power Signalbox\"",
          "66787 \"Three Bridges ASC\""
        ],
        "source": "manual",
        "train_id": "726B51CI26",
        "updated_at": "2026-08-26T16:13:54+00:00"
      },
      "6C52_Horton": {
        "camera": "",
        "expected_time": "14:05",
        "headcode": "6C52",
        "location": "Horton",
        "locos": [
          "66671 \"Wensleydale Railway Association 25 Years 1990-2015\""
        ],
        "source": "manual",
        "train_id": "356C52CJ26",
        "updated_at": "2026-08-26T16:08:30+00:00"
      },
      "6C92_Severn_Tunnel": {
        "camera": "",
        "expected_time": "10:05",
        "headcode": "6C92",
        "location": "Severn Tunnel",
        "locos": [
          "66732 \"GBRf The First Decade 1999-2009 John Smith - MD\""
        ],
        "source": "manual",
        "train_id": "796C92CB26",
        "updated_at": "2026-08-26T16:26:25+00:00"
      },
      "6D74_Doncaster": {
        "camera": "",
        "expected_time": "07:00",
        "headcode": "6D74",
        "location": "Doncaster",
        "locos": [
          "66774 \"Sue Coles\""
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-08-26T16:35:02+00:00"
      },
      "6E11_Banbury": {
        "camera": "",
        "expected_time": "13:37",
        "headcode": "6E11",
        "location": "Banbury",
        "locos": [
          "66112"
        ],
        "source": "manual",
        "train_id": "746E11CJ26",
        "updated_at": "2026-08-26T16:09:46+00:00"
      },
      "6E15_Wingfield": {
        "camera": "",
        "expected_time": "01:37",
        "headcode": "6E15",
        "location": "Wingfield",
        "locos": [
          "66667 \"West Somerset Railway\""
        ],
        "source": "manual",
        "train_id": "866E15C725",
        "updated_at": "2026-08-26T16:48:11+00:00"
      },
      "6E49_Wingfield": {
        "camera": "",
        "expected_time": "03:15\u00bd",
        "headcode": "6E49",
        "location": "Wingfield",
        "locos": [
          "66190 \"Martin House Children\u2019s Hospice\""
        ],
        "source": "manual",
        "train_id": "776E49C925",
        "updated_at": "2026-08-26T16:47:14+00:00"
      },
      "6E65_Swinton": {
        "camera": "",
        "expected_time": "06:29",
        "headcode": "6E65",
        "location": "Swinton",
        "locos": [
          "700xx"
        ],
        "source": "manual",
        "train_id": "346E65C526",
        "updated_at": "2026-08-26T16:39:23+00:00"
      },
      "6E77_Horton": {
        "camera": "",
        "expected_time": "16:48",
        "headcode": "6E77",
        "location": "Horton",
        "locos": [
          "66706 \"Nene Valley\""
        ],
        "source": "manual",
        "train_id": "096E77CT26",
        "updated_at": "2026-08-26T17:00:03+00:00"
      },
      "6E98_Swinton": {
        "camera": "",
        "expected_time": "04:25",
        "headcode": "6E98",
        "location": "Swinton",
        "locos": [
          "66302"
        ],
        "source": "manual",
        "train_id": "586E981026",
        "updated_at": "2026-08-26T16:46:09+00:00"
      },
      "6J11_Wigan": {
        "camera": "",
        "expected_time": "17:54",
        "headcode": "6J11",
        "location": "Wigan",
        "locos": [
          "Tamper"
        ],
        "source": "manual",
        "train_id": "096J111P26",
        "updated_at": "2026-08-26T17:03:02+00:00"
      },
      "6L38_Wigan": {
        "camera": "",
        "expected_time": "00:29",
        "headcode": "6L38",
        "location": "Wigan",
        "locos": [
          "66755 \"Tony Berkeley OBE RFG Chairman 1997-2018\""
        ],
        "source": "manual",
        "train_id": "076L38CV25",
        "updated_at": "2026-08-26T16:50:24+00:00"
      },
      "6L48_Watford": {
        "camera": "",
        "expected_time": "21:03",
        "headcode": "6L48",
        "location": "Watford",
        "locos": [
          "66314 \"Katie\""
        ],
        "source": "manual",
        "train_id": "366L48CQ26",
        "updated_at": "2026-08-26T19:47:55+00:00"
      },
      "6M18_Newbury": {
        "camera": "",
        "expected_time": "19:28",
        "headcode": "6M18",
        "location": "Newbury",
        "locos": [
          "60099 \"Ben More Assynt\""
        ],
        "source": "manual",
        "train_id": "826M18CT26",
        "updated_at": "2026-08-26T19:36:23+00:00"
      },
      "6M41_Bredon": {
        "camera": "",
        "expected_time": "16:32",
        "headcode": "6M41",
        "location": "Bredon",
        "locos": [
          "66655"
        ],
        "source": "manual",
        "train_id": "796M41CJ26",
        "updated_at": "2026-08-26T15:53:24+00:00"
      },
      "6M45_Watford": {
        "camera": "",
        "expected_time": "10:39",
        "headcode": "6M45",
        "location": "Watford",
        "locos": [
          "66091 \"accurascale\""
        ],
        "source": "manual",
        "train_id": "896M45C626",
        "updated_at": "2026-08-26T16:23:21+00:00"
      },
      "6M51_Newbury": {
        "camera": "",
        "expected_time": "12:42\u00bd",
        "headcode": "6M51",
        "location": "Newbury",
        "locos": [
          "60029 \"Ben Nevis\""
        ],
        "source": "manual",
        "train_id": "826M511G26",
        "updated_at": "2026-08-26T16:13:16+00:00"
      },
      "6M56_Bredon": {
        "camera": "",
        "expected_time": "12:33",
        "headcode": "6M56",
        "location": "Bredon",
        "locos": [
          "68003 \"Astute\"",
          "68004 \"Rapid\""
        ],
        "source": "manual",
        "train_id": "686M56CM26",
        "updated_at": "2026-08-26T16:14:17+00:00"
      },
      "6M78_Horton": {
        "camera": "",
        "expected_time": "06:52",
        "headcode": "6M78",
        "location": "Horton",
        "locos": [
          "66696 \"The Green Progressor\""
        ],
        "source": "manual",
        "train_id": "236M78C426",
        "updated_at": "2026-08-26T16:37:28+00:00"
      },
      "6S50_Thankerton": {
        "camera": "",
        "expected_time": "15:05\u00bd",
        "headcode": "6S50",
        "location": "Thankerton",
        "locos": [
          "66152 \"Derek Holmes Railway Operator\""
        ],
        "source": "manual",
        "train_id": "096S50CK26",
        "updated_at": "2026-08-26T16:04:41+00:00"
      },
      "6V05_Bredon": {
        "camera": "",
        "expected_time": "10:32",
        "headcode": "6V05",
        "location": "Bredon",
        "locos": [
          "66659"
        ],
        "source": "manual",
        "train_id": "656V05CE26",
        "updated_at": "2026-08-26T16:23:46+00:00"
      },
      "6V41_Bredon": {
        "camera": "",
        "expected_time": "00:41",
        "headcode": "6V41",
        "location": "Bredon",
        "locos": [
          "66786 \"Cambridge University Railway Club\""
        ],
        "source": "manual",
        "train_id": "416V41CU25",
        "updated_at": "2026-08-26T16:49:28+00:00"
      },
      "6V50_Newbury": {
        "camera": "",
        "expected_time": "16:28",
        "headcode": "6V50",
        "location": "Newbury",
        "locos": [
          "59002 \"Alan J Day\""
        ],
        "source": "manual",
        "train_id": "726V50CO26",
        "updated_at": "2026-08-26T15:58:20+00:00"
      },
      "6V65_Bredon": {
        "camera": "",
        "expected_time": "00:18\u00bd",
        "headcode": "6V65",
        "location": "Bredon",
        "locos": [
          "66054"
        ],
        "source": "manual",
        "train_id": "226V65CY25",
        "updated_at": "2026-08-26T16:51:24+00:00"
      },
      "6V73_Bredon": {
        "camera": "",
        "expected_time": "06:59\u00bd",
        "headcode": "6V73",
        "location": "Bredon",
        "locos": [
          "68003 \"Astute\"",
          "68004 \"Rapid\""
        ],
        "source": "manual",
        "train_id": "426V73C426",
        "updated_at": "2026-08-26T16:35:30+00:00"
      },
      "6V81_Derby": {
        "camera": "",
        "expected_time": "19:41",
        "headcode": "6V81",
        "location": "Derby",
        "locos": [
          "66190 \"Martin House Children\u2019s Hospice\""
        ],
        "source": "manual",
        "train_id": "256V81CW26",
        "updated_at": "2026-08-26T19:27:25+00:00"
      },
      "6X41_Watford": {
        "camera": "",
        "expected_time": "01:47",
        "headcode": "6X41",
        "location": "Watford",
        "locos": [
          "66314 \"Katie\""
        ],
        "source": "manual",
        "train_id": "516X411026",
        "updated_at": "2026-08-26T16:47:49+00:00"
      },
      "6X77_Watford": {
        "camera": "",
        "expected_time": "17:38",
        "headcode": "6X77",
        "location": "Watford",
        "locos": [
          "66755 \"Tony Berkeley OBE RFG Chairman 1997-2018\""
        ],
        "source": "manual",
        "train_id": "516X77CO26",
        "updated_at": "2026-08-26T17:04:23+00:00"
      }
    },
    "2026-08-27": {
      "0E14_Swinton": {
        "camera": "",
        "expected_time": "08:46\u00bd",
        "headcode": "0E14",
        "location": "Swinton",
        "locos": [
          "37884 \"Cepheus\""
        ],
        "source": "manual",
        "train_id": "570E141A27",
        "updated_at": "2026-08-27T21:08:54+00:00"
      },
      "0Z92_Watford": {
        "camera": "",
        "expected_time": "16:18",
        "headcode": "0Z92",
        "location": "Watford",
        "locos": [
          "47739",
          "92028"
        ],
        "source": "manual",
        "train_id": "590Z922N27",
        "updated_at": "2026-08-27T19:39:54+00:00"
      },
      "3Q64_Severn_Tunnel": {
        "camera": "",
        "expected_time": "18:51",
        "headcode": "3Q64",
        "location": "Severn Tunnel",
        "locos": [
          "37425 \"Sir Robert McAlpine / Concrete Bob\"",
          "9708"
        ],
        "source": "manual",
        "train_id": "783Q641H27",
        "updated_at": "2026-08-27T15:46:20+00:00"
      },
      "4O71_Severn_Tunnel": {
        "camera": "",
        "expected_time": "17:00",
        "headcode": "4O71",
        "location": "Severn Tunnel",
        "locos": [
          "66587 \"AS ONE, WE CAN\""
        ],
        "source": "manual",
        "train_id": "774O71CS27",
        "updated_at": "2026-08-27T17:22:33+00:00"
      },
      "4S45_Thankerton": {
        "camera": "",
        "expected_time": "00:48",
        "headcode": "4S45",
        "location": "Thankerton",
        "locos": [
          "88006 \"Juno\""
        ],
        "source": "manual",
        "train_id": "704S45CX26",
        "updated_at": "2026-08-26T23:53:15+00:00"
      },
      "4S57_Beattock": {
        "camera": "",
        "expected_time": "18:08",
        "headcode": "4S57",
        "location": "Beattock",
        "locos": [
          "66749 \"Christopher Hopcroft MBE 60 Years Railway Service\""
        ],
        "source": "manual",
        "train_id": "664S57CH27",
        "updated_at": "2026-08-27T17:21:30+00:00"
      },
      "4S59_Thankerton": {
        "camera": "",
        "expected_time": "01:04\u00bd",
        "headcode": "4S59",
        "location": "Thankerton",
        "locos": [
          "90xxx"
        ],
        "source": "manual",
        "train_id": "864S59CP26",
        "updated_at": "2026-08-26T23:52:43+00:00"
      },
      "6C53_Wigan": {
        "camera": "",
        "expected_time": "07:19",
        "headcode": "6C53",
        "location": "Wigan",
        "locos": [
          "68006 \"Pride of the North\"",
          "68008 \"Avenger\""
        ],
        "source": "manual",
        "train_id": "426C53C627",
        "updated_at": "2026-08-27T19:27:49+00:00"
      }
    },
    "2026-08-28": {
      "0M58_Wingfield": {
        "camera": "",
        "expected_time": "11:43",
        "headcode": "0M58",
        "location": "Wingfield",
        "locos": [
          "37884 \"Cepheus\""
        ],
        "source": "manual",
        "train_id": "160M582G28",
        "updated_at": "2026-08-28T18:24:25+00:00"
      },
      "0Z47_Wigan": {
        "camera": "",
        "expected_time": "12:53",
        "headcode": "0Z47",
        "location": "Wigan",
        "locos": [
          "47813"
        ],
        "source": "manual",
        "train_id": "110Z471J28",
        "updated_at": "2026-08-28T15:26:51+00:00"
      },
      "0Z66_York_North": {
        "camera": "",
        "expected_time": "13:57",
        "headcode": "0Z66",
        "location": "York North",
        "locos": [
          "66705 \"Golden Jubilee\"",
          "73966"
        ],
        "source": "manual",
        "train_id": "230Z661K28",
        "updated_at": "2026-08-28T18:04:38+00:00"
      },
      "2Q54_Watford": {
        "camera": "",
        "expected_time": "01:47\u00bd",
        "headcode": "2Q54",
        "location": "Watford",
        "locos": [
          "153383"
        ],
        "source": "manual",
        "train_id": "742Q541827",
        "updated_at": "2026-08-28T18:18:53+00:00"
      },
      "4D30_Newark": {
        "camera": "",
        "expected_time": "09:56",
        "headcode": "4D30",
        "location": "Newark",
        "locos": [
          "67027 \"Charlotte\""
        ],
        "source": "manual",
        "train_id": "454D30CC28",
        "updated_at": "2026-08-28T18:15:48+00:00"
      },
      "4E83_Peterborough": {
        "camera": "",
        "expected_time": "17:22",
        "headcode": "4E83",
        "location": "Peterborough",
        "locos": [
          "66092"
        ],
        "source": "manual",
        "train_id": "494E83CN28",
        "updated_at": "2026-08-28T17:55:01+00:00"
      },
      "6A26_Towyn": {
        "camera": "",
        "expected_time": "20:17",
        "headcode": "6A26",
        "location": "Towyn",
        "locos": [
          "60055 \"Thomas Barnardo\""
        ],
        "source": "manual",
        "train_id": "406A26CY28",
        "updated_at": "2026-09-11T13:04:22+00:00"
      },
      "6Q62_Swinton": {
        "camera": "",
        "expected_time": "12:26",
        "headcode": "6Q62",
        "location": "Swinton",
        "locos": [
          "DR75014 Tamper"
        ],
        "source": "manual",
        "train_id": "466Q621D28",
        "updated_at": "2026-08-28T18:27:58+00:00"
      },
      "6Z99_Farington": {
        "camera": "",
        "expected_time": "16:33",
        "headcode": "6Z99",
        "location": "Farington",
        "locos": [
          "70801"
        ],
        "source": "manual",
        "train_id": "096Z991Q28",
        "updated_at": "2026-08-28T17:55:43+00:00"
      }
    },
    "2026-08-29": {
      "0M30_Wigan": {
        "camera": "",
        "expected_time": "18:22",
        "headcode": "0M30",
        "location": "Wigan",
        "locos": [
          "90018 \"The Greatest Gathering\"",
          "90044"
        ],
        "source": "manual",
        "train_id": "050M301I29",
        "updated_at": "2026-08-29T17:38:41+00:00"
      },
      "0Z32_Wigan": {
        "camera": "",
        "expected_time": "09:02",
        "headcode": "0Z32",
        "location": "Wigan",
        "locos": [
          "50050 \"Fearless\""
        ],
        "source": "manual",
        "train_id": "420Z321A29",
        "updated_at": "2026-08-29T15:36:28+00:00"
      },
      "0Z43_Beattock": {
        "camera": "",
        "expected_time": "09:50\u00bd",
        "headcode": "0Z43",
        "location": "Beattock",
        "locos": [
          "37219 \"Jonty Jarvis\"",
          "37421"
        ],
        "source": "manual",
        "train_id": "050Z431C29",
        "updated_at": "2026-08-29T15:28:56+00:00"
      },
      "0Z43_Thankerton": {
        "camera": "",
        "expected_time": "09:23\u00bd",
        "headcode": "0Z43",
        "location": "Thankerton",
        "locos": [
          "37219 \"Jonty Jarvis\"",
          "37421"
        ],
        "source": "manual",
        "train_id": "050Z431C29",
        "updated_at": "2026-08-29T15:30:32+00:00"
      },
      "1Z31_Bolton_Le_Sands": {
        "camera": "",
        "expected_time": "10:46\u00bd",
        "headcode": "1Z31",
        "location": "Bolton Le Sands",
        "locos": [
          "47593 \"Galloway Princess\"",
          "50050 \"Fearless\""
        ],
        "source": "manual",
        "train_id": "591Z311629",
        "updated_at": "2026-08-29T15:22:40+00:00"
      },
      "1Z31_Wigan": {
        "camera": "",
        "expected_time": "09:17",
        "headcode": "1Z31",
        "location": "Wigan",
        "locos": [
          "57302",
          "47593 \"Galloway Princess\""
        ],
        "source": "manual",
        "train_id": "591Z311629",
        "updated_at": "2026-08-29T15:31:23+00:00"
      },
      "1Z33_Ribblehead": {
        "camera": "",
        "expected_time": "16:49",
        "headcode": "1Z33",
        "location": "Ribblehead",
        "locos": [
          "50050 \"Fearless\"",
          "47593 \"Galloway Princess\""
        ],
        "source": "manual",
        "train_id": "091Z331Q29",
        "updated_at": "2026-08-29T15:57:05+00:00"
      },
      "1Z33_Wigan": {
        "camera": "",
        "expected_time": "19:00\u00bd",
        "headcode": "1Z33",
        "location": "Wigan",
        "locos": [
          "50050 \"Fearless\"",
          "47593 \"Galloway Princess\""
        ],
        "source": "manual",
        "train_id": "091Z331Q29",
        "updated_at": "2026-08-29T18:41:52+00:00"
      },
      "1Z62_Beattock": {
        "camera": "",
        "expected_time": "09:50",
        "headcode": "1Z62",
        "location": "Beattock",
        "locos": [
          "57601 \"Windsor Castle\"",
          "57313 \"Scarborough Castle\""
        ],
        "source": "manual",
        "train_id": "421Z621629",
        "updated_at": "2026-08-29T15:29:21+00:00"
      },
      "1Z62_Bolton_Le_Sands": {
        "camera": "",
        "expected_time": "07:54\u00bd",
        "headcode": "1Z62",
        "location": "Bolton Le Sands",
        "locos": [
          "57601 \"Windsor Castle\"",
          "57313 \"Scarborough Castle\""
        ],
        "source": "manual",
        "train_id": "421Z621629",
        "updated_at": "2026-08-29T15:38:15+00:00"
      },
      "1Z62_Preston": {
        "camera": "",
        "expected_time": "07:29",
        "headcode": "1Z62",
        "location": "Preston",
        "locos": [
          "57601 \"Windsor Castle\"",
          "57313 \"Scarborough Castle\""
        ],
        "source": "manual",
        "train_id": "421Z621629",
        "updated_at": "2026-08-29T06:49:48+00:00"
      },
      "1Z62_Thankerton": {
        "camera": "",
        "expected_time": "10:24",
        "headcode": "1Z62",
        "location": "Thankerton",
        "locos": [
          "57601 \"Windsor Castle\"",
          "57313 \"Scarborough Castle\""
        ],
        "source": "manual",
        "train_id": "421Z621629",
        "updated_at": "2026-08-29T15:27:14+00:00"
      },
      "1Z63_Beattock": {
        "camera": "",
        "expected_time": "18:22",
        "headcode": "1Z63",
        "location": "Beattock",
        "locos": [
          "57313 \"Scarborough Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "041Z631U29",
        "updated_at": "2026-08-29T17:39:29+00:00"
      },
      "1Z63_Preston": {
        "camera": "",
        "expected_time": "21:46",
        "headcode": "1Z63",
        "location": "Preston",
        "locos": [
          "57313 \"Scarborough Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "041Z631U29",
        "updated_at": "2026-08-29T22:31:09+00:00"
      },
      "5Z30_Newbury": {
        "camera": "",
        "expected_time": "11:54\u00bd",
        "headcode": "5Z30",
        "location": "Newbury",
        "locos": [
          "47237",
          "47746 \"Chris Fudge 29.7.70 - 22.6.10\""
        ],
        "source": "manual",
        "train_id": "735Z301G29",
        "updated_at": "2026-08-29T15:16:58+00:00"
      }
    },
    "2026-08-31": {
      "0Z37_Keighley": {
        "camera": "",
        "expected_time": "12:35",
        "headcode": "0Z37",
        "location": "Keighley",
        "locos": [
          "37421",
          "37219 \"Jonty Jarvis\""
        ],
        "source": "manual",
        "train_id": "050Z371631",
        "updated_at": "2026-08-31T12:32:12+00:00"
      },
      "0Z37_Swinton": {
        "camera": "",
        "expected_time": "14:03\u00bd",
        "headcode": "0Z37",
        "location": "Swinton",
        "locos": [
          "37421",
          "37219 \"Jonty Jarvis\""
        ],
        "source": "manual",
        "train_id": "050Z371631",
        "updated_at": "2026-08-31T13:43:03+00:00"
      },
      "0Z37_Thankerton": {
        "camera": "",
        "expected_time": "07:49",
        "headcode": "0Z37",
        "location": "Thankerton",
        "locos": [
          "37421",
          "37219 \"Jonty Jarvis\""
        ],
        "source": "manual",
        "train_id": "050Z371631",
        "updated_at": "2026-08-31T12:42:55+00:00"
      },
      "0Z47_Wigan": {
        "camera": "",
        "expected_time": "16:16",
        "headcode": "0Z47",
        "location": "Wigan",
        "locos": [
          "47813"
        ],
        "source": "manual",
        "train_id": "590Z471M31",
        "updated_at": "2026-08-31T20:19:08+00:00"
      },
      "0Z58_Bushbury": {
        "camera": "",
        "expected_time": "10:12",
        "headcode": "0Z58",
        "location": "Bushbury",
        "locos": [
          "66848",
          "56049 \"Robin of Templecombe\""
        ],
        "source": "manual",
        "train_id": "650Z582G31",
        "updated_at": "2026-08-31T20:16:41+00:00"
      },
      "2Q24_Chesterfield": {
        "camera": "",
        "expected_time": "20:02\u00bd",
        "headcode": "2Q24",
        "location": "Chesterfield",
        "locos": [
          "153383"
        ],
        "source": "manual",
        "train_id": "692Q241J31",
        "updated_at": "2026-08-31T20:23:30+00:00"
      },
      "2Q26_Farington": {
        "camera": "",
        "expected_time": "18:35",
        "headcode": "2Q26",
        "location": "Farington",
        "locos": [
          "153384"
        ],
        "source": "manual",
        "train_id": "302Q261Q31",
        "updated_at": "2026-08-31T20:21:36+00:00"
      },
      "3Z45_York_North": {
        "camera": "",
        "expected_time": "09:12",
        "headcode": "3Z45",
        "location": "York North",
        "locos": [
          "43159 \"Rio Warrior\"",
          "43060 \"Heaton 150 1875-2025\""
        ],
        "source": "manual",
        "train_id": "313Z452631",
        "updated_at": "2026-08-31T20:15:28+00:00"
      },
      "3Z50_Swinton": {
        "camera": "",
        "expected_time": "18:57\u00bd",
        "headcode": "3Z50",
        "location": "Swinton",
        "locos": [
          "43060 \"Heaton 150 1875-2025\"",
          "43159 \"Rio Warrior\""
        ],
        "source": "manual",
        "train_id": "093Z502O31",
        "updated_at": "2026-08-31T20:19:58+00:00"
      },
      "4S43_Thankerton": {
        "camera": "",
        "expected_time": "13:21\u00bd",
        "headcode": "4S43",
        "location": "Thankerton",
        "locos": [
          "68034 \"Rail Riders 2020\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "704S43C631",
        "updated_at": "2026-08-31T12:30:19+00:00"
      }
    },
    "2026-09-01": {
      "0E14_Chesterfield": {
        "camera": "",
        "expected_time": "08:11\u00bd",
        "headcode": "0E14",
        "location": "Chesterfield",
        "locos": [
          "37512 \"Thornaby Demon\""
        ],
        "source": "manual",
        "train_id": "570E141A01",
        "updated_at": "2026-09-01T08:03:39+00:00"
      },
      "0E14_Swinton": {
        "camera": "",
        "expected_time": "08:52\u00bd",
        "headcode": "0E14",
        "location": "Swinton",
        "locos": [
          "37512 \"Thornaby Demon\""
        ],
        "source": "manual",
        "train_id": "570E141A01",
        "updated_at": "2026-09-01T07:59:27+00:00"
      },
      "0M58_Watford": {
        "camera": "",
        "expected_time": "10:48",
        "headcode": "0M58",
        "location": "Watford",
        "locos": [
          "37800 \"Cassiopeia\""
        ],
        "source": "manual",
        "train_id": "730M581G01",
        "updated_at": "2026-09-01T10:10:34+00:00"
      },
      "0M61_Wingfield": {
        "camera": "",
        "expected_time": "11:35\u00bd",
        "headcode": "0M61",
        "location": "Wingfield",
        "locos": [
          "37254 \"Cardiff Canton\"",
          "37419 \"Agamemnon\""
        ],
        "source": "manual",
        "train_id": "270M612H01",
        "updated_at": "2026-09-01T10:59:22+00:00"
      },
      "0Z48_Swinton": {
        "camera": "",
        "expected_time": "09:45",
        "headcode": "0Z48",
        "location": "Swinton",
        "locos": [
          "66714 \"Cromer Lifeboat\"",
          "73971",
          "99008"
        ],
        "source": "manual",
        "train_id": "230Z481E01",
        "updated_at": "2026-09-01T10:13:12+00:00"
      },
      "1Q10_Wingfield": {
        "camera": "",
        "expected_time": "03:26\u00bd",
        "headcode": "1Q10",
        "location": "Wingfield",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "181Q10C201",
        "updated_at": "2026-09-01T16:04:23+00:00"
      },
      "1Z71_Basingstoke": {
        "camera": "",
        "expected_time": "11:25\u00bd",
        "headcode": "1Z71",
        "location": "Basingstoke",
        "locos": [
          "47712 \"Lady Diana Spencer\"",
          "57003 \"Inter City Railway Society 50th Anniversary\""
        ],
        "source": "manual",
        "train_id": "481Z711601",
        "updated_at": "2026-09-01T10:51:20+00:00"
      },
      "3Q40_Banbury": {
        "camera": "",
        "expected_time": "00:18\u00bd",
        "headcode": "3Q40",
        "location": "Banbury",
        "locos": [
          "37425 \"Sir Robert McAlpine / Concrete Bob\""
        ],
        "source": "manual",
        "train_id": "573Q40C731",
        "updated_at": "2026-09-01T08:14:23+00:00"
      },
      "3Q58_Doncaster": {
        "camera": "",
        "expected_time": "02:57\u00bd",
        "headcode": "3Q58",
        "location": "Doncaster",
        "locos": [
          "37057 \"Barbara Arbon\"",
          "37405",
          "9714"
        ],
        "source": "manual",
        "train_id": "573Q581731",
        "updated_at": "2026-09-01T16:16:38+00:00"
      },
      "4M30_Thankerton": {
        "camera": "",
        "expected_time": "21:24\u00bd",
        "headcode": "4M30",
        "location": "Thankerton",
        "locos": [
          "90041",
          "90008"
        ],
        "source": "manual",
        "train_id": "054M30CY01",
        "updated_at": "2026-09-01T20:38:54+00:00"
      },
      "4M37_Bredon": {
        "camera": "",
        "expected_time": "04:48",
        "headcode": "4M37",
        "location": "Bredon",
        "locos": [
          "66431 \"Kingmoor TMD\""
        ],
        "source": "manual",
        "train_id": "774M37C301",
        "updated_at": "2026-09-01T08:07:57+00:00"
      },
      "4M48_Beattock": {
        "camera": "",
        "expected_time": "20:03",
        "headcode": "4M48",
        "location": "Beattock",
        "locos": [
          "68034 \"Rail Riders 2020\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "074M48CX01",
        "updated_at": "2026-09-01T19:34:14+00:00"
      },
      "4S50_Beattock": {
        "camera": "",
        "expected_time": "09:09\u00bd",
        "headcode": "4S50",
        "location": "Beattock",
        "locos": [
          "90042",
          "90010 \"275 Railway Squadron (Volunteers)\""
        ],
        "source": "manual",
        "train_id": "424S50C601",
        "updated_at": "2026-09-01T08:17:26+00:00"
      },
      "4S57_Wigan": {
        "camera": "",
        "expected_time": "13:44\u00bd",
        "headcode": "4S57",
        "location": "Wigan",
        "locos": [
          "66755 \"Tony Berkeley OBE RFG Chairman 1997-2018\""
        ],
        "source": "manual",
        "train_id": "664S57CH01",
        "updated_at": "2026-09-01T12:54:43+00:00"
      },
      "4S88_Watford": {
        "camera": "",
        "expected_time": "20:27",
        "headcode": "4S88",
        "location": "Watford",
        "locos": [
          "90004",
          "90049"
        ],
        "source": "manual",
        "train_id": "494S88CP01",
        "updated_at": "2026-09-01T19:33:41+00:00"
      },
      "6K73_Wigan": {
        "camera": "",
        "expected_time": "19:55",
        "headcode": "6K73",
        "location": "Wigan",
        "locos": [
          "68006 \"Pride of the North\"",
          "68008 \"Avenger\""
        ],
        "source": "manual",
        "train_id": "106K73CU01",
        "updated_at": "2026-09-01T19:37:39+00:00"
      },
      "6M28_Banbury": {
        "camera": "",
        "expected_time": "18:49\u00bd",
        "headcode": "6M28",
        "location": "Banbury",
        "locos": [
          "66847 \"Terry Baker\"",
          "70803"
        ],
        "source": "manual",
        "train_id": "746M28CW01",
        "updated_at": "2026-09-01T17:57:50+00:00"
      },
      "6M50_Beattock": {
        "camera": "",
        "expected_time": "18:47",
        "headcode": "6M50",
        "location": "Beattock",
        "locos": [
          "68007 \"30 Years of DRS\"",
          "68001 \"Evolution\""
        ],
        "source": "manual",
        "train_id": "046M50CP01",
        "updated_at": "2026-09-01T19:44:11+00:00"
      },
      "6Z97_Wingfield": {
        "camera": "",
        "expected_time": "05:21\u00bd",
        "headcode": "6Z97",
        "location": "Wingfield",
        "locos": [
          "66717 \"Good Old Boy\""
        ],
        "source": "manual",
        "train_id": "586Z971201",
        "updated_at": "2026-09-01T08:06:56+00:00"
      }
    },
    "2026-09-02": {
      "0M57_Wingfield": {
        "camera": "",
        "expected_time": "14:49",
        "headcode": "0M57",
        "location": "Wingfield",
        "locos": [
          "37512 \"Thornaby Demon\""
        ],
        "source": "manual",
        "train_id": "160M571M02",
        "updated_at": "2026-09-02T13:57:34+00:00"
      },
      "0Z90_Chesterfield": {
        "camera": "",
        "expected_time": "08:01",
        "headcode": "0Z90",
        "location": "Chesterfield",
        "locos": [
          "66136"
        ],
        "source": "manual",
        "train_id": "560Z901B02",
        "updated_at": "2026-09-02T07:38:42+00:00"
      },
      "1Z45_Ribblehead": {
        "camera": "",
        "expected_time": "11:54",
        "headcode": "1Z45",
        "location": "Ribblehead",
        "locos": [
          "50050 \"Fearless\"",
          "57302"
        ],
        "source": "manual",
        "train_id": "421Z451A02",
        "updated_at": "2026-09-02T10:36:02+00:00"
      },
      "1Z45_Wigan": {
        "camera": "",
        "expected_time": "09:00",
        "headcode": "1Z45",
        "location": "Wigan",
        "locos": [
          "50050 \"Fearless\"",
          "57302"
        ],
        "source": "manual",
        "train_id": "421Z451A02",
        "updated_at": "2026-09-02T08:18:21+00:00"
      },
      "1Z65_Preston": {
        "camera": "",
        "expected_time": "07:36",
        "headcode": "1Z65",
        "location": "Preston",
        "locos": [
          "37669",
          "47813"
        ],
        "source": "manual",
        "train_id": "111Z651A02",
        "updated_at": "2026-09-02T07:39:13+00:00"
      },
      "3Q59_Doncaster": {
        "camera": "",
        "expected_time": "04:02",
        "headcode": "3Q59",
        "location": "Doncaster",
        "locos": [
          "37405",
          "37057 \"Barbara Arbon\"",
          "9714"
        ],
        "source": "manual",
        "train_id": "123Q591901",
        "updated_at": "2026-09-02T07:49:08+00:00"
      },
      "3Q59_Sheffield_South": {
        "camera": "",
        "expected_time": "05:13\u00bd",
        "headcode": "3Q59",
        "location": "Sheffield South",
        "locos": [
          "37405",
          "37057 \"Barbara Arbon\"",
          "9714"
        ],
        "source": "manual",
        "train_id": "123Q591901",
        "updated_at": "2026-09-02T07:44:27+00:00"
      },
      "4M11_Wigan": {
        "camera": "",
        "expected_time": "22:17\u00bd",
        "headcode": "4M11",
        "location": "Wigan",
        "locos": [
          "90010 \"275 Railway Squadron (Volunteers)\"",
          "90042"
        ],
        "source": "manual",
        "train_id": "074M11CW02",
        "updated_at": "2026-09-02T21:37:40+00:00"
      },
      "4M30_Beattock": {
        "camera": "",
        "expected_time": "22:03",
        "headcode": "4M30",
        "location": "Beattock",
        "locos": [
          "90012",
          "90047"
        ],
        "source": "manual",
        "train_id": "054M30CY02",
        "updated_at": "2026-09-02T21:38:11+00:00"
      },
      "4S60_Wigan": {
        "camera": "",
        "expected_time": "06:54\u00bd",
        "headcode": "4S60",
        "location": "Wigan",
        "locos": [
          "90042",
          "90010"
        ],
        "source": "manual",
        "train_id": "514S60C801",
        "updated_at": "2026-09-02T07:41:44+00:00"
      },
      "4S88_Watford": {
        "camera": "",
        "expected_time": "20:27",
        "headcode": "4S88",
        "location": "Watford",
        "locos": [
          "90014",
          "90039"
        ],
        "source": "manual",
        "train_id": "494S88CP02",
        "updated_at": "2026-09-02T19:39:25+00:00"
      },
      "4S88_Wigan": {
        "camera": "",
        "expected_time": "02:19",
        "headcode": "4S88",
        "location": "Wigan",
        "locos": [
          "90004",
          "90049"
        ],
        "source": "manual",
        "train_id": "494S88CP01",
        "updated_at": "2026-09-02T07:49:29+00:00"
      },
      "5Q16_Chesterfield": {
        "camera": "",
        "expected_time": "11:11",
        "headcode": "5Q16",
        "location": "Chesterfield",
        "locos": [
          "37512 \"Thornaby Demon\"",
          "730011",
          "730003"
        ],
        "source": "manual",
        "train_id": "655Q161E02",
        "updated_at": "2026-09-02T10:37:13+00:00"
      },
      "5Q16_Swinton": {
        "camera": "",
        "expected_time": "11:54\u00bd",
        "headcode": "5Q16",
        "location": "Swinton",
        "locos": [
          "37512 \"Thornaby Demon\"",
          "730011",
          "730003"
        ],
        "source": "manual",
        "train_id": "655Q161E02",
        "updated_at": "2026-09-02T11:09:59+00:00"
      },
      "5Q41_Chesterfield": {
        "camera": "",
        "expected_time": "16:42",
        "headcode": "5Q41",
        "location": "Chesterfield",
        "locos": [
          "810020"
        ],
        "source": "manual",
        "train_id": "255Q411S02",
        "updated_at": "2026-09-02T16:50:23+00:00"
      },
      "5Q70_Thankerton": {
        "camera": "",
        "expected_time": "10:48",
        "headcode": "5Q70",
        "location": "Thankerton",
        "locos": [
          "334018"
        ],
        "source": "manual",
        "train_id": "065Q702F02",
        "updated_at": "2026-09-02T10:39:41+00:00"
      },
      "6A26_Towyn": {
        "camera": "",
        "expected_time": "20:15",
        "headcode": "6A26",
        "location": "Towyn",
        "locos": [
          "60055 \"Thomas Barnardo\""
        ],
        "source": "manual",
        "train_id": "406A261Y02",
        "updated_at": "2026-09-02T19:25:45+00:00"
      },
      "6Z96_Swinton": {
        "camera": "",
        "expected_time": "04:18",
        "headcode": "6Z96",
        "location": "Swinton",
        "locos": [
          "66704 \"Colchester Power Signalbox\""
        ],
        "source": "manual",
        "train_id": "586Z962002",
        "updated_at": "2026-09-02T07:45:43+00:00"
      }
    },
    "2026-09-03": {
      "1Z62_Newark": {
        "camera": "",
        "expected_time": "19:27\u00bd",
        "headcode": "1Z62",
        "location": "Newark",
        "locos": [
          "57601 \"Windsor Castle\"",
          "57313 \"Scarborough Castle\""
        ],
        "source": "manual",
        "train_id": "161Z621W03",
        "updated_at": "2026-09-03T19:41:30+00:00"
      },
      "3Q60_Severn_Tunnel": {
        "camera": "",
        "expected_time": "04:52",
        "headcode": "3Q60",
        "location": "Severn Tunnel",
        "locos": [
          "62287",
          "96606",
          "37425 \"Sir Robert McAlpine / Concrete Bob\"",
          "9701",
          "9810",
          "6397"
        ],
        "source": "manual",
        "train_id": "743Q60C802",
        "updated_at": "2026-09-03T08:55:24+00:00"
      },
      "4M30_Thankerton": {
        "camera": "",
        "expected_time": "21:24\u00bd",
        "headcode": "4M30",
        "location": "Thankerton",
        "locos": [
          "90012",
          "90047"
        ],
        "source": "manual",
        "train_id": "054M30CY03",
        "updated_at": "2026-09-03T20:34:08+00:00"
      },
      "4S60_Beattock": {
        "camera": "",
        "expected_time": "09:09",
        "headcode": "4S60",
        "location": "Beattock",
        "locos": [
          "90042",
          "90010 \"275 Railway Squadron (Volunteers)\""
        ],
        "source": "manual",
        "train_id": "514S60C802",
        "updated_at": "2026-09-03T08:26:52+00:00"
      },
      "4S60_Thankerton": {
        "camera": "",
        "expected_time": "09:37",
        "headcode": "4S60",
        "location": "Thankerton",
        "locos": [
          "90042",
          "90010 \"275 Railway Squadron (Volunteers)\""
        ],
        "source": "manual",
        "train_id": "514S60C802",
        "updated_at": "2026-09-03T08:41:24+00:00"
      },
      "5Q06_Thankerton": {
        "camera": "",
        "expected_time": "15:02\u00bd",
        "headcode": "5Q06",
        "location": "Thankerton",
        "locos": [
          "320420"
        ],
        "source": "manual",
        "train_id": "705Q061C03",
        "updated_at": "2026-09-03T15:27:49+00:00"
      },
      "5Q69_Chesterfield": {
        "camera": "",
        "expected_time": "15:51\u00bd",
        "headcode": "5Q69",
        "location": "Chesterfield",
        "locos": [
          "165009"
        ],
        "source": "manual",
        "train_id": "235Q691Q03",
        "updated_at": "2026-09-03T15:24:55+00:00"
      },
      "5Q69_Swinton": {
        "camera": "",
        "expected_time": "15:25",
        "headcode": "5Q69",
        "location": "Swinton",
        "locos": [
          "165009"
        ],
        "source": "manual",
        "train_id": "235Q691Q03",
        "updated_at": "2026-09-03T15:27:17+00:00"
      },
      "6C53_Wigan": {
        "camera": "",
        "expected_time": "07:15",
        "headcode": "6C53",
        "location": "Wigan",
        "locos": [
          "68008 \"Avenger\"",
          "68004 \"Rapid\""
        ],
        "source": "manual",
        "train_id": "426C53C603",
        "updated_at": "2026-09-03T08:46:20+00:00"
      },
      "6Z37_Keighley": {
        "camera": "",
        "expected_time": "13:43\u00bd",
        "headcode": "6Z37",
        "location": "Keighley",
        "locos": [
          "66704 \"Colchester Power Signalbox\""
        ],
        "source": "manual",
        "train_id": "096Z371L03",
        "updated_at": "2026-09-03T15:31:13+00:00"
      }
    },
    "2026-09-04": {
      "0Z12_Keighley": {
        "camera": "",
        "expected_time": "16:35",
        "headcode": "0Z12",
        "location": "Keighley",
        "locos": [
          "45212 (98513)",
          "47812",
          "57314 \"Conwy Castle\"",
          "98513"
        ],
        "source": "manual",
        "train_id": "310Z121I04",
        "updated_at": "2026-09-04T16:04:39+00:00"
      },
      "0Z31_Preston": {
        "camera": "",
        "expected_time": "07:06",
        "headcode": "0Z31",
        "location": "Preston",
        "locos": [
          "66431 \"Kingmoor TMD\""
        ],
        "source": "manual",
        "train_id": "420Z312504",
        "updated_at": "2026-09-04T06:21:06+00:00"
      },
      "0Z37_Severn_Tunnel": {
        "camera": "",
        "expected_time": "15:03\u00bd",
        "headcode": "0Z37",
        "location": "Severn Tunnel",
        "locos": [
          "37667"
        ],
        "source": "manual",
        "train_id": "420Z372K04",
        "updated_at": "2026-09-04T16:14:17+00:00"
      },
      "0Z47_Preston": {
        "camera": "",
        "expected_time": "08:06",
        "headcode": "0Z47",
        "location": "Preston",
        "locos": [
          "47812",
          "57314 \"Conwy Castle\""
        ],
        "source": "manual",
        "train_id": "110Z471A04",
        "updated_at": "2026-09-04T16:33:15+00:00"
      },
      "0Z70_Thankerton": {
        "camera": "",
        "expected_time": "16:52",
        "headcode": "0Z70",
        "location": "Thankerton",
        "locos": [
          "70811"
        ],
        "source": "manual",
        "train_id": "040Z701S04",
        "updated_at": "2026-09-04T16:03:08+00:00"
      },
      "1Z07_Watford": {
        "camera": "",
        "expected_time": "13:50",
        "headcode": "1Z07",
        "location": "Watford",
        "locos": [
          "20118 \"Saltburn-by-the-Sea\"",
          "20132",
          "20096",
          "20107"
        ],
        "source": "manual",
        "train_id": "621Z071L04",
        "updated_at": "2026-09-04T16:20:05+00:00"
      },
      "1Z09_Watford": {
        "camera": "",
        "expected_time": "13:42\u00bd",
        "headcode": "1Z09",
        "location": "Watford",
        "locos": [
          "800013"
        ],
        "source": "manual",
        "train_id": "621Z091L04",
        "updated_at": "2026-09-04T16:26:38+00:00"
      },
      "1Z20_Watford": {
        "camera": "",
        "expected_time": "17:34",
        "headcode": "1Z20",
        "location": "Watford",
        "locos": [
          "66748 \"St Michael's Mount\"",
          "66764 \"Major John Poyntz Engineer",
          "Railwayman\""
        ],
        "source": "manual",
        "train_id": "871Z201R04",
        "updated_at": "2026-09-04T18:02:58+00:00"
      },
      "3Q02_Banbury": {
        "camera": "",
        "expected_time": "02:56",
        "headcode": "3Q02",
        "location": "Banbury",
        "locos": [
          "37057 \"Barbara Arbon\"",
          "37405"
        ],
        "source": "manual",
        "train_id": "573Q02C903",
        "updated_at": "2026-09-04T04:51:56+00:00"
      },
      "3Q27_Derby": {
        "camera": "",
        "expected_time": "23:46",
        "headcode": "3Q27",
        "location": "Derby",
        "locos": [
          "37405",
          "37057 \"Barbara Arbon\""
        ],
        "source": "manual",
        "train_id": "573Q271904",
        "updated_at": "2026-09-05T00:35:21+00:00"
      },
      "4M48_Beattock": {
        "camera": "",
        "expected_time": "20:03",
        "headcode": "4M48",
        "location": "Beattock",
        "locos": [
          "88007 \"Electra\"",
          "68034 \"Rail Riders 2020\""
        ],
        "source": "manual",
        "train_id": "074M48CX04",
        "updated_at": "2026-09-04T20:34:59+00:00"
      },
      "4S43_Thankerton": {
        "camera": "",
        "expected_time": "13:21\u00bd",
        "headcode": "4S43",
        "location": "Thankerton",
        "locos": [
          "88007 \"Electra\"",
          "68034 \"Rail Riders 2020\""
        ],
        "source": "manual",
        "train_id": "704S43C604",
        "updated_at": "2026-09-04T16:27:13+00:00"
      },
      "4S44_Wigan": {
        "camera": "",
        "expected_time": "14:44",
        "headcode": "4S44",
        "location": "Wigan",
        "locos": [
          "88005 \"Minerva\""
        ],
        "source": "manual",
        "train_id": "704S44CK04",
        "updated_at": "2026-09-04T16:16:00+00:00"
      },
      "4S57_Wigan": {
        "camera": "",
        "expected_time": "13:44\u00bd",
        "headcode": "4S57",
        "location": "Wigan",
        "locos": [
          "66703 \"Doncaster PSB 1981-2002\""
        ],
        "source": "manual",
        "train_id": "664S57CH04",
        "updated_at": "2026-09-04T16:25:06+00:00"
      },
      "4S60_Barking": {
        "camera": "",
        "expected_time": "21:57\u00bd",
        "headcode": "4S60",
        "location": "Barking",
        "locos": [
          "66572"
        ],
        "source": "manual",
        "train_id": "514S60C704",
        "updated_at": "2026-09-05T00:37:18+00:00"
      },
      "4S60_Beattock": {
        "camera": "",
        "expected_time": "09:09",
        "headcode": "4S60",
        "location": "Beattock",
        "locos": [
          "90043",
          "90018 \"The Greatest Gathering\""
        ],
        "source": "manual",
        "train_id": "514S60C803",
        "updated_at": "2026-09-04T16:31:31+00:00"
      },
      "4S60_Thankerton": {
        "camera": "",
        "expected_time": "09:37",
        "headcode": "4S60",
        "location": "Thankerton",
        "locos": [
          "90043",
          "90018 \"The Greatest Gathering\""
        ],
        "source": "manual",
        "train_id": "514S60C803",
        "updated_at": "2026-09-04T16:30:14+00:00"
      },
      "4S88_Watford": {
        "camera": "",
        "expected_time": "20:27",
        "headcode": "4S88",
        "location": "Watford",
        "locos": [
          "90044",
          "90049"
        ],
        "source": "manual",
        "train_id": "494S88CP04",
        "updated_at": "2026-09-04T20:33:45+00:00"
      },
      "4V44_Severn_Tunnel": {
        "camera": "",
        "expected_time": "13:58\u00bd",
        "headcode": "4V44",
        "location": "Severn Tunnel",
        "locos": [
          "68005 \"Defiant\""
        ],
        "source": "manual",
        "train_id": "704V44CH04",
        "updated_at": "2026-09-04T16:19:13+00:00"
      },
      "5Q40_Chesterfield": {
        "camera": "",
        "expected_time": "15:34",
        "headcode": "5Q40",
        "location": "Chesterfield",
        "locos": [
          "810017"
        ],
        "source": "manual",
        "train_id": "595Q401L04",
        "updated_at": "2026-09-04T16:10:52+00:00"
      },
      "5Q40_Sheffield_South": {
        "camera": "",
        "expected_time": "15:51",
        "headcode": "5Q40",
        "location": "Sheffield South",
        "locos": [
          "810017"
        ],
        "source": "manual",
        "train_id": "595Q401L04",
        "updated_at": "2026-09-04T16:08:14+00:00"
      },
      "5Q41_Chesterfield": {
        "camera": "",
        "expected_time": "16:47",
        "headcode": "5Q41",
        "location": "Chesterfield",
        "locos": [
          "810017"
        ],
        "source": "manual",
        "train_id": "255Q411S04",
        "updated_at": "2026-09-04T16:04:09+00:00"
      },
      "5Q65_Basingstoke": {
        "camera": "",
        "expected_time": "10:07",
        "headcode": "5Q65",
        "location": "Basingstoke",
        "locos": [
          "66748 \"St Michael's Mount\"",
          "66764 \"Major John Poyntz Engineer",
          "Railwayman\""
        ],
        "source": "manual",
        "train_id": "865Q651C04",
        "updated_at": "2026-09-04T16:29:41+00:00"
      },
      "5Q70_Beattock": {
        "camera": "",
        "expected_time": "11:17",
        "headcode": "5Q70",
        "location": "Beattock",
        "locos": [
          "320403"
        ],
        "source": "manual",
        "train_id": "065Q701F04",
        "updated_at": "2026-09-04T16:28:28+00:00"
      },
      "6Z37_Keighley": {
        "camera": "",
        "expected_time": "13:43\u00bd",
        "headcode": "6Z37",
        "location": "Keighley",
        "locos": [
          "66755 \"Tony Berkeley OBE RFG Chairman 1997-2018\""
        ],
        "source": "manual",
        "train_id": "096Z371L04",
        "updated_at": "2026-09-04T16:25:45+00:00"
      }
    },
    "2026-09-05": {
      "1Z07_Dawlish": {
        "camera": "",
        "expected_time": "12:09\u00bd",
        "headcode": "1Z07",
        "location": "Dawlish",
        "locos": [
          "4498 (98898) \"Sir Nigel Gresley\"",
          "57302"
        ],
        "source": "manual",
        "train_id": "861Z071605",
        "updated_at": "2026-09-05T15:37:51+00:00"
      },
      "1Z08_Dawlish": {
        "camera": "",
        "expected_time": "17:52",
        "headcode": "1Z08",
        "location": "Dawlish",
        "locos": [
          "4498 (98898) \"Sir Nigel Gresley\"",
          "57302"
        ],
        "source": "manual",
        "train_id": "831Z081T05",
        "updated_at": "2026-09-05T17:25:22+00:00"
      },
      "1Z20_Keighley": {
        "camera": "",
        "expected_time": "00:31\u00bd",
        "headcode": "1Z20",
        "location": "Keighley",
        "locos": [
          "66748 \"St Michael's Mount\"",
          "66764 \"Major John Poyntz Engineer",
          "Railwayman\""
        ],
        "source": "manual",
        "train_id": "871Z201R04",
        "updated_at": "2026-09-05T03:59:19+00:00"
      },
      "1Z36_Banbury": {
        "camera": "",
        "expected_time": "11:24\u00bd",
        "headcode": "1Z36",
        "location": "Banbury",
        "locos": [
          "47848",
          "47746 \"Chris Fudge 29.7.70 - 22.6.10\""
        ],
        "source": "manual",
        "train_id": "481Z361605",
        "updated_at": "2026-09-05T15:39:09+00:00"
      },
      "1Z37_Banbury": {
        "camera": "",
        "expected_time": "16:13",
        "headcode": "1Z37",
        "location": "Banbury",
        "locos": [
          "47746 \"Chris Fudge 29.7.70 - 22.6.10\"",
          "47848"
        ],
        "source": "manual",
        "train_id": "741Z371R05",
        "updated_at": "2026-09-05T16:32:03+00:00"
      },
      "1Z64_Bolton_Le_Sands": {
        "camera": "",
        "expected_time": "09:51\u00bd",
        "headcode": "1Z64",
        "location": "Bolton Le Sands",
        "locos": [
          "57313 \"Scarborough Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "691Z641605",
        "updated_at": "2026-09-05T15:41:28+00:00"
      },
      "1Z64_Preston": {
        "camera": "",
        "expected_time": "09:28",
        "headcode": "1Z64",
        "location": "Preston",
        "locos": [
          "57313 \"Scarborough Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "691Z641605",
        "updated_at": "2026-09-05T15:42:53+00:00"
      },
      "1Z65_Ribblehead": {
        "camera": "",
        "expected_time": "15:53",
        "headcode": "1Z65",
        "location": "Ribblehead",
        "locos": [
          "57313 \"Scarborough Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "091Z651O05",
        "updated_at": "2026-09-05T15:23:39+00:00"
      },
      "2Q74_Keighley": {
        "camera": "",
        "expected_time": "16:10",
        "headcode": "2Q74",
        "location": "Keighley",
        "locos": [
          "153383"
        ],
        "source": "manual",
        "train_id": "572Q741M05",
        "updated_at": "2026-09-05T15:31:00+00:00"
      },
      "2Q74_Swinton": {
        "camera": "",
        "expected_time": "14:21",
        "headcode": "2Q74",
        "location": "Swinton",
        "locos": [
          "153383"
        ],
        "source": "manual",
        "train_id": "572Q741M05",
        "updated_at": "2026-09-05T15:30:48+00:00"
      },
      "3Q21_Banbury": {
        "camera": "",
        "expected_time": "06:09",
        "headcode": "3Q21",
        "location": "Banbury",
        "locos": [
          "37425 \"Sir Robert McAlpine / Concrete Bob\"",
          "96606",
          "62287",
          "6397",
          "9810",
          "9701"
        ],
        "source": "manual",
        "train_id": "813Q21C804",
        "updated_at": "2026-09-05T15:49:01+00:00"
      },
      "3Z63_Watford": {
        "camera": "",
        "expected_time": "05:18\u00bd",
        "headcode": "3Z63",
        "location": "Watford",
        "locos": [
          "57313 \"Scarborough Castle\"",
          "57601 \"Windsor Castle\""
        ],
        "source": "manual",
        "train_id": "733Z631405",
        "updated_at": "2026-09-05T15:49:59+00:00"
      },
      "4M07_Watford": {
        "camera": "",
        "expected_time": "11:06",
        "headcode": "4M07",
        "location": "Watford",
        "locos": [
          "88xxx"
        ],
        "source": "manual",
        "train_id": "514M07CC05",
        "updated_at": "2026-09-05T15:40:48+00:00"
      },
      "4S43_Beattock": {
        "camera": "",
        "expected_time": "12:48\u00bd",
        "headcode": "4S43",
        "location": "Beattock",
        "locos": [
          "68034 \"Rail Riders 2020\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "704S43C605",
        "updated_at": "2026-09-05T15:34:30+00:00"
      },
      "4S43_Thankerton": {
        "camera": "",
        "expected_time": "13:21\u00bd",
        "headcode": "4S43",
        "location": "Thankerton",
        "locos": [
          "68034 \"Rail Riders 2020\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "704S43C605",
        "updated_at": "2026-09-05T15:31:52+00:00"
      },
      "4S47_Thankerton": {
        "camera": "",
        "expected_time": "00:48\u00bd",
        "headcode": "4S47",
        "location": "Thankerton",
        "locos": [
          "90014 \"Over the Rainbow\"",
          "90039 \"The Chartered Institute of Logistics and Transport\""
        ],
        "source": "manual",
        "train_id": "704S47CY04",
        "updated_at": "2026-09-05T03:56:22+00:00"
      },
      "4S52_Beattock": {
        "camera": "",
        "expected_time": "11:40",
        "headcode": "4S52",
        "location": "Beattock",
        "locos": [
          "90045",
          "90021 \"Donald Malcolm\""
        ],
        "source": "manual",
        "train_id": "424S52CB05",
        "updated_at": "2026-09-05T15:38:34+00:00"
      },
      "4S52_Wigan": {
        "camera": "",
        "expected_time": "08:51\u00bd",
        "headcode": "4S52",
        "location": "Wigan",
        "locos": [
          "90045",
          "90021 \"Donald Malcolm\""
        ],
        "source": "manual",
        "train_id": "424S52CB05",
        "updated_at": "2026-09-05T15:48:17+00:00"
      },
      "4S88_Thankerton": {
        "camera": "",
        "expected_time": "05:11",
        "headcode": "4S88",
        "location": "Thankerton",
        "locos": [
          "90044",
          "90049"
        ],
        "source": "manual",
        "train_id": "494S88CP04",
        "updated_at": "2026-09-05T15:50:23+00:00"
      }
    },
    "2026-09-06": {
      "0D63_York_North": {
        "camera": "",
        "expected_time": "14:54\u00bd",
        "headcode": "0D63",
        "location": "York North",
        "locos": [
          "66305 \"Embsay and Bolton Abbey Steam Railway\"",
          "66689 \"Evening Star\"",
          "66736 \"WOLVERHAMPTON WANDERERS\""
        ],
        "source": "manual",
        "train_id": "130D63CL06",
        "updated_at": "2026-09-06T15:09:11+00:00"
      },
      "0M07_Sheffield_South": {
        "camera": "",
        "expected_time": "18:16",
        "headcode": "0M07",
        "location": "Sheffield South",
        "locos": [
          "70009",
          "70008",
          "66601 \"The Hope Valley\""
        ],
        "source": "manual",
        "train_id": "170M071U06",
        "updated_at": "2026-09-06T17:44:33+00:00"
      },
      "1Q01_Bushbury": {
        "camera": "",
        "expected_time": "22:09",
        "headcode": "1Q01",
        "location": "Bushbury",
        "locos": [
          "73961 \"Alison\"",
          "73965 \"Des O'Brien\""
        ],
        "source": "manual",
        "train_id": "571Q01CZ06",
        "updated_at": "2026-09-06T22:31:12+00:00"
      },
      "1Q34_Swinton": {
        "camera": "",
        "expected_time": "10:59",
        "headcode": "1Q34",
        "location": "Swinton",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "591Q34CG06",
        "updated_at": "2026-09-06T15:18:07+00:00"
      },
      "1S26_Camden_Junction": {
        "camera": "",
        "expected_time": "23:33",
        "headcode": "1S26",
        "location": "Camden Junction",
        "locos": [
          "92038"
        ],
        "source": "manual",
        "train_id": "721S26M906",
        "updated_at": "2026-09-06T23:21:17+00:00"
      },
      "2Q11_Bredon": {
        "camera": "",
        "expected_time": "12:14\u00bd",
        "headcode": "2Q11",
        "location": "Bredon",
        "locos": [
          "153311"
        ],
        "source": "manual",
        "train_id": "652Q111D06",
        "updated_at": "2026-09-06T15:16:38+00:00"
      },
      "4E07_Doncaster": {
        "camera": "",
        "expected_time": "21:31",
        "headcode": "4E07",
        "location": "Doncaster",
        "locos": [
          "70008"
        ],
        "source": "manual",
        "train_id": "344E07DZ06",
        "updated_at": "2026-09-09T20:09:57+00:00"
      },
      "4M48_Beattock": {
        "camera": "",
        "expected_time": "18:49",
        "headcode": "4M48",
        "location": "Beattock",
        "locos": [
          "68034 \"Rail Riders 2020\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "074M48CV06",
        "updated_at": "2026-09-06T17:57:22+00:00"
      },
      "4M48_Thankerton": {
        "camera": "",
        "expected_time": "18:19\u00bd",
        "headcode": "4M48",
        "location": "Thankerton",
        "locos": [
          "68034 \"Rail Riders 2020\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "074M48CV06",
        "updated_at": "2026-09-06T17:26:46+00:00"
      },
      "4M48_Wigan": {
        "camera": "",
        "expected_time": "22:07",
        "headcode": "4M48",
        "location": "Wigan",
        "locos": [
          "68034 \"Rail Riders 2020\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "074M48CV06",
        "updated_at": "2026-09-06T22:32:17+00:00"
      },
      "4S45_Wigan": {
        "camera": "",
        "expected_time": "18:47",
        "headcode": "4S45",
        "location": "Wigan",
        "locos": [
          "88006 \"Juno\""
        ],
        "source": "manual",
        "train_id": "704S45CS06",
        "updated_at": "2026-09-06T17:57:46+00:00"
      },
      "5Z07_Bredon": {
        "camera": "",
        "expected_time": "14:37",
        "headcode": "5Z07",
        "location": "Bredon",
        "locos": [
          "4498 (98898) \"Sir Nigel Gresley\"",
          "D6851 (37667) \"FLOPSIE\"",
          "35465"
        ],
        "source": "manual",
        "train_id": "835Z071K06",
        "updated_at": "2026-09-06T15:12:15+00:00"
      },
      "5Z07_Bushbury": {
        "camera": "",
        "expected_time": "16:41",
        "headcode": "5Z07",
        "location": "Bushbury",
        "locos": [
          "D6851 (37667) \"FLOPSIE\"",
          "4498 (98898) \"Sir Nigel Gresley\"",
          "35465"
        ],
        "source": "manual",
        "train_id": "835Z071K06",
        "updated_at": "2026-09-06T16:49:15+00:00"
      },
      "5Z68_Bolton_Le_Sands": {
        "camera": "",
        "expected_time": "14:03\u00bd",
        "headcode": "5Z68",
        "location": "Bolton Le Sands",
        "locos": [
          "57601 \"Windsor Castle\"",
          "57313 \"Scarborough Castle\""
        ],
        "source": "manual",
        "train_id": "655Z681K06",
        "updated_at": "2026-09-06T17:06:54+00:00"
      },
      "5Z68_Wigan": {
        "camera": "",
        "expected_time": "13:16\u00bd",
        "headcode": "5Z68",
        "location": "Wigan",
        "locos": [
          "57601 \"Windsor Castle\"",
          "57313 \"Scarborough Castle\""
        ],
        "source": "manual",
        "train_id": "655Z681K06",
        "updated_at": "2026-09-06T17:06:58+00:00"
      }
    },
    "2026-09-07": {
      "0Z01_Swinton": {
        "camera": "",
        "expected_time": "14:29\u00bd",
        "headcode": "0Z01",
        "location": "Swinton",
        "locos": [
          "56049 \"Robin of Templecombe\""
        ],
        "source": "manual",
        "train_id": "550Z012L07",
        "updated_at": "2026-09-07T14:42:40+00:00"
      },
      "0Z31_Keighley": {
        "camera": "",
        "expected_time": "17:53\u00bd",
        "headcode": "0Z31",
        "location": "Keighley",
        "locos": [
          "66780 \"The Cemex Express\"",
          "66705 \"Golden Jubilee\""
        ],
        "source": "manual",
        "train_id": "090Z312Q07",
        "updated_at": "2026-09-07T16:55:03+00:00"
      },
      "0Z56_Doncaster": {
        "camera": "",
        "expected_time": "06:18",
        "headcode": "0Z56",
        "location": "Doncaster",
        "locos": [
          "66xxx"
        ],
        "source": "manual",
        "train_id": "230Z562607",
        "updated_at": "2026-09-07T14:52:17+00:00"
      },
      "3Q07_Chesterfield": {
        "camera": "",
        "expected_time": "17:46",
        "headcode": "3Q07",
        "location": "Chesterfield",
        "locos": [
          "37057 \"Barbara Arbon\"",
          "9701"
        ],
        "source": "manual",
        "train_id": "573Q071U07",
        "updated_at": "2026-09-07T16:55:53+00:00"
      },
      "3Q07_Wingfield": {
        "camera": "",
        "expected_time": "17:33\u00bd",
        "headcode": "3Q07",
        "location": "Wingfield",
        "locos": [
          "37057 \"Barbara Arbon\"",
          "9701"
        ],
        "source": "manual",
        "train_id": "573Q071U07",
        "updated_at": "2026-09-07T16:59:00+00:00"
      },
      "4M11_Wigan": {
        "camera": "",
        "expected_time": "22:17\u00bd",
        "headcode": "4M11",
        "location": "Wigan",
        "locos": [
          "90007 \"507 (Railway) Specialist Team Royal Engineers\"",
          "90011"
        ],
        "source": "manual",
        "train_id": "074M11CW07",
        "updated_at": "2026-09-07T23:10:46+00:00"
      },
      "4M48_Wigan": {
        "camera": "",
        "expected_time": "22:44",
        "headcode": "4M48",
        "location": "Wigan",
        "locos": [
          "88007 \"Electra\"",
          "68034 \"Rail Riders 2020\""
        ],
        "source": "manual",
        "train_id": "074M48CX07",
        "updated_at": "2026-09-07T23:09:41+00:00"
      },
      "4S43_Thankerton": {
        "camera": "",
        "expected_time": "13:21\u00bd",
        "headcode": "4S43",
        "location": "Thankerton",
        "locos": [
          "88007 \"Electra\"",
          "68034 \"Rail Riders 2020\""
        ],
        "source": "manual",
        "train_id": "704S43C607",
        "updated_at": "2026-09-07T14:44:17+00:00"
      },
      "4S49_Beattock": {
        "camera": "",
        "expected_time": "01:44\u00bd",
        "headcode": "4S49",
        "location": "Beattock",
        "locos": [
          "90014 \"Over the Rainbow\"",
          "90039 \"The Chartered Institute of Logistics and Transport\""
        ],
        "source": "manual",
        "train_id": "704S49C706",
        "updated_at": "2026-09-07T03:37:10+00:00"
      },
      "4S50_Beattock": {
        "camera": "",
        "expected_time": "09:09\u00bd",
        "headcode": "4S50",
        "location": "Beattock",
        "locos": [
          "90011",
          "90007 \"507 (Railway) Specialist Team Royal Engineers\""
        ],
        "source": "manual",
        "train_id": "424S50C607",
        "updated_at": "2026-09-07T14:50:11+00:00"
      },
      "4S50_Thankerton": {
        "camera": "",
        "expected_time": "09:37\u00bd",
        "headcode": "4S50",
        "location": "Thankerton",
        "locos": [
          "90011",
          "90007 \"507 (Railway) Specialist Team Royal Engineers\""
        ],
        "source": "manual",
        "train_id": "424S50C607",
        "updated_at": "2026-09-07T14:49:22+00:00"
      },
      "5Z80_Swinton": {
        "camera": "",
        "expected_time": "10:01",
        "headcode": "5Z80",
        "location": "Swinton",
        "locos": [
          "66119",
          "60163 (98863) \"Tornado\"",
          "98863"
        ],
        "source": "manual",
        "train_id": "155Z801507",
        "updated_at": "2026-09-07T14:48:48+00:00"
      },
      "5Z80_York_North": {
        "camera": "",
        "expected_time": "09:08",
        "headcode": "5Z80",
        "location": "York North",
        "locos": [
          "66119",
          "60163 (98863)\"Tornado\"",
          "98863"
        ],
        "source": "manual",
        "train_id": "155Z801507",
        "updated_at": "2026-09-07T14:51:20+00:00"
      },
      "6M09_Chesterfield": {
        "camera": "",
        "expected_time": "04:17",
        "headcode": "6M09",
        "location": "Chesterfield",
        "locos": [
          "70015"
        ],
        "source": "manual",
        "train_id": "346M09C107",
        "updated_at": "2026-09-07T03:39:42+00:00"
      }
    },
    "2026-09-08": {
      "0Z27_Bushbury": {
        "camera": "",
        "expected_time": "15:59\u00bd",
        "headcode": "0Z27",
        "location": "Bushbury",
        "locos": [
          "66314 \"Katie\""
        ],
        "source": "manual",
        "train_id": "360Z271M08",
        "updated_at": "2026-09-08T15:39:28+00:00"
      },
      "0Z57_Camden_Junction": {
        "camera": "",
        "expected_time": "14:06",
        "headcode": "0Z57",
        "location": "Camden Junction",
        "locos": [
          "57605 \"Totnes Castle\""
        ],
        "source": "manual",
        "train_id": "740Z571K08",
        "updated_at": "2026-09-08T14:58:38+00:00"
      },
      "0Z57_Derby": {
        "camera": "",
        "expected_time": "17:58",
        "headcode": "0Z57",
        "location": "Derby",
        "locos": [
          "37512 \"Thornaby Demon\""
        ],
        "source": "manual",
        "train_id": "160Z572S08",
        "updated_at": "2026-09-08T18:02:06+00:00"
      },
      "0Z57_Doncaster": {
        "camera": "",
        "expected_time": "13:24",
        "headcode": "0Z57",
        "location": "Doncaster",
        "locos": [
          "56105",
          "67027"
        ],
        "source": "manual",
        "train_id": "230Z572M08",
        "updated_at": "2026-09-08T15:05:41+00:00"
      },
      "0Z57_Swinton": {
        "camera": "",
        "expected_time": "16:51",
        "headcode": "0Z57",
        "location": "Swinton",
        "locos": [
          "37512 \"Thornaby Demon\""
        ],
        "source": "manual",
        "train_id": "160Z572S08",
        "updated_at": "2026-09-08T18:29:00+00:00"
      },
      "0Z57_Wingfield": {
        "camera": "",
        "expected_time": "17:49",
        "headcode": "0Z57",
        "location": "Wingfield",
        "locos": [
          "37512 \"Thornaby Demon\""
        ],
        "source": "manual",
        "train_id": "160Z572S08",
        "updated_at": "2026-09-08T18:04:56+00:00"
      },
      "0Z58_Camden_Junction": {
        "camera": "",
        "expected_time": "14:26",
        "headcode": "0Z58",
        "location": "Camden Junction",
        "locos": [
          "57605 \"Totnes Castle\""
        ],
        "source": "manual",
        "train_id": "720Z581O08",
        "updated_at": "2026-09-08T14:58:05+00:00"
      },
      "0Z98_Doncaster": {
        "camera": "",
        "expected_time": "07:43\u00bd",
        "headcode": "0Z98",
        "location": "Doncaster",
        "locos": [
          "56049 \"Robin of Templecombe\""
        ],
        "source": "manual",
        "train_id": "230Z982B08",
        "updated_at": "2026-09-08T15:21:58+00:00"
      },
      "0Z98_Swinton": {
        "camera": "",
        "expected_time": "07:58",
        "headcode": "0Z98",
        "location": "Swinton",
        "locos": [
          "56049 \"Robin of Templecombe\""
        ],
        "source": "manual",
        "train_id": "230Z982B08",
        "updated_at": "2026-09-08T15:19:51+00:00"
      },
      "0Z98_Wingfield": {
        "camera": "",
        "expected_time": "09:06",
        "headcode": "0Z98",
        "location": "Wingfield",
        "locos": [
          "56049 \"Robin of Templecombe\""
        ],
        "source": "manual",
        "train_id": "230Z982B08",
        "updated_at": "2026-09-08T15:12:03+00:00"
      },
      "3Q12_Bolton_Le_Sands": {
        "camera": "",
        "expected_time": "03:42",
        "headcode": "3Q12",
        "location": "Bolton Le Sands",
        "locos": [
          "37419 \"Agamemnon\"",
          "37422 \"Pegasus\""
        ],
        "source": "manual",
        "train_id": "573Q12C807",
        "updated_at": "2026-09-08T03:19:58+00:00"
      },
      "4L89_Watford": {
        "camera": "",
        "expected_time": "08:23",
        "headcode": "4L89",
        "location": "Watford",
        "locos": [
          "90008",
          "90047"
        ],
        "source": "manual",
        "train_id": "334L89C308",
        "updated_at": "2026-09-08T15:15:46+00:00"
      },
      "4L96_Watford": {
        "camera": "",
        "expected_time": "21:34",
        "headcode": "4L96",
        "location": "Watford",
        "locos": [
          "90014 \"Over the Rainbow\"",
          "90039 \"The Chartered Institute of Logistics and Transport\""
        ],
        "source": "manual",
        "train_id": "704L96CZ08",
        "updated_at": "2026-09-08T20:33:29+00:00"
      },
      "4M30_Thankerton": {
        "camera": "",
        "expected_time": "21:24\u00bd",
        "headcode": "4M30",
        "location": "Thankerton",
        "locos": [
          "90009",
          "90016"
        ],
        "source": "manual",
        "train_id": "054M30CY08",
        "updated_at": "2026-09-08T20:34:28+00:00"
      },
      "4M48_Beattock": {
        "camera": "",
        "expected_time": "20:03",
        "headcode": "4M48",
        "location": "Beattock",
        "locos": [
          "68005 \"Defiant\"",
          "88007 \"Electra\""
        ],
        "source": "manual",
        "train_id": "074M48CX08",
        "updated_at": "2026-09-08T19:45:03+00:00"
      },
      "4M94_Watford": {
        "camera": "",
        "expected_time": "11:38",
        "headcode": "4M94",
        "location": "Watford",
        "locos": [
          "90009",
          "90016"
        ],
        "source": "manual",
        "train_id": "494M94CB08",
        "updated_at": "2026-09-08T15:08:26+00:00"
      },
      "4S44_Wigan": {
        "camera": "",
        "expected_time": "14:44",
        "headcode": "4S44",
        "location": "Wigan",
        "locos": [
          "88005 \"Minerva\""
        ],
        "source": "manual",
        "train_id": "704S442K08",
        "updated_at": "2026-09-08T15:04:27+00:00"
      },
      "4S88_Beattock": {
        "camera": "",
        "expected_time": "04:39",
        "headcode": "4S88",
        "location": "Beattock",
        "locos": [
          "90010 \"275 Railway Squadron (Volunteers)\"",
          "90042"
        ],
        "source": "manual",
        "train_id": "494S88CP07",
        "updated_at": "2026-09-08T04:32:06+00:00"
      },
      "4S88_Thankerton": {
        "camera": "",
        "expected_time": "05:13",
        "headcode": "4S88",
        "location": "Thankerton",
        "locos": [
          "90010 \"275 Railway Squadron (Volunteers)\"",
          "90042"
        ],
        "source": "manual",
        "train_id": "494S88CP07",
        "updated_at": "2026-09-08T04:29:10+00:00"
      },
      "4S88_Watford": {
        "camera": "",
        "expected_time": "20:27",
        "headcode": "4S88",
        "location": "Watford",
        "locos": [
          "90008",
          "90047"
        ],
        "source": "manual",
        "train_id": "494S88CP08",
        "updated_at": "2026-09-08T19:43:20+00:00"
      },
      "6A26_Watford": {
        "camera": "",
        "expected_time": "01:48\u00bd",
        "headcode": "6A26",
        "location": "Watford",
        "locos": [
          "60055 \"Thomas Barnardo\""
        ],
        "source": "manual",
        "train_id": "406A261Y07",
        "updated_at": "2026-09-08T02:16:32+00:00"
      },
      "6D23_Watford": {
        "camera": "",
        "expected_time": "17:40\u00bd",
        "headcode": "6D23",
        "location": "Watford",
        "locos": [
          "60055 \"Thomas Barnardo\""
        ],
        "source": "manual",
        "train_id": "726D231U08",
        "updated_at": "2026-09-08T18:05:03+00:00"
      },
      "6H70_York_North": {
        "camera": "",
        "expected_time": "14:50",
        "headcode": "6H70",
        "location": "York North",
        "locos": [
          "66316"
        ],
        "source": "manual",
        "train_id": "136H70CK08",
        "updated_at": "2026-09-08T14:57:16+00:00"
      }
    },
    "2026-09-09": {
      "0Z43_Derby": {
        "camera": "",
        "expected_time": "20:02",
        "headcode": "0Z43",
        "location": "Derby",
        "locos": [
          "43272",
          "43251"
        ],
        "source": "manual",
        "train_id": "570Z431P09",
        "updated_at": "2026-09-09T19:49:10+00:00"
      },
      "0Z43_Wingfield": {
        "camera": "",
        "expected_time": "19:52\u00bd",
        "headcode": "0Z43",
        "location": "Wingfield",
        "locos": [
          "43272",
          "43251"
        ],
        "source": "manual",
        "train_id": "570Z431P09",
        "updated_at": "2026-09-09T19:49:56+00:00"
      },
      "0Z66_Banbury": {
        "camera": "",
        "expected_time": "17:20",
        "headcode": "0Z66",
        "location": "Banbury",
        "locos": [
          "68031"
        ],
        "source": "manual",
        "train_id": "",
        "updated_at": "2026-09-09T16:49:23+00:00"
      },
      "0Z77_Swinton": {
        "camera": "",
        "expected_time": "15:46\u00bd",
        "headcode": "0Z77",
        "location": "Swinton",
        "locos": [
          "66106"
        ],
        "source": "manual",
        "train_id": "230Z771Q09",
        "updated_at": "2026-09-09T15:30:47+00:00"
      },
      "1Q26_Beattock": {
        "camera": "",
        "expected_time": "08:34\u00bd",
        "headcode": "1Q26",
        "location": "Beattock",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "041Q26C609",
        "updated_at": "2026-09-09T12:06:07+00:00"
      },
      "1Q26_Bolton_Le_Sands": {
        "camera": "",
        "expected_time": "10:05\u00bd",
        "headcode": "1Q26",
        "location": "Bolton Le Sands",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "041Q26C609",
        "updated_at": "2026-09-09T12:01:43+00:00"
      },
      "1Q26_Thankerton": {
        "camera": "",
        "expected_time": "07:58",
        "headcode": "1Q26",
        "location": "Thankerton",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "041Q26C609",
        "updated_at": "2026-09-09T12:06:45+00:00"
      },
      "1Q26_Wigan": {
        "camera": "",
        "expected_time": "10:53",
        "headcode": "1Q26",
        "location": "Wigan",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "041Q26C609",
        "updated_at": "2026-09-09T15:40:30+00:00"
      },
      "1S26_Camden_Junction": {
        "camera": "",
        "expected_time": "23:53",
        "headcode": "1S26",
        "location": "Camden Junction",
        "locos": [
          "92028"
        ],
        "source": "manual",
        "train_id": "721S26M909",
        "updated_at": "2026-09-10T06:02:36+00:00"
      },
      "3Q16_Thankerton": {
        "camera": "",
        "expected_time": "03:16\u00bd",
        "headcode": "3Q16",
        "location": "Thankerton",
        "locos": [
          "37419",
          "37422"
        ],
        "source": "manual",
        "train_id": "093Q16C009",
        "updated_at": "2026-09-09T19:53:54+00:00"
      },
      "3Z09_Swinton": {
        "camera": "",
        "expected_time": "23:16\u00bd",
        "headcode": "3Z09",
        "location": "Swinton",
        "locos": [
          "37057 \"Barbara Arbon\"",
          "9701"
        ],
        "source": "manual",
        "train_id": "123Z091X09",
        "updated_at": "2026-09-10T06:05:50+00:00"
      },
      "3Z09_York_North": {
        "camera": "",
        "expected_time": "21:13\u00bd",
        "headcode": "3Z09",
        "location": "York North",
        "locos": [
          "37057 \"Barbara Arbon\"",
          "9701"
        ],
        "source": "manual",
        "train_id": "123Z091X09",
        "updated_at": "2026-09-09T20:19:16+00:00"
      },
      "4L67_Watford": {
        "camera": "",
        "expected_time": "15:06",
        "headcode": "4L67",
        "location": "Watford",
        "locos": [
          "90006 \"Modern Railways Magazine / Roger Ford\"",
          "90018 \"The Greatest Gathering\""
        ],
        "source": "manual",
        "train_id": "334L67CF09",
        "updated_at": "2026-09-09T15:31:18+00:00"
      },
      "5Z46_Dawlish": {
        "camera": "",
        "expected_time": "15:05\u00bd",
        "headcode": "5Z46",
        "location": "Dawlish",
        "locos": [
          "175011"
        ],
        "source": "manual",
        "train_id": "835Z461P09",
        "updated_at": "2026-09-09T15:32:03+00:00"
      },
      "6V95_Newbury": {
        "camera": "",
        "expected_time": "12:53",
        "headcode": "6V95",
        "location": "Newbury",
        "locos": [
          "60026 \"HELVELLYN\""
        ],
        "source": "manual",
        "train_id": "726V95CG09",
        "updated_at": "2026-09-09T13:41:02+00:00"
      },
      "6Z37_Keighley": {
        "camera": "",
        "expected_time": "13:43\u00bd",
        "headcode": "6Z37",
        "location": "Keighley",
        "locos": [
          "66780 \"The Cemex Express\""
        ],
        "source": "manual",
        "train_id": "096Z371L09",
        "updated_at": "2026-09-09T13:40:43+00:00"
      }
    },
    "2026-09-10": {
      "0Z25_Chesterfield": {
        "camera": "",
        "expected_time": "09:47\u00bd",
        "headcode": "0Z25",
        "location": "Chesterfield",
        "locos": [
          "66551"
        ],
        "source": "manual",
        "train_id": "560Z252E10",
        "updated_at": "2026-09-10T12:11:14+00:00"
      },
      "0Z74_Basingstoke": {
        "camera": "",
        "expected_time": "15:17\u00bd",
        "headcode": "0Z74",
        "location": "Basingstoke",
        "locos": [
          "73201 \"Broadlands\"",
          "73202",
          "73119 \"Paul Taylor\""
        ],
        "source": "manual",
        "train_id": "860Z741P10",
        "updated_at": "2026-09-10T15:56:39+00:00"
      },
      "1A50_Dawlish": {
        "camera": "",
        "expected_time": "01:35",
        "headcode": "1A50",
        "location": "Dawlish",
        "locos": [
          "57301 \"Goliath\"",
          "57605 \"Totnes Castle\""
        ],
        "source": "manual",
        "train_id": "851A50M709",
        "updated_at": "2026-09-10T06:20:26+00:00"
      },
      "1Q23_Bushbury": {
        "camera": "",
        "expected_time": "10:13\u00bd",
        "headcode": "1Q23",
        "location": "Bushbury",
        "locos": [
          "43013 \"Mark Carne CBE\"",
          "43014"
        ],
        "source": "manual",
        "train_id": "321Q23CE10",
        "updated_at": "2026-09-10T12:08:56+00:00"
      },
      "1Q25_Bushbury": {
        "camera": "",
        "expected_time": "15:04",
        "headcode": "1Q25",
        "location": "Bushbury",
        "locos": [
          "43014",
          "43013 \"Mark Carne CBE\""
        ],
        "source": "manual",
        "train_id": "701Q25CN10",
        "updated_at": "2026-09-10T16:03:30+00:00"
      },
      "1Z46_Preston": {
        "camera": "",
        "expected_time": "17:34",
        "headcode": "1Z46",
        "location": "Preston",
        "locos": [
          "37706",
          "47813"
        ],
        "source": "manual",
        "train_id": "091Z461P10",
        "updated_at": "2026-09-10T16:39:37+00:00"
      },
      "1Z61_Dawlish": {
        "camera": "",
        "expected_time": "13:16\u00bd",
        "headcode": "1Z61",
        "location": "Dawlish",
        "locos": [
          "43058 \"Loch Eil\"",
          "43059 \"Loch Shiel\""
        ],
        "source": "manual",
        "train_id": "231Z611510",
        "updated_at": "2026-09-10T12:52:58+00:00"
      },
      "3Q89_Banbury": {
        "camera": "",
        "expected_time": "11:13",
        "headcode": "3Q89",
        "location": "Banbury",
        "locos": [
          "68032"
        ],
        "source": "manual",
        "train_id": "693Q89MI10",
        "updated_at": "2026-09-10T12:07:08+00:00"
      },
      "4M11_Wigan": {
        "camera": "",
        "expected_time": "22:17\u00bd",
        "headcode": "4M11",
        "location": "Wigan",
        "locos": [
          "90013",
          "90040"
        ],
        "source": "manual",
        "train_id": "074M11CW10",
        "updated_at": "2026-09-11T06:30:10+00:00"
      },
      "4M30_Thankerton": {
        "camera": "",
        "expected_time": "21:24\u00bd",
        "headcode": "4M30",
        "location": "Thankerton",
        "locos": [
          "90014 \"Over the Rainbow\"",
          "90039 \"The Chartered Institute of Logistics and Transport\""
        ],
        "source": "manual",
        "train_id": "054M30CY10",
        "updated_at": "2026-09-10T20:44:03+00:00"
      },
      "4M48_Beattock": {
        "camera": "",
        "expected_time": "20:03",
        "headcode": "4M48",
        "location": "Beattock",
        "locos": [
          "88007 \"Electra\"",
          "68005 \"Defiant\""
        ],
        "source": "manual",
        "train_id": "074M48CX10",
        "updated_at": "2026-09-10T19:05:19+00:00"
      },
      "4M63_Watford": {
        "camera": "",
        "expected_time": "13:04",
        "headcode": "4M63",
        "location": "Watford",
        "locos": [
          "90047",
          "90049"
        ],
        "source": "manual",
        "train_id": "494M63CE10",
        "updated_at": "2026-09-10T12:12:32+00:00"
      },
      "4S47_Wigan": {
        "camera": "",
        "expected_time": "21:33\u00bd",
        "headcode": "4S47",
        "location": "Wigan",
        "locos": [
          "90005",
          "90048"
        ],
        "source": "manual",
        "train_id": "704S47CY10",
        "updated_at": "2026-09-10T20:44:14+00:00"
      },
      "4S60_Barking": {
        "camera": "",
        "expected_time": "23:21\u00bd",
        "headcode": "4S60",
        "location": "Barking",
        "locos": [
          "66597 \"Viridor\""
        ],
        "source": "manual",
        "train_id": "514S60C810",
        "updated_at": "2026-09-11T06:29:09+00:00"
      },
      "4S60_Beattock": {
        "camera": "",
        "expected_time": "09:09",
        "headcode": "4S60",
        "location": "Beattock",
        "locos": [
          "90021 \"Donald Malcolm\"",
          "90045"
        ],
        "source": "manual",
        "train_id": "514S60C809",
        "updated_at": "2026-09-10T08:33:51+00:00"
      },
      "4S60_Thankerton": {
        "camera": "",
        "expected_time": "09:37",
        "headcode": "4S60",
        "location": "Thankerton",
        "locos": [
          "90021 \"Donald Malcolm\"",
          "90045"
        ],
        "source": "manual",
        "train_id": "514S60C809",
        "updated_at": "2026-09-10T08:34:01+00:00"
      },
      "4V44_Bredon": {
        "camera": "",
        "expected_time": "12:56\u00bd",
        "headcode": "4V44",
        "location": "Bredon",
        "locos": [
          "68006 \"Pride of the North\""
        ],
        "source": "manual",
        "train_id": "704V44CH10",
        "updated_at": "2026-09-10T12:13:32+00:00"
      },
      "4V44_Severn_Tunnel": {
        "camera": "",
        "expected_time": "13:58\u00bd",
        "headcode": "4V44",
        "location": "Severn Tunnel",
        "locos": [
          "68006 \"Pride of the North\""
        ],
        "source": "manual",
        "train_id": "704V44CH10",
        "updated_at": "2026-09-10T13:19:38+00:00"
      },
      "5Q23_Chesterfield": {
        "camera": "",
        "expected_time": "18:36",
        "headcode": "5Q23",
        "location": "Chesterfield",
        "locos": [
          "165005",
          "165021"
        ],
        "source": "manual",
        "train_id": "695Q231S10",
        "updated_at": "2026-09-10T17:50:45+00:00"
      },
      "5Q23_Swinton": {
        "camera": "",
        "expected_time": "19:09",
        "headcode": "5Q23",
        "location": "Swinton",
        "locos": [
          "165005",
          "165021"
        ],
        "source": "manual",
        "train_id": "695Q231S10",
        "updated_at": "2026-09-10T18:09:02+00:00"
      },
      "5Q63_York_North": {
        "camera": "",
        "expected_time": "06:16\u00bd",
        "headcode": "5Q63",
        "location": "York North",
        "locos": [
          "810xxx"
        ],
        "source": "manual",
        "train_id": "165Q631610",
        "updated_at": "2026-09-10T06:08:28+00:00"
      },
      "5Q65_Chesterfield": {
        "camera": "",
        "expected_time": "11:32",
        "headcode": "5Q65",
        "location": "Chesterfield",
        "locos": [
          "37512 \"Thornaby Demon\"",
          "730003",
          "730011"
        ],
        "source": "manual",
        "train_id": "165Q651H10",
        "updated_at": "2026-09-10T12:04:53+00:00"
      },
      "5Q65_Wingfield": {
        "camera": "",
        "expected_time": "11:46\u00bd",
        "headcode": "5Q65",
        "location": "Wingfield",
        "locos": [
          "37512 \"Thornaby Demon\"",
          "730003",
          "730011"
        ],
        "source": "manual",
        "train_id": "165Q651H10",
        "updated_at": "2026-09-10T11:52:16+00:00"
      },
      "5Q69_Chesterfield": {
        "camera": "",
        "expected_time": "12:18\u00bd",
        "headcode": "5Q69",
        "location": "Chesterfield",
        "locos": [
          "165012"
        ],
        "source": "manual",
        "train_id": "235Q691I10",
        "updated_at": "2026-09-10T11:49:27+00:00"
      },
      "5Q69_Derby": {
        "camera": "",
        "expected_time": "12:41\u00bd",
        "headcode": "5Q69",
        "location": "Derby",
        "locos": [
          "165012"
        ],
        "source": "manual",
        "train_id": "235Q691I10",
        "updated_at": "2026-09-10T11:48:06+00:00"
      },
      "5Q69_Wingfield": {
        "camera": "",
        "expected_time": "12:30\u00bd",
        "headcode": "5Q69",
        "location": "Wingfield",
        "locos": [
          "165012"
        ],
        "source": "manual",
        "train_id": "235Q691I10",
        "updated_at": "2026-09-10T11:48:24+00:00"
      },
      "5Z22_Dawlish": {
        "camera": "",
        "expected_time": "08:22",
        "headcode": "5Z22",
        "location": "Dawlish",
        "locos": [
          "175112"
        ],
        "source": "manual",
        "train_id": "835Z221B10",
        "updated_at": "2026-09-10T07:43:53+00:00"
      },
      "6D23_Watford": {
        "camera": "",
        "expected_time": "18:05\u00bd",
        "headcode": "6D23",
        "location": "Watford",
        "locos": [
          "60055 \"Thomas Barnardo\""
        ],
        "source": "manual",
        "train_id": "726D231V10",
        "updated_at": "2026-09-10T17:51:43+00:00"
      },
      "6E03_Swinton": {
        "camera": "",
        "expected_time": "14:56\u00bd",
        "headcode": "6E03",
        "location": "Swinton",
        "locos": [
          "70008",
          "66420",
          "70006"
        ],
        "source": "manual",
        "train_id": "346E03CN10",
        "updated_at": "2026-09-10T20:07:24+00:00"
      },
      "6H55_York_North": {
        "camera": "",
        "expected_time": "19:41",
        "headcode": "6H55",
        "location": "York North",
        "locos": [
          "66730 \"Whitemoor\""
        ],
        "source": "manual",
        "train_id": "136H55CU10",
        "updated_at": "2026-09-10T19:05:48+00:00"
      }
    },
    "2026-09-11": {
      "0M58_Chesterfield": {
        "camera": "",
        "expected_time": "14:37\u00bd",
        "headcode": "0M58",
        "location": "Chesterfield",
        "locos": [
          "37884 \"Cepheus\""
        ],
        "source": "manual",
        "train_id": "160M581M11",
        "updated_at": "2026-09-11T14:54:57+00:00"
      },
      "0Z43_Watford": {
        "camera": "",
        "expected_time": "13:40",
        "headcode": "0Z43",
        "location": "Watford",
        "locos": [
          "50007 \"Hercules\"",
          "50049 \"Defiance\""
        ],
        "source": "manual",
        "train_id": "650Z431D11",
        "updated_at": "2026-09-11T13:09:18+00:00"
      },
      "0Z69_Sheffield_South": {
        "camera": "",
        "expected_time": "08:40",
        "headcode": "0Z69",
        "location": "Sheffield South",
        "locos": [
          "68028",
          "37501 \"Teesside Steelmaster\""
        ],
        "source": "manual",
        "train_id": "590Z691611",
        "updated_at": "2026-09-11T09:04:47+00:00"
      },
      "3Z31_Dawlish": {
        "camera": "",
        "expected_time": "14:33",
        "headcode": "3Z31",
        "location": "Dawlish",
        "locos": [
          "43050 \"Loch Morar\"",
          "43059 \"Loch Shiel\""
        ],
        "source": "manual",
        "train_id": "423Z311D11",
        "updated_at": "2026-09-11T14:53:37+00:00"
      },
      "4S88_Beattock": {
        "camera": "",
        "expected_time": "04:39",
        "headcode": "4S88",
        "location": "Beattock",
        "locos": [
          "90010 \"275 Railway Squadron (Volunteers)\"",
          "90042"
        ],
        "source": "manual",
        "train_id": "494S88CP10",
        "updated_at": "2026-09-11T06:35:41+00:00"
      },
      "4S88_Thankerton": {
        "camera": "",
        "expected_time": "05:13",
        "headcode": "4S88",
        "location": "Thankerton",
        "locos": [
          "90010 \"275 Railway Squadron (Volunteers)\"",
          "90042"
        ],
        "source": "manual",
        "train_id": "494S88CP10",
        "updated_at": "2026-09-11T06:35:19+00:00"
      },
      "6Q65_Basingstoke": {
        "camera": "",
        "expected_time": "14:32",
        "headcode": "6Q65",
        "location": "Basingstoke",
        "locos": [
          "66xxx"
        ],
        "source": "manual",
        "train_id": "706Q652H11",
        "updated_at": "2026-09-11T14:53:22+00:00"
      }
    }
  },
  "version": 1
}
