{
  "slug": "europe-airport-security-2026-10",
  "title": "European airport security queues, October 2026",
  "window": {
    "from": "2026-10-01",
    "to": "2026-10-20",
    "basis": "local dates at each airport"
  },
  "pulled_at": "2026-10-21 07:44:24.129101+00",
  "rules": {
    "min_days_for_an_hour": 10,
    "daytime_hours": [
      6,
      21
    ],
    "mean": "the mean of every reading in the group: sum of (hourly mean x readings) / readings, over the airport's main departure security checkpoints"
  },
  "summary": {
    "airports": 24,
    "airports_publishing_minutes": 16,
    "airports_publishing_bands": 8,
    "checkpoints_main": 58,
    "checkpoints_shown_separately": 7,
    "readings_main": 159241,
    "airports_all_20_days": 17,
    "peak_rank_minutes": [
      {
        "code": "CPH",
        "hour": 18,
        "mean_wait": 13.34,
        "days": 20,
        "readings": 1074
      },
      {
        "code": "BER",
        "hour": 11,
        "mean_wait": 12.13,
        "days": 20,
        "readings": 463
      },
      {
        "code": "DUB",
        "hour": 8,
        "mean_wait": 11.05,
        "days": 12,
        "readings": 144
      },
      {
        "code": "AMS",
        "hour": 19,
        "mean_wait": 10.55,
        "days": 15,
        "readings": 716
      },
      {
        "code": "SVG",
        "hour": 8,
        "mean_wait": 10.35,
        "days": 20,
        "readings": 120
      },
      {
        "code": "DUS",
        "hour": 9,
        "mean_wait": 10.19,
        "days": 20,
        "readings": 360
      },
      {
        "code": "STN",
        "hour": 4,
        "mean_wait": 9.53,
        "days": 20,
        "readings": 120
      },
      {
        "code": "BGO",
        "hour": 16,
        "mean_wait": 8.98,
        "days": 20,
        "readings": 115
      },
      {
        "code": "ZRH",
        "hour": 11,
        "mean_wait": 8.59,
        "days": 20,
        "readings": 120
      },
      {
        "code": "EDI",
        "hour": 15,
        "mean_wait": 8.01,
        "days": 20,
        "readings": 116
      },
      {
        "code": "EMA",
        "hour": 5,
        "mean_wait": 7.76,
        "days": 18,
        "readings": 108
      },
      {
        "code": "MAN",
        "hour": 5,
        "mean_wait": 7.58,
        "days": 20,
        "readings": 360
      },
      {
        "code": "HEL",
        "hour": 6,
        "mean_wait": 6.63,
        "days": 20,
        "readings": 40
      },
      {
        "code": "MUC",
        "hour": 3,
        "mean_wait": 5.92,
        "days": 18,
        "readings": 51
      },
      {
        "code": "OSL",
        "hour": 7,
        "mean_wait": 4.73,
        "days": 20,
        "readings": 356
      },
      {
        "code": "IST",
        "hour": 12,
        "mean_wait": 3.53,
        "days": 20,
        "readings": 240
      }
    ]
  },
  "airports": [
    {
      "code": "AMS",
      "name": "Amsterdam Schiphol",
      "city": "Amsterdam",
      "country": "Netherlands",
      "publishes": "minutes",
      "how_published": "Wait per security filter in seconds, from Schiphol's website feed",
      "published_by": "schiphol.nl",
      "days_with_data": 18,
      "hours_with_data": 348,
      "readings": 11780,
      "mean_wait": 5.87,
      "max_wait": 34,
      "hours_mean_15_plus": 4,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 19,
        "days": 15,
        "readings": 716,
        "mean_wait": 10.55,
        "max_wait": 33
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 15,
        "readings": 591,
        "mean_wait": 2.68,
        "max_wait": 12
      },
      "busiest_weekday": {
        "iso_dow": 5,
        "day": "Friday",
        "days": 3,
        "hours": 55,
        "readings": 1326,
        "mean_wait": 6.73,
        "max_wait": 33
      },
      "quietest_weekday": {
        "iso_dow": 4,
        "day": "Thursday",
        "days": 3,
        "hours": 68,
        "readings": 2162,
        "mean_wait": 4.86,
        "max_wait": 24
      },
      "worst_hour": {
        "local_hour": "2026-10-13 19:00:00",
        "mean_wait": 19.1,
        "readings": 20,
        "checkpoints": 4,
        "max_wait": 33
      },
      "missing_dates": [
        "2026-10-03",
        "2026-10-11"
      ],
      "thin_dates": [
        "2026-10-02",
        "2026-10-12",
        "2026-10-18"
      ],
      "by_hour": [
        {
          "hour": 0,
          "days": 15,
          "readings": 442,
          "mean_wait": 1.45,
          "max_wait": 8
        },
        {
          "hour": 1,
          "days": 16,
          "readings": 434,
          "mean_wait": 1.02,
          "max_wait": 2
        },
        {
          "hour": 2,
          "days": 15,
          "readings": 388,
          "mean_wait": 1.4,
          "max_wait": 14
        },
        {
          "hour": 3,
          "days": 14,
          "readings": 380,
          "mean_wait": 2.81,
          "max_wait": 12
        },
        {
          "hour": 4,
          "days": 14,
          "readings": 385,
          "mean_wait": 4.03,
          "max_wait": 18
        },
        {
          "hour": 5,
          "days": 14,
          "readings": 376,
          "mean_wait": 5.62,
          "max_wait": 18
        },
        {
          "hour": 6,
          "days": 15,
          "readings": 505,
          "mean_wait": 5.05,
          "max_wait": 19
        },
        {
          "hour": 7,
          "days": 16,
          "readings": 491,
          "mean_wait": 5.1,
          "max_wait": 16
        },
        {
          "hour": 8,
          "days": 14,
          "readings": 532,
          "mean_wait": 9.18,
          "max_wait": 29
        },
        {
          "hour": 9,
          "days": 14,
          "readings": 515,
          "mean_wait": 8.9,
          "max_wait": 33
        },
        {
          "hour": 10,
          "days": 14,
          "readings": 548,
          "mean_wait": 8.62,
          "max_wait": 23
        },
        {
          "hour": 11,
          "days": 15,
          "readings": 551,
          "mean_wait": 7.4,
          "max_wait": 21
        },
        {
          "hour": 12,
          "days": 14,
          "readings": 508,
          "mean_wait": 8.18,
          "max_wait": 26
        },
        {
          "hour": 13,
          "days": 12,
          "readings": 440,
          "mean_wait": 6.54,
          "max_wait": 31
        },
        {
          "hour": 14,
          "days": 14,
          "readings": 542,
          "mean_wait": 6.07,
          "max_wait": 24
        },
        {
          "hour": 15,
          "days": 14,
          "readings": 538,
          "mean_wait": 6.1,
          "max_wait": 17
        },
        {
          "hour": 16,
          "days": 14,
          "readings": 506,
          "mean_wait": 6.04,
          "max_wait": 23
        },
        {
          "hour": 17,
          "days": 14,
          "readings": 660,
          "mean_wait": 7.12,
          "max_wait": 22
        },
        {
          "hour": 18,
          "days": 15,
          "readings": 592,
          "mean_wait": 7.58,
          "max_wait": 29
        },
        {
          "hour": 19,
          "days": 15,
          "readings": 716,
          "mean_wait": 10.55,
          "max_wait": 33
        },
        {
          "hour": 20,
          "days": 15,
          "readings": 566,
          "mean_wait": 6.21,
          "max_wait": 34
        },
        {
          "hour": 21,
          "days": 15,
          "readings": 591,
          "mean_wait": 2.68,
          "max_wait": 12
        },
        {
          "hour": 22,
          "days": 15,
          "readings": 418,
          "mean_wait": 1.66,
          "max_wait": 7
        },
        {
          "hour": 23,
          "days": 15,
          "readings": 156,
          "mean_wait": 1.61,
          "max_wait": 7
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 47,
          "readings": 1790,
          "mean_wait": 6.6,
          "max_wait": 28
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 65,
          "readings": 2279,
          "mean_wait": 5.41,
          "max_wait": 33
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 47,
          "readings": 1854,
          "mean_wait": 5.87,
          "max_wait": 31
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 68,
          "readings": 2162,
          "mean_wait": 4.86,
          "max_wait": 24
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 55,
          "readings": 1326,
          "mean_wait": 6.73,
          "max_wait": 33
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 2,
          "hours": 43,
          "readings": 1544,
          "mean_wait": 6.67,
          "max_wait": 34
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 2,
          "hours": 23,
          "readings": 825,
          "mean_wait": 5.3,
          "max_wait": 18
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 23,
          "readings": 845,
          "mean_wait": 5.11,
          "max_wait": 20
        },
        {
          "date": "2026-10-02",
          "hours": 8,
          "readings": 160,
          "mean_wait": 3.16,
          "max_wait": 9
        },
        {
          "date": "2026-10-04",
          "hours": 18,
          "readings": 697,
          "mean_wait": 5.86,
          "max_wait": 18
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 841,
          "mean_wait": 6,
          "max_wait": 27
        },
        {
          "date": "2026-10-06",
          "hours": 23,
          "readings": 679,
          "mean_wait": 5.27,
          "max_wait": 29
        },
        {
          "date": "2026-10-07",
          "hours": 23,
          "readings": 784,
          "mean_wait": 4.67,
          "max_wait": 16
        },
        {
          "date": "2026-10-08",
          "hours": 23,
          "readings": 830,
          "mean_wait": 4.9,
          "max_wait": 15
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 703,
          "mean_wait": 6.12,
          "max_wait": 23
        },
        {
          "date": "2026-10-10",
          "hours": 19,
          "readings": 580,
          "mean_wait": 6.12,
          "max_wait": 24
        },
        {
          "date": "2026-10-12",
          "hours": 5,
          "readings": 170,
          "mean_wait": 6.23,
          "max_wait": 28
        },
        {
          "date": "2026-10-13",
          "hours": 18,
          "readings": 612,
          "mean_wait": 5.46,
          "max_wait": 33
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 1070,
          "mean_wait": 6.76,
          "max_wait": 31
        },
        {
          "date": "2026-10-15",
          "hours": 22,
          "readings": 487,
          "mean_wait": 4.34,
          "max_wait": 24
        },
        {
          "date": "2026-10-16",
          "hours": 23,
          "readings": 463,
          "mean_wait": 8.89,
          "max_wait": 33
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 964,
          "mean_wait": 7,
          "max_wait": 34
        },
        {
          "date": "2026-10-18",
          "hours": 5,
          "readings": 128,
          "mean_wait": 2.25,
          "max_wait": 12
        },
        {
          "date": "2026-10-19",
          "hours": 18,
          "readings": 779,
          "mean_wait": 7.34,
          "max_wait": 24
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 988,
          "mean_wait": 5.46,
          "max_wait": 24
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Departure Hall 1, filter VF1",
          "role": "main",
          "hours": 337,
          "days": 18,
          "readings": 3224,
          "mean_wait": 7.78,
          "max_wait": 34,
          "hours_mean_15_plus": 28,
          "hours_mean_30_plus": 1,
          "busiest_hour": 8,
          "busiest_hour_mean": 13.72,
          "busiest_hour_days": 14
        },
        {
          "name": "Departure Hall 1, filter VF1a",
          "role": "main",
          "hours": 193,
          "days": 17,
          "readings": 1061,
          "mean_wait": 9.72,
          "max_wait": 34,
          "hours_mean_15_plus": 17,
          "hours_mean_30_plus": 2,
          "busiest_hour": 19,
          "busiest_hour_mean": 13.07,
          "busiest_hour_days": 15
        },
        {
          "name": "Departure Hall 1, filter VF2",
          "role": "main",
          "hours": 147,
          "days": 18,
          "readings": 1195,
          "mean_wait": 1.98,
          "max_wait": 17,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 5,
          "busiest_hour_mean": 3.18,
          "busiest_hour_days": 11
        },
        {
          "name": "Departure Hall 2, filter VF1",
          "role": "main",
          "hours": 18,
          "days": 6,
          "readings": 67,
          "mean_wait": 9.39,
          "max_wait": 20,
          "hours_mean_15_plus": 3,
          "hours_mean_30_plus": 0,
          "busiest_hour": null,
          "busiest_hour_mean": null,
          "busiest_hour_days": null
        },
        {
          "name": "Departure Hall 2, filter VF2",
          "role": "main",
          "hours": 240,
          "days": 18,
          "readings": 2195,
          "mean_wait": 3.46,
          "max_wait": 32,
          "hours_mean_15_plus": 1,
          "hours_mean_30_plus": 0,
          "busiest_hour": 19,
          "busiest_hour_mean": 6.29,
          "busiest_hour_days": 15
        },
        {
          "name": "Departure Hall 3, filter VF3",
          "role": "main",
          "hours": 314,
          "days": 18,
          "readings": 2891,
          "mean_wait": 6.38,
          "max_wait": 31,
          "hours_mean_15_plus": 16,
          "hours_mean_30_plus": 0,
          "busiest_hour": 19,
          "busiest_hour_mean": 12.82,
          "busiest_hour_days": 15
        },
        {
          "name": "Departure Hall 3, filter VF4",
          "role": "main",
          "hours": 199,
          "days": 17,
          "readings": 1147,
          "mean_wait": 4.09,
          "max_wait": 18,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 19,
          "busiest_hour_mean": 5.13,
          "busiest_hour_days": 12
        }
      ]
    },
    {
      "code": "ARN",
      "name": "Stockholm Arlanda",
      "city": "Stockholm",
      "country": "Sweden",
      "publishes": "bands",
      "how_published": "Ranges such as 5-10 minutes, from Swedavia; we store the top of the range",
      "published_by": "swedavia.com",
      "days_with_data": 17,
      "hours_with_data": 339,
      "readings": 3947,
      "mean_wait": 7.89,
      "max_wait": 25,
      "hours_mean_15_plus": 0,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 16,
        "days": 14,
        "readings": 164,
        "mean_wait": 8.81,
        "max_wait": 20
      },
      "quietest_daytime_hour": {
        "hour": 20,
        "days": 14,
        "readings": 168,
        "mean_wait": 7.68,
        "max_wait": 10
      },
      "busiest_weekday": {
        "iso_dow": 7,
        "day": "Sunday",
        "days": 2,
        "hours": 23,
        "readings": 266,
        "mean_wait": 9.53,
        "max_wait": 10
      },
      "quietest_weekday": {
        "iso_dow": 3,
        "day": "Wednesday",
        "days": 2,
        "hours": 47,
        "readings": 546,
        "mean_wait": 7.63,
        "max_wait": 15
      },
      "worst_hour": {
        "local_hour": "2026-10-20 16:00:00",
        "mean_wait": 11.25,
        "readings": 12,
        "checkpoints": 2,
        "max_wait": 20
      },
      "missing_dates": [
        "2026-10-03",
        "2026-10-11",
        "2026-10-12"
      ],
      "thin_dates": [
        "2026-10-02",
        "2026-10-13",
        "2026-10-18"
      ],
      "by_hour": [
        {
          "hour": 0,
          "days": 15,
          "readings": 170,
          "mean_wait": 7.68,
          "max_wait": 10
        },
        {
          "hour": 1,
          "days": 15,
          "readings": 166,
          "mean_wait": 7.68,
          "max_wait": 10
        },
        {
          "hour": 2,
          "days": 14,
          "readings": 162,
          "mean_wait": 7.69,
          "max_wait": 10
        },
        {
          "hour": 3,
          "days": 13,
          "readings": 156,
          "mean_wait": 7.72,
          "max_wait": 15
        },
        {
          "hour": 4,
          "days": 13,
          "readings": 152,
          "mean_wait": 7.73,
          "max_wait": 10
        },
        {
          "hour": 5,
          "days": 14,
          "readings": 158,
          "mean_wait": 7.85,
          "max_wait": 10
        },
        {
          "hour": 6,
          "days": 14,
          "readings": 166,
          "mean_wait": 8.01,
          "max_wait": 10
        },
        {
          "hour": 7,
          "days": 15,
          "readings": 160,
          "mean_wait": 7.97,
          "max_wait": 10
        },
        {
          "hour": 8,
          "days": 14,
          "readings": 168,
          "mean_wait": 7.77,
          "max_wait": 10
        },
        {
          "hour": 9,
          "days": 15,
          "readings": 180,
          "mean_wait": 7.92,
          "max_wait": 10
        },
        {
          "hour": 10,
          "days": 15,
          "readings": 178,
          "mean_wait": 8.26,
          "max_wait": 15
        },
        {
          "hour": 11,
          "days": 15,
          "readings": 168,
          "mean_wait": 8.04,
          "max_wait": 20
        },
        {
          "hour": 12,
          "days": 13,
          "readings": 156,
          "mean_wait": 8.01,
          "max_wait": 15
        },
        {
          "hour": 13,
          "days": 13,
          "readings": 156,
          "mean_wait": 7.98,
          "max_wait": 15
        },
        {
          "hour": 14,
          "days": 14,
          "readings": 164,
          "mean_wait": 7.83,
          "max_wait": 10
        },
        {
          "hour": 15,
          "days": 14,
          "readings": 162,
          "mean_wait": 8.05,
          "max_wait": 25
        },
        {
          "hour": 16,
          "days": 14,
          "readings": 164,
          "mean_wait": 8.81,
          "max_wait": 20
        },
        {
          "hour": 17,
          "days": 14,
          "readings": 164,
          "mean_wait": 8.05,
          "max_wait": 15
        },
        {
          "hour": 18,
          "days": 14,
          "readings": 159,
          "mean_wait": 7.83,
          "max_wait": 20
        },
        {
          "hour": 19,
          "days": 14,
          "readings": 162,
          "mean_wait": 7.69,
          "max_wait": 10
        },
        {
          "hour": 20,
          "days": 14,
          "readings": 168,
          "mean_wait": 7.68,
          "max_wait": 10
        },
        {
          "hour": 21,
          "days": 14,
          "readings": 168,
          "mean_wait": 7.68,
          "max_wait": 10
        },
        {
          "hour": 22,
          "days": 14,
          "readings": 168,
          "mean_wait": 7.68,
          "max_wait": 10
        },
        {
          "hour": 23,
          "days": 15,
          "readings": 172,
          "mean_wait": 7.67,
          "max_wait": 10
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 2,
          "hours": 42,
          "readings": 446,
          "mean_wait": 8.29,
          "max_wait": 15
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 57,
          "readings": 659,
          "mean_wait": 7.72,
          "max_wait": 25
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 47,
          "readings": 546,
          "mean_wait": 7.63,
          "max_wait": 15
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 860,
          "mean_wait": 7.74,
          "max_wait": 20
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 56,
          "readings": 666,
          "mean_wait": 7.68,
          "max_wait": 15
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 2,
          "hours": 42,
          "readings": 504,
          "mean_wait": 7.69,
          "max_wait": 15
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 2,
          "hours": 23,
          "readings": 266,
          "mean_wait": 9.53,
          "max_wait": 10
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 288,
          "mean_wait": 7.53,
          "max_wait": 10
        },
        {
          "date": "2026-10-02",
          "hours": 8,
          "readings": 90,
          "mean_wait": 7.55,
          "max_wait": 10
        },
        {
          "date": "2026-10-04",
          "hours": 18,
          "readings": 216,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "date": "2026-10-05",
          "hours": 22,
          "readings": 244,
          "mean_wait": 8.57,
          "max_wait": 15
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 288,
          "mean_wait": 7.57,
          "max_wait": 10
        },
        {
          "date": "2026-10-07",
          "hours": 23,
          "readings": 266,
          "mean_wait": 7.61,
          "max_wait": 15
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 288,
          "mean_wait": 7.72,
          "max_wait": 20
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 288,
          "mean_wait": 7.53,
          "max_wait": 10
        },
        {
          "date": "2026-10-10",
          "hours": 18,
          "readings": 216,
          "mean_wait": 7.64,
          "max_wait": 15
        },
        {
          "date": "2026-10-13",
          "hours": 9,
          "readings": 83,
          "mean_wait": 7.72,
          "max_wait": 10
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 280,
          "mean_wait": 7.64,
          "max_wait": 15
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 284,
          "mean_wait": 7.97,
          "max_wait": 15
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 288,
          "mean_wait": 7.86,
          "max_wait": 15
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 288,
          "mean_wait": 7.73,
          "max_wait": 10
        },
        {
          "date": "2026-10-18",
          "hours": 5,
          "readings": 50,
          "mean_wait": 7.5,
          "max_wait": 10
        },
        {
          "date": "2026-10-19",
          "hours": 20,
          "readings": 202,
          "mean_wait": 7.95,
          "max_wait": 10
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 288,
          "mean_wait": 7.87,
          "max_wait": 25
        }
      ],
      "band_shares_oct_7_to_20": [
        {
          "minutes": 5,
          "share": 0.464,
          "raw_readings": 1309
        },
        {
          "minutes": 10,
          "share": 0.525,
          "raw_readings": 1482
        },
        {
          "minutes": 15,
          "share": 0.009,
          "raw_readings": 24
        },
        {
          "minutes": 20,
          "share": 0.002,
          "raw_readings": 5
        },
        {
          "minutes": 25,
          "share": 0,
          "raw_readings": 1
        }
      ],
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Terminal 2",
          "role": "main",
          "hours": 339,
          "days": 17,
          "readings": 1974,
          "mean_wait": 5.69,
          "max_wait": 15,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 16,
          "busiest_hour_mean": 6.82,
          "busiest_hour_days": 14
        },
        {
          "name": "Terminal 5 (5F)",
          "role": "main",
          "hours": 339,
          "days": 17,
          "readings": 1973,
          "mean_wait": 10.08,
          "max_wait": 25,
          "hours_mean_15_plus": 2,
          "hours_mean_30_plus": 0,
          "busiest_hour": 16,
          "busiest_hour_mean": 10.8,
          "busiest_hour_days": 14
        }
      ]
    },
    {
      "code": "BCN",
      "name": "Barcelona-El Prat",
      "city": "Barcelona",
      "country": "Spain",
      "publishes": "bands",
      "how_published": "Ranges such as under 5 or 5-10 minutes, from Aena; we store the top of the range",
      "published_by": "aena.es",
      "days_with_data": 16,
      "hours_with_data": 295,
      "readings": 9937,
      "mean_wait": 6.04,
      "max_wait": 20,
      "hours_mean_15_plus": 1,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 8,
        "days": 12,
        "readings": 406,
        "mean_wait": 8.06,
        "max_wait": 20
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 12,
        "readings": 426,
        "mean_wait": 5.4,
        "max_wait": 20
      },
      "busiest_weekday": {
        "iso_dow": 7,
        "day": "Sunday",
        "days": 2,
        "hours": 23,
        "readings": 711,
        "mean_wait": 7.87,
        "max_wait": 20
      },
      "quietest_weekday": {
        "iso_dow": 3,
        "day": "Wednesday",
        "days": 2,
        "hours": 47,
        "readings": 1617,
        "mean_wait": 5.59,
        "max_wait": 20
      },
      "worst_hour": {
        "local_hour": "2026-10-04 09:00:00",
        "mean_wait": 20,
        "readings": 12,
        "checkpoints": 2,
        "max_wait": 20
      },
      "missing_dates": [
        "2026-10-03",
        "2026-10-11",
        "2026-10-12",
        "2026-10-16"
      ],
      "thin_dates": [
        "2026-10-02",
        "2026-10-13",
        "2026-10-15",
        "2026-10-18"
      ],
      "by_hour": [
        {
          "hour": 0,
          "days": 12,
          "readings": 425,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 1,
          "days": 13,
          "readings": 395,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 2,
          "days": 12,
          "readings": 390,
          "mean_wait": 5.01,
          "max_wait": 10
        },
        {
          "hour": 3,
          "days": 12,
          "readings": 390,
          "mean_wait": 5.05,
          "max_wait": 10
        },
        {
          "hour": 4,
          "days": 12,
          "readings": 417,
          "mean_wait": 5.37,
          "max_wait": 20
        },
        {
          "hour": 5,
          "days": 13,
          "readings": 432,
          "mean_wait": 5.21,
          "max_wait": 20
        },
        {
          "hour": 6,
          "days": 13,
          "readings": 437,
          "mean_wait": 6.46,
          "max_wait": 20
        },
        {
          "hour": 7,
          "days": 13,
          "readings": 399,
          "mean_wait": 7.17,
          "max_wait": 20
        },
        {
          "hour": 8,
          "days": 12,
          "readings": 406,
          "mean_wait": 8.06,
          "max_wait": 20
        },
        {
          "hour": 9,
          "days": 13,
          "readings": 435,
          "mean_wait": 7.04,
          "max_wait": 20
        },
        {
          "hour": 10,
          "days": 13,
          "readings": 446,
          "mean_wait": 7.87,
          "max_wait": 20
        },
        {
          "hour": 11,
          "days": 13,
          "readings": 418,
          "mean_wait": 7.43,
          "max_wait": 20
        },
        {
          "hour": 12,
          "days": 11,
          "readings": 391,
          "mean_wait": 6.76,
          "max_wait": 20
        },
        {
          "hour": 13,
          "days": 11,
          "readings": 396,
          "mean_wait": 6.82,
          "max_wait": 20
        },
        {
          "hour": 14,
          "days": 12,
          "readings": 408,
          "mean_wait": 6.1,
          "max_wait": 20
        },
        {
          "hour": 15,
          "days": 12,
          "readings": 407,
          "mean_wait": 5.9,
          "max_wait": 20
        },
        {
          "hour": 16,
          "days": 12,
          "readings": 415,
          "mean_wait": 5.94,
          "max_wait": 20
        },
        {
          "hour": 17,
          "days": 12,
          "readings": 420,
          "mean_wait": 5.96,
          "max_wait": 20
        },
        {
          "hour": 18,
          "days": 13,
          "readings": 400,
          "mean_wait": 5.61,
          "max_wait": 20
        },
        {
          "hour": 19,
          "days": 12,
          "readings": 406,
          "mean_wait": 5.93,
          "max_wait": 20
        },
        {
          "hour": 20,
          "days": 12,
          "readings": 428,
          "mean_wait": 5.67,
          "max_wait": 20
        },
        {
          "hour": 21,
          "days": 12,
          "readings": 426,
          "mean_wait": 5.4,
          "max_wait": 20
        },
        {
          "hour": 22,
          "days": 12,
          "readings": 430,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 23,
          "days": 13,
          "readings": 420,
          "mean_wait": 5.04,
          "max_wait": 10
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 2,
          "hours": 41,
          "readings": 1287,
          "mean_wait": 6.16,
          "max_wait": 20
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 57,
          "readings": 1929,
          "mean_wait": 5.72,
          "max_wait": 20
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 47,
          "readings": 1617,
          "mean_wait": 5.59,
          "max_wait": 20
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 55,
          "readings": 1917,
          "mean_wait": 5.85,
          "max_wait": 20
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 2,
          "hours": 32,
          "readings": 1117,
          "mean_wait": 6.42,
          "max_wait": 20
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 2,
          "hours": 40,
          "readings": 1359,
          "mean_wait": 5.9,
          "max_wait": 20
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 2,
          "hours": 23,
          "readings": 711,
          "mean_wait": 7.87,
          "max_wait": 20
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 826,
          "mean_wait": 5.45,
          "max_wait": 20
        },
        {
          "date": "2026-10-02",
          "hours": 8,
          "readings": 264,
          "mean_wait": 5.17,
          "max_wait": 10
        },
        {
          "date": "2026-10-04",
          "hours": 18,
          "readings": 576,
          "mean_wait": 8.52,
          "max_wait": 20
        },
        {
          "date": "2026-10-05",
          "hours": 22,
          "readings": 701,
          "mean_wait": 5.99,
          "max_wait": 20
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 845,
          "mean_wait": 5.62,
          "max_wait": 20
        },
        {
          "date": "2026-10-07",
          "hours": 23,
          "readings": 784,
          "mean_wait": 5.78,
          "max_wait": 20
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 854,
          "mean_wait": 6.46,
          "max_wait": 20
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 853,
          "mean_wait": 6.81,
          "max_wait": 20
        },
        {
          "date": "2026-10-10",
          "hours": 19,
          "readings": 636,
          "mean_wait": 5.88,
          "max_wait": 20
        },
        {
          "date": "2026-10-13",
          "hours": 9,
          "readings": 231,
          "mean_wait": 5.89,
          "max_wait": 20
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 833,
          "mean_wait": 5.42,
          "max_wait": 20
        },
        {
          "date": "2026-10-15",
          "hours": 7,
          "readings": 237,
          "mean_wait": 5.04,
          "max_wait": 10
        },
        {
          "date": "2026-10-17",
          "hours": 21,
          "readings": 723,
          "mean_wait": 5.93,
          "max_wait": 20
        },
        {
          "date": "2026-10-18",
          "hours": 5,
          "readings": 135,
          "mean_wait": 5.08,
          "max_wait": 10
        },
        {
          "date": "2026-10-19",
          "hours": 19,
          "readings": 586,
          "mean_wait": 6.35,
          "max_wait": 20
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 853,
          "mean_wait": 5.76,
          "max_wait": 20
        }
      ],
      "band_shares_oct_7_to_20": [
        {
          "minutes": 5,
          "share": 0.848,
          "raw_readings": 5706
        },
        {
          "minutes": 10,
          "share": 0.129,
          "raw_readings": 871
        },
        {
          "minutes": 20,
          "share": 0.023,
          "raw_readings": 152
        }
      ],
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Terminal 1 main",
          "role": "main",
          "hours": 294,
          "days": 16,
          "readings": 3323,
          "mean_wait": 6.62,
          "max_wait": 20,
          "hours_mean_15_plus": 13,
          "hours_mean_30_plus": 0,
          "busiest_hour": 10,
          "busiest_hour_mean": 11.84,
          "busiest_hour_days": 13
        },
        {
          "name": "Terminal 2 C",
          "role": "main",
          "hours": 295,
          "days": 16,
          "readings": 3316,
          "mean_wait": 5.32,
          "max_wait": 20,
          "hours_mean_15_plus": 1,
          "hours_mean_30_plus": 0,
          "busiest_hour": 11,
          "busiest_hour_mean": 6.87,
          "busiest_hour_days": 13
        },
        {
          "name": "Terminal 2 main",
          "role": "main",
          "hours": 293,
          "days": 16,
          "readings": 3298,
          "mean_wait": 6.17,
          "max_wait": 20,
          "hours_mean_15_plus": 7,
          "hours_mean_30_plus": 0,
          "busiest_hour": 8,
          "busiest_hour_mean": 10.27,
          "busiest_hour_days": 11
        }
      ]
    },
    {
      "code": "BER",
      "name": "Berlin Brandenburg",
      "city": "Berlin",
      "country": "Germany",
      "publishes": "minutes",
      "how_published": "A low and high minute figure per control; we store the high one",
      "published_by": "ber.berlin-airport.de",
      "days_with_data": 20,
      "hours_with_data": 391,
      "readings": 7627,
      "mean_wait": 9.2,
      "max_wait": 82,
      "hours_mean_15_plus": 21,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 11,
        "days": 20,
        "readings": 463,
        "mean_wait": 12.13,
        "max_wait": 40
      },
      "quietest_daytime_hour": {
        "hour": 8,
        "days": 20,
        "readings": 440,
        "mean_wait": 7.68,
        "max_wait": 21
      },
      "busiest_weekday": {
        "iso_dow": 1,
        "day": "Monday",
        "days": 3,
        "hours": 58,
        "readings": 1126,
        "mean_wait": 10.57,
        "max_wait": 40
      },
      "quietest_weekday": {
        "iso_dow": 6,
        "day": "Saturday",
        "days": 3,
        "hours": 60,
        "readings": 1135,
        "mean_wait": 8,
        "max_wait": 82
      },
      "worst_hour": {
        "local_hour": "2026-10-12 11:00:00",
        "mean_wait": 20.18,
        "readings": 12,
        "checkpoints": 4,
        "max_wait": 40
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 150,
          "mean_wait": 5.21,
          "max_wait": 8
        },
        {
          "hour": 1,
          "days": 8,
          "readings": 23,
          "mean_wait": 5.04,
          "max_wait": 6
        },
        {
          "hour": 5,
          "days": 5,
          "readings": 13,
          "mean_wait": 12.15,
          "max_wait": 33
        },
        {
          "hour": 6,
          "days": 19,
          "readings": 432,
          "mean_wait": 9.43,
          "max_wait": 82
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 475,
          "mean_wait": 8.38,
          "max_wait": 19
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 440,
          "mean_wait": 7.68,
          "max_wait": 21
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 453,
          "mean_wait": 10.24,
          "max_wait": 23
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 463,
          "mean_wait": 11.91,
          "max_wait": 26
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 463,
          "mean_wait": 12.13,
          "max_wait": 40
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 446,
          "mean_wait": 11.81,
          "max_wait": 30
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 484,
          "mean_wait": 9.65,
          "max_wait": 22
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 435,
          "mean_wait": 8.8,
          "max_wait": 31
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 441,
          "mean_wait": 8.5,
          "max_wait": 29
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 407,
          "mean_wait": 7.83,
          "max_wait": 23
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 408,
          "mean_wait": 8.7,
          "max_wait": 19
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 400,
          "mean_wait": 9.01,
          "max_wait": 20
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 438,
          "mean_wait": 9.42,
          "max_wait": 30
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 401,
          "mean_wait": 9.37,
          "max_wait": 28
        },
        {
          "hour": 21,
          "days": 19,
          "readings": 321,
          "mean_wait": 8.31,
          "max_wait": 26
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 291,
          "mean_wait": 7.28,
          "max_wait": 23
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 243,
          "mean_wait": 5.67,
          "max_wait": 22
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 58,
          "readings": 1126,
          "mean_wait": 10.57,
          "max_wait": 40
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 60,
          "readings": 1062,
          "mean_wait": 9.55,
          "max_wait": 34
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 39,
          "readings": 744,
          "mean_wait": 8.8,
          "max_wait": 31
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 57,
          "readings": 1132,
          "mean_wait": 9.14,
          "max_wait": 27
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 58,
          "readings": 1229,
          "mean_wait": 9.82,
          "max_wait": 35
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 60,
          "readings": 1135,
          "mean_wait": 8,
          "max_wait": 82
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 59,
          "readings": 1199,
          "mean_wait": 8.4,
          "max_wait": 25
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 19,
          "readings": 373,
          "mean_wait": 8.14,
          "max_wait": 21
        },
        {
          "date": "2026-10-02",
          "hours": 19,
          "readings": 402,
          "mean_wait": 9.1,
          "max_wait": 22
        },
        {
          "date": "2026-10-03",
          "hours": 20,
          "readings": 378,
          "mean_wait": 7.45,
          "max_wait": 19
        },
        {
          "date": "2026-10-04",
          "hours": 19,
          "readings": 394,
          "mean_wait": 7.5,
          "max_wait": 19
        },
        {
          "date": "2026-10-05",
          "hours": 20,
          "readings": 374,
          "mean_wait": 10.28,
          "max_wait": 27
        },
        {
          "date": "2026-10-06",
          "hours": 21,
          "readings": 359,
          "mean_wait": 9.72,
          "max_wait": 29
        },
        {
          "date": "2026-10-07",
          "hours": 19,
          "readings": 378,
          "mean_wait": 7.9,
          "max_wait": 31
        },
        {
          "date": "2026-10-08",
          "hours": 19,
          "readings": 379,
          "mean_wait": 8.33,
          "max_wait": 23
        },
        {
          "date": "2026-10-09",
          "hours": 19,
          "readings": 402,
          "mean_wait": 10.38,
          "max_wait": 25
        },
        {
          "date": "2026-10-10",
          "hours": 20,
          "readings": 360,
          "mean_wait": 8.65,
          "max_wait": 82
        },
        {
          "date": "2026-10-11",
          "hours": 20,
          "readings": 385,
          "mean_wait": 9.27,
          "max_wait": 25
        },
        {
          "date": "2026-10-12",
          "hours": 19,
          "readings": 338,
          "mean_wait": 11.23,
          "max_wait": 40
        },
        {
          "date": "2026-10-13",
          "hours": 19,
          "readings": 336,
          "mean_wait": 9.99,
          "max_wait": 34
        },
        {
          "date": "2026-10-14",
          "hours": 20,
          "readings": 366,
          "mean_wait": 9.73,
          "max_wait": 30
        },
        {
          "date": "2026-10-15",
          "hours": 19,
          "readings": 380,
          "mean_wait": 10.92,
          "max_wait": 27
        },
        {
          "date": "2026-10-16",
          "hours": 20,
          "readings": 425,
          "mean_wait": 9.96,
          "max_wait": 35
        },
        {
          "date": "2026-10-17",
          "hours": 20,
          "readings": 397,
          "mean_wait": 7.94,
          "max_wait": 22
        },
        {
          "date": "2026-10-18",
          "hours": 20,
          "readings": 420,
          "mean_wait": 8.45,
          "max_wait": 25
        },
        {
          "date": "2026-10-19",
          "hours": 19,
          "readings": 414,
          "mean_wait": 10.29,
          "max_wait": 31
        },
        {
          "date": "2026-10-20",
          "hours": 20,
          "readings": 367,
          "mean_wait": 8.99,
          "max_wait": 26
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Terminal 1, control 1",
          "role": "main",
          "hours": 390,
          "days": 20,
          "readings": 2247,
          "mean_wait": 9.47,
          "max_wait": 28,
          "hours_mean_15_plus": 32,
          "hours_mean_30_plus": 0,
          "busiest_hour": 11,
          "busiest_hour_mean": 12.71,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 1, control 2",
          "role": "main",
          "hours": 1,
          "days": 1,
          "readings": 2,
          "mean_wait": 8,
          "max_wait": 9,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": null,
          "busiest_hour_mean": null,
          "busiest_hour_days": null
        },
        {
          "name": "Terminal 1, control 4",
          "role": "main",
          "hours": 231,
          "days": 20,
          "readings": 1243,
          "mean_wait": 11.57,
          "max_wait": 40,
          "hours_mean_15_plus": 33,
          "hours_mean_30_plus": 1,
          "busiest_hour": 11,
          "busiest_hour_mean": 15.56,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 1, control 5",
          "role": "main",
          "hours": 334,
          "days": 20,
          "readings": 1947,
          "mean_wait": 8.61,
          "max_wait": 82,
          "hours_mean_15_plus": 26,
          "hours_mean_30_plus": 1,
          "busiest_hour": 11,
          "busiest_hour_mean": 11.37,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 2, control 0",
          "role": "main",
          "hours": 382,
          "days": 20,
          "readings": 2188,
          "mean_wait": 8.1,
          "max_wait": 34,
          "hours_mean_15_plus": 22,
          "hours_mean_30_plus": 0,
          "busiest_hour": 12,
          "busiest_hour_mean": 11.24,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "BGO",
      "name": "Bergen Flesland",
      "city": "Bergen",
      "country": "Norway",
      "publishes": "minutes",
      "how_published": "Seconds, from Avinor",
      "published_by": "avinor.no",
      "days_with_data": 20,
      "hours_with_data": 363,
      "readings": 2020,
      "mean_wait": 5.87,
      "max_wait": 22,
      "hours_mean_15_plus": 0,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 03:00:00",
      "last_local_hour": "2026-10-20 19:00:00",
      "busiest_hour": {
        "hour": 16,
        "days": 20,
        "readings": 115,
        "mean_wait": 8.98,
        "max_wait": 22
      },
      "quietest_daytime_hour": {
        "hour": 20,
        "days": 13,
        "readings": 49,
        "mean_wait": 3.17,
        "max_wait": 13
      },
      "busiest_weekday": {
        "iso_dow": 4,
        "day": "Thursday",
        "days": 3,
        "hours": 57,
        "readings": 314,
        "mean_wait": 6.74,
        "max_wait": 20
      },
      "quietest_weekday": {
        "iso_dow": 6,
        "day": "Saturday",
        "days": 3,
        "hours": 53,
        "readings": 287,
        "mean_wait": 4.45,
        "max_wait": 17
      },
      "worst_hour": {
        "local_hour": "2026-10-14 16:00:00",
        "mean_wait": 14.2,
        "readings": 6,
        "checkpoints": 1,
        "max_wait": 22
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 3,
          "days": 12,
          "readings": 21,
          "mean_wait": 2.19,
          "max_wait": 4
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 123,
          "mean_wait": 3.48,
          "max_wait": 13
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 123,
          "mean_wait": 6.07,
          "max_wait": 19
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 122,
          "mean_wait": 5.62,
          "max_wait": 16
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 118,
          "mean_wait": 5.87,
          "max_wait": 18
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 118,
          "mean_wait": 6.36,
          "max_wait": 16
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 120,
          "mean_wait": 7.79,
          "max_wait": 16
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 122,
          "mean_wait": 4.39,
          "max_wait": 14
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.11,
          "max_wait": 16
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 121,
          "mean_wait": 6.08,
          "max_wait": 20
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 118,
          "mean_wait": 7.13,
          "max_wait": 14
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 119,
          "mean_wait": 6.07,
          "max_wait": 15
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 122,
          "mean_wait": 6.95,
          "max_wait": 20
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 115,
          "mean_wait": 8.98,
          "max_wait": 22
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 117,
          "mean_wait": 6.98,
          "max_wait": 15
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 119,
          "mean_wait": 5.03,
          "max_wait": 15
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 104,
          "mean_wait": 5.38,
          "max_wait": 14
        },
        {
          "hour": 20,
          "days": 13,
          "readings": 49,
          "mean_wait": 3.17,
          "max_wait": 13
        },
        {
          "hour": 21,
          "days": 9,
          "readings": 32,
          "mean_wait": 2.67,
          "max_wait": 8
        },
        {
          "hour": 22,
          "days": 8,
          "readings": 16,
          "mean_wait": 2.51,
          "max_wait": 8
        },
        {
          "hour": 23,
          "days": 1,
          "readings": 1,
          "mean_wait": 1,
          "max_wait": 1
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 54,
          "readings": 300,
          "mean_wait": 6.15,
          "max_wait": 19
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 52,
          "readings": 288,
          "mean_wait": 6.05,
          "max_wait": 21
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 37,
          "readings": 199,
          "mean_wait": 6.23,
          "max_wait": 22
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 57,
          "readings": 314,
          "mean_wait": 6.74,
          "max_wait": 20
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 52,
          "readings": 295,
          "mean_wait": 5.94,
          "max_wait": 16
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 53,
          "readings": 287,
          "mean_wait": 4.45,
          "max_wait": 17
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 58,
          "readings": 337,
          "mean_wait": 5.62,
          "max_wait": 15
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 19,
          "readings": 103,
          "mean_wait": 6.59,
          "max_wait": 17
        },
        {
          "date": "2026-10-02",
          "hours": 18,
          "readings": 99,
          "mean_wait": 5.46,
          "max_wait": 13
        },
        {
          "date": "2026-10-03",
          "hours": 19,
          "readings": 103,
          "mean_wait": 4.36,
          "max_wait": 11
        },
        {
          "date": "2026-10-04",
          "hours": 19,
          "readings": 113,
          "mean_wait": 4.85,
          "max_wait": 13
        },
        {
          "date": "2026-10-05",
          "hours": 17,
          "readings": 98,
          "mean_wait": 6.49,
          "max_wait": 16
        },
        {
          "date": "2026-10-06",
          "hours": 18,
          "readings": 99,
          "mean_wait": 5.78,
          "max_wait": 21
        },
        {
          "date": "2026-10-07",
          "hours": 19,
          "readings": 99,
          "mean_wait": 6.69,
          "max_wait": 16
        },
        {
          "date": "2026-10-08",
          "hours": 18,
          "readings": 100,
          "mean_wait": 5.85,
          "max_wait": 14
        },
        {
          "date": "2026-10-09",
          "hours": 17,
          "readings": 98,
          "mean_wait": 7.06,
          "max_wait": 16
        },
        {
          "date": "2026-10-10",
          "hours": 17,
          "readings": 91,
          "mean_wait": 5.02,
          "max_wait": 13
        },
        {
          "date": "2026-10-11",
          "hours": 20,
          "readings": 113,
          "mean_wait": 5.67,
          "max_wait": 15
        },
        {
          "date": "2026-10-12",
          "hours": 18,
          "readings": 100,
          "mean_wait": 6.9,
          "max_wait": 19
        },
        {
          "date": "2026-10-13",
          "hours": 18,
          "readings": 92,
          "mean_wait": 6.1,
          "max_wait": 17
        },
        {
          "date": "2026-10-14",
          "hours": 18,
          "readings": 100,
          "mean_wait": 5.79,
          "max_wait": 22
        },
        {
          "date": "2026-10-15",
          "hours": 20,
          "readings": 111,
          "mean_wait": 7.67,
          "max_wait": 20
        },
        {
          "date": "2026-10-16",
          "hours": 17,
          "readings": 98,
          "mean_wait": 5.3,
          "max_wait": 14
        },
        {
          "date": "2026-10-17",
          "hours": 17,
          "readings": 93,
          "mean_wait": 3.99,
          "max_wait": 17
        },
        {
          "date": "2026-10-18",
          "hours": 19,
          "readings": 111,
          "mean_wait": 6.36,
          "max_wait": 15
        },
        {
          "date": "2026-10-19",
          "hours": 19,
          "readings": 102,
          "mean_wait": 5.08,
          "max_wait": 15
        },
        {
          "date": "2026-10-20",
          "hours": 16,
          "readings": 97,
          "mean_wait": 6.29,
          "max_wait": 20
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Central security (T3)",
          "role": "main",
          "hours": 363,
          "days": 20,
          "readings": 2020,
          "mean_wait": 5.87,
          "max_wait": 22,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 16,
          "busiest_hour_mean": 8.98,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "BRU",
      "name": "Brussels",
      "city": "Brussels",
      "country": "Belgium",
      "publishes": "bands",
      "how_published": "Ranges such as under 5 or 5-10 minutes; we store the top of the range",
      "published_by": "brusselsairport.be",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 2870,
      "mean_wait": 7.24,
      "max_wait": 20,
      "hours_mean_15_plus": 27,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 8,
        "days": 20,
        "readings": 120,
        "mean_wait": 11.59,
        "max_wait": 20
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 120,
        "mean_wait": 5.12,
        "max_wait": 10
      },
      "busiest_weekday": {
        "iso_dow": 4,
        "day": "Thursday",
        "days": 3,
        "hours": 72,
        "readings": 432,
        "mean_wait": 8.03,
        "max_wait": 20
      },
      "quietest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 3,
        "hours": 72,
        "readings": 422,
        "mean_wait": 6.34,
        "max_wait": 15
      },
      "worst_hour": {
        "local_hour": "2026-10-01 17:00:00",
        "mean_wait": 20,
        "readings": 6,
        "checkpoints": 1,
        "max_wait": 20
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 120,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 120,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 120,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 120,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.91,
          "max_wait": 10
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.75,
          "max_wait": 15
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.87,
          "max_wait": 15
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 120,
          "mean_wait": 6.95,
          "max_wait": 15
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 120,
          "mean_wait": 11.59,
          "max_wait": 20
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 120,
          "mean_wait": 9.8,
          "max_wait": 20
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 120,
          "mean_wait": 8.71,
          "max_wait": 20
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 120,
          "mean_wait": 7.67,
          "max_wait": 20
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 120,
          "mean_wait": 7.8,
          "max_wait": 20
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 120,
          "mean_wait": 6.76,
          "max_wait": 15
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 120,
          "mean_wait": 8,
          "max_wait": 20
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 119,
          "mean_wait": 7.81,
          "max_wait": 20
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 116,
          "mean_wait": 7.06,
          "max_wait": 15
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 120,
          "mean_wait": 9.25,
          "max_wait": 20
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 118,
          "mean_wait": 9.83,
          "max_wait": 20
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 117,
          "mean_wait": 10.77,
          "max_wait": 20
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 120,
          "mean_wait": 8.92,
          "max_wait": 20
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.12,
          "max_wait": 10
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.25,
          "max_wait": 20
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 120,
          "mean_wait": 5,
          "max_wait": 5
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 8,
          "max_wait": 20
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 422,
          "mean_wait": 6.34,
          "max_wait": 15
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 288,
          "mean_wait": 6.97,
          "max_wait": 20
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 8.03,
          "max_wait": 20
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 7.26,
          "max_wait": 20
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 6.92,
          "max_wait": 20
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 7.04,
          "max_wait": 20
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 144,
          "mean_wait": 9.48,
          "max_wait": 20
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.5,
          "max_wait": 20
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.83,
          "max_wait": 15
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.46,
          "max_wait": 15
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.81,
          "max_wait": 20
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.43,
          "max_wait": 15
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.4,
          "max_wait": 15
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 144,
          "mean_wait": 5.9,
          "max_wait": 20
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.43,
          "max_wait": 20
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.42,
          "max_wait": 20
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.95,
          "max_wait": 15
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.25,
          "max_wait": 10
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 134,
          "mean_wait": 6.34,
          "max_wait": 15
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.54,
          "max_wait": 20
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 144,
          "mean_wait": 8.71,
          "max_wait": 20
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.84,
          "max_wait": 15
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.5,
          "max_wait": 20
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.7,
          "max_wait": 20
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 144,
          "mean_wait": 9.93,
          "max_wait": 20
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.25,
          "max_wait": 15
        }
      ],
      "band_shares_oct_7_to_20": [
        {
          "minutes": 5,
          "share": 0.694,
          "raw_readings": 1393
        },
        {
          "minutes": 10,
          "share": 0.216,
          "raw_readings": 434
        },
        {
          "minutes": 15,
          "share": 0.053,
          "raw_readings": 107
        },
        {
          "minutes": 20,
          "share": 0.036,
          "raw_readings": 73
        }
      ],
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Central security",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 2870,
          "mean_wait": 7.24,
          "max_wait": 20,
          "hours_mean_15_plus": 27,
          "hours_mean_30_plus": 0,
          "busiest_hour": 8,
          "busiest_hour_mean": 11.59,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "CPH",
      "name": "Copenhagen",
      "city": "Copenhagen",
      "country": "Denmark",
      "publishes": "minutes",
      "how_published": "Narrow ranges such as 3-5 minutes, updated every minute; we store the top of the range",
      "published_by": "cph.dk",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 25939,
      "mean_wait": 8.11,
      "max_wait": 45,
      "hours_mean_15_plus": 66,
      "hours_mean_30_plus": 18,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 18,
        "days": 20,
        "readings": 1074,
        "mean_wait": 13.34,
        "max_wait": 45
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 1093,
        "mean_wait": 3.31,
        "max_wait": 10
      },
      "busiest_weekday": {
        "iso_dow": 7,
        "day": "Sunday",
        "days": 3,
        "hours": 72,
        "readings": 3762,
        "mean_wait": 9.92,
        "max_wait": 45
      },
      "quietest_weekday": {
        "iso_dow": 3,
        "day": "Wednesday",
        "days": 2,
        "hours": 48,
        "readings": 2691,
        "mean_wait": 4.78,
        "max_wait": 35
      },
      "worst_hour": {
        "local_hour": "2026-10-11 18:00:00",
        "mean_wait": 42.9,
        "readings": 44,
        "checkpoints": 1,
        "max_wait": 45
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 1024,
          "mean_wait": 2.05,
          "max_wait": 4
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 1025,
          "mean_wait": 2.05,
          "max_wait": 5
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 1031,
          "mean_wait": 2.19,
          "max_wait": 6
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 1044,
          "mean_wait": 5.52,
          "max_wait": 35
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 1043,
          "mean_wait": 13.22,
          "max_wait": 45
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 1061,
          "mean_wait": 12.37,
          "max_wait": 45
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 1082,
          "mean_wait": 11.68,
          "max_wait": 45
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 1102,
          "mean_wait": 12.23,
          "max_wait": 43
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 1099,
          "mean_wait": 7.5,
          "max_wait": 35
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 1107,
          "mean_wait": 8.25,
          "max_wait": 40
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 1125,
          "mean_wait": 8.4,
          "max_wait": 32
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 1121,
          "mean_wait": 10.49,
          "max_wait": 45
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 1113,
          "mean_wait": 9.17,
          "max_wait": 45
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 1120,
          "mean_wait": 10.03,
          "max_wait": 45
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 1098,
          "mean_wait": 12.09,
          "max_wait": 45
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 1086,
          "mean_wait": 10.25,
          "max_wait": 42
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 1070,
          "mean_wait": 9.64,
          "max_wait": 37
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 1097,
          "mean_wait": 11.85,
          "max_wait": 45
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 1074,
          "mean_wait": 13.34,
          "max_wait": 45
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 1075,
          "mean_wait": 8.62,
          "max_wait": 45
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 1098,
          "mean_wait": 3.82,
          "max_wait": 30
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 1093,
          "mean_wait": 3.31,
          "max_wait": 10
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 1083,
          "mean_wait": 2.99,
          "max_wait": 15
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 1068,
          "mean_wait": 2.51,
          "max_wait": 12
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 3993,
          "mean_wait": 8.43,
          "max_wait": 45
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 3621,
          "mean_wait": 6.3,
          "max_wait": 45
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 2691,
          "mean_wait": 4.78,
          "max_wait": 35
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 3943,
          "mean_wait": 8.81,
          "max_wait": 45
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 3962,
          "mean_wait": 7.88,
          "max_wait": 45
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 3967,
          "mean_wait": 9.5,
          "max_wait": 45
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 3762,
          "mean_wait": 9.92,
          "max_wait": 45
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 1285,
          "mean_wait": 4.62,
          "max_wait": 14
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 1342,
          "mean_wait": 4.53,
          "max_wait": 19
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 1344,
          "mean_wait": 5.23,
          "max_wait": 26
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 1254,
          "mean_wait": 5.12,
          "max_wait": 16
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 1314,
          "mean_wait": 4.9,
          "max_wait": 35
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 1339,
          "mean_wait": 4.7,
          "max_wait": 33
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 1365,
          "mean_wait": 4.7,
          "max_wait": 35
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 1312,
          "mean_wait": 8.71,
          "max_wait": 45
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 1261,
          "mean_wait": 11.37,
          "max_wait": 45
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 1315,
          "mean_wait": 11.14,
          "max_wait": 45
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 1197,
          "mean_wait": 11.53,
          "max_wait": 45
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 1358,
          "mean_wait": 8.8,
          "max_wait": 45
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 986,
          "mean_wait": 8.82,
          "max_wait": 45
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 1326,
          "mean_wait": 4.87,
          "max_wait": 16
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 1346,
          "mean_wait": 12.92,
          "max_wait": 45
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 1359,
          "mean_wait": 7.95,
          "max_wait": 43
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 1308,
          "mean_wait": 12.24,
          "max_wait": 45
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 1311,
          "mean_wait": 13.05,
          "max_wait": 45
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 1321,
          "mean_wait": 11.55,
          "max_wait": 42
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 1296,
          "mean_wait": 6.03,
          "max_wait": 41
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Terminals 2 and 3",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 25939,
          "mean_wait": 8.11,
          "max_wait": 45,
          "hours_mean_15_plus": 66,
          "hours_mean_30_plus": 18,
          "busiest_hour": 18,
          "busiest_hour_mean": 13.34,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "DUB",
      "name": "Dublin",
      "city": "Dublin",
      "country": "Ireland",
      "publishes": "minutes",
      "how_published": "Minutes per terminal",
      "published_by": "dublinairport.com",
      "days_with_data": 12,
      "hours_with_data": 280,
      "readings": 3360,
      "mean_wait": 6.07,
      "max_wait": 26,
      "hours_mean_15_plus": 5,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-12 15:00:00",
      "busiest_hour": {
        "hour": 8,
        "days": 12,
        "readings": 144,
        "mean_wait": 11.05,
        "max_wait": 26
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 11,
        "readings": 132,
        "mean_wait": 2.12,
        "max_wait": 9
      },
      "busiest_weekday": {
        "iso_dow": 7,
        "day": "Sunday",
        "days": 2,
        "hours": 48,
        "readings": 576,
        "mean_wait": 6.96,
        "max_wait": 23
      },
      "quietest_weekday": {
        "iso_dow": 3,
        "day": "Wednesday",
        "days": 1,
        "hours": 24,
        "readings": 288,
        "mean_wait": 4.32,
        "max_wait": 14
      },
      "worst_hour": {
        "local_hour": "2026-10-10 08:00:00",
        "mean_wait": 19.7,
        "readings": 12,
        "checkpoints": 2,
        "max_wait": 23
      },
      "missing_dates": [
        "2026-10-13",
        "2026-10-14",
        "2026-10-15",
        "2026-10-16",
        "2026-10-17",
        "2026-10-18",
        "2026-10-19",
        "2026-10-20"
      ],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 12,
          "readings": 144,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 1,
          "days": 12,
          "readings": 144,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 2,
          "days": 12,
          "readings": 144,
          "mean_wait": 0.66,
          "max_wait": 6
        },
        {
          "hour": 3,
          "days": 12,
          "readings": 144,
          "mean_wait": 2.27,
          "max_wait": 10
        },
        {
          "hour": 4,
          "days": 12,
          "readings": 144,
          "mean_wait": 5.95,
          "max_wait": 22
        },
        {
          "hour": 5,
          "days": 12,
          "readings": 144,
          "mean_wait": 10.47,
          "max_wait": 21
        },
        {
          "hour": 6,
          "days": 12,
          "readings": 144,
          "mean_wait": 8.69,
          "max_wait": 21
        },
        {
          "hour": 7,
          "days": 12,
          "readings": 144,
          "mean_wait": 10.13,
          "max_wait": 23
        },
        {
          "hour": 8,
          "days": 12,
          "readings": 144,
          "mean_wait": 11.05,
          "max_wait": 26
        },
        {
          "hour": 9,
          "days": 12,
          "readings": 144,
          "mean_wait": 9.93,
          "max_wait": 23
        },
        {
          "hour": 10,
          "days": 12,
          "readings": 144,
          "mean_wait": 8.38,
          "max_wait": 26
        },
        {
          "hour": 11,
          "days": 12,
          "readings": 144,
          "mean_wait": 7.59,
          "max_wait": 23
        },
        {
          "hour": 12,
          "days": 12,
          "readings": 144,
          "mean_wait": 7.19,
          "max_wait": 21
        },
        {
          "hour": 13,
          "days": 12,
          "readings": 144,
          "mean_wait": 7.11,
          "max_wait": 19
        },
        {
          "hour": 14,
          "days": 12,
          "readings": 144,
          "mean_wait": 6.34,
          "max_wait": 18
        },
        {
          "hour": 15,
          "days": 12,
          "readings": 144,
          "mean_wait": 6.78,
          "max_wait": 17
        },
        {
          "hour": 16,
          "days": 11,
          "readings": 132,
          "mean_wait": 8.9,
          "max_wait": 18
        },
        {
          "hour": 17,
          "days": 11,
          "readings": 132,
          "mean_wait": 10.9,
          "max_wait": 24
        },
        {
          "hour": 18,
          "days": 11,
          "readings": 132,
          "mean_wait": 9.28,
          "max_wait": 25
        },
        {
          "hour": 19,
          "days": 11,
          "readings": 132,
          "mean_wait": 6.47,
          "max_wait": 23
        },
        {
          "hour": 20,
          "days": 11,
          "readings": 132,
          "mean_wait": 3.55,
          "max_wait": 14
        },
        {
          "hour": 21,
          "days": 11,
          "readings": 132,
          "mean_wait": 2.12,
          "max_wait": 9
        },
        {
          "hour": 22,
          "days": 11,
          "readings": 132,
          "mean_wait": 1.31,
          "max_wait": 6
        },
        {
          "hour": 23,
          "days": 11,
          "readings": 132,
          "mean_wait": 0.22,
          "max_wait": 4
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 2,
          "hours": 40,
          "readings": 480,
          "mean_wait": 5.72,
          "max_wait": 19
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 1,
          "hours": 24,
          "readings": 288,
          "mean_wait": 6.69,
          "max_wait": 26
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 1,
          "hours": 24,
          "readings": 288,
          "mean_wait": 4.32,
          "max_wait": 14
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 2,
          "hours": 48,
          "readings": 576,
          "mean_wait": 5.84,
          "max_wait": 26
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 2,
          "hours": 48,
          "readings": 576,
          "mean_wait": 5.69,
          "max_wait": 25
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 2,
          "hours": 48,
          "readings": 576,
          "mean_wait": 6.66,
          "max_wait": 23
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 2,
          "hours": 48,
          "readings": 576,
          "mean_wait": 6.96,
          "max_wait": 23
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 288,
          "mean_wait": 5.92,
          "max_wait": 26
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 288,
          "mean_wait": 5.17,
          "max_wait": 18
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 288,
          "mean_wait": 6.35,
          "max_wait": 22
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 288,
          "mean_wait": 6.29,
          "max_wait": 23
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 288,
          "mean_wait": 5.46,
          "max_wait": 19
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 288,
          "mean_wait": 6.69,
          "max_wait": 26
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 288,
          "mean_wait": 4.32,
          "max_wait": 14
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 288,
          "mean_wait": 5.77,
          "max_wait": 21
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 288,
          "mean_wait": 6.21,
          "max_wait": 25
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 288,
          "mean_wait": 6.97,
          "max_wait": 23
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 288,
          "mean_wait": 7.64,
          "max_wait": 23
        },
        {
          "date": "2026-10-12",
          "hours": 16,
          "readings": 192,
          "mean_wait": 6.12,
          "max_wait": 17
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0.211,
      "checkpoints": [
        {
          "name": "Terminal 1",
          "role": "main",
          "hours": 280,
          "days": 12,
          "readings": 1680,
          "mean_wait": 7.09,
          "max_wait": 26,
          "hours_mean_15_plus": 21,
          "hours_mean_30_plus": 0,
          "busiest_hour": 17,
          "busiest_hour_mean": 13.85,
          "busiest_hour_days": 11
        },
        {
          "name": "Terminal 2",
          "role": "main",
          "hours": 280,
          "days": 12,
          "readings": 1680,
          "mean_wait": 5.06,
          "max_wait": 23,
          "hours_mean_15_plus": 7,
          "hours_mean_30_plus": 0,
          "busiest_hour": 8,
          "busiest_hour_mean": 12.56,
          "busiest_hour_days": 12
        }
      ]
    },
    {
      "code": "DUS",
      "name": "Dusseldorf",
      "city": "Dusseldorf",
      "country": "Germany",
      "publishes": "minutes",
      "how_published": "Minutes per security control",
      "published_by": "dus.com",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 8610,
      "mean_wait": 4.14,
      "max_wait": 50,
      "hours_mean_15_plus": 17,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 9,
        "days": 20,
        "readings": 360,
        "mean_wait": 10.19,
        "max_wait": 48
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 360,
        "mean_wait": 0.35,
        "max_wait": 2
      },
      "busiest_weekday": {
        "iso_dow": 1,
        "day": "Monday",
        "days": 3,
        "hours": 72,
        "readings": 1296,
        "mean_wait": 5.3,
        "max_wait": 50
      },
      "quietest_weekday": {
        "iso_dow": 7,
        "day": "Sunday",
        "days": 3,
        "hours": 72,
        "readings": 1296,
        "mean_wait": 2.48,
        "max_wait": 18
      },
      "worst_hour": {
        "local_hour": "2026-10-12 09:00:00",
        "mean_wait": 22.8,
        "readings": 18,
        "checkpoints": 3,
        "max_wait": 35
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 360,
          "mean_wait": 0.28,
          "max_wait": 2
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 360,
          "mean_wait": 0.27,
          "max_wait": 2
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 360,
          "mean_wait": 0.33,
          "max_wait": 2
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 360,
          "mean_wait": 1.81,
          "max_wait": 16
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 360,
          "mean_wait": 4.43,
          "max_wait": 23
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 360,
          "mean_wait": 8.13,
          "max_wait": 29
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 360,
          "mean_wait": 8.73,
          "max_wait": 37
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 360,
          "mean_wait": 3.49,
          "max_wait": 18
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 360,
          "mean_wait": 7.77,
          "max_wait": 31
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 360,
          "mean_wait": 10.19,
          "max_wait": 48
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 360,
          "mean_wait": 8.89,
          "max_wait": 49
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 360,
          "mean_wait": 7.85,
          "max_wait": 50
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 360,
          "mean_wait": 5.65,
          "max_wait": 30
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 360,
          "mean_wait": 5.48,
          "max_wait": 26
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 360,
          "mean_wait": 6.78,
          "max_wait": 28
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 357,
          "mean_wait": 5.68,
          "max_wait": 26
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 348,
          "mean_wait": 4.19,
          "max_wait": 24
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 360,
          "mean_wait": 2.65,
          "max_wait": 23
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 354,
          "mean_wait": 2.38,
          "max_wait": 11
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 351,
          "mean_wait": 2.65,
          "max_wait": 18
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 360,
          "mean_wait": 0.64,
          "max_wait": 9
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 360,
          "mean_wait": 0.35,
          "max_wait": 2
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 360,
          "mean_wait": 0.33,
          "max_wait": 2
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 360,
          "mean_wait": 0.33,
          "max_wait": 2
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 1296,
          "mean_wait": 5.3,
          "max_wait": 50
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 1266,
          "mean_wait": 4.56,
          "max_wait": 48
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 864,
          "mean_wait": 4.68,
          "max_wait": 26
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 1296,
          "mean_wait": 4.86,
          "max_wait": 29
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 1296,
          "mean_wait": 4.39,
          "max_wait": 30
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 1296,
          "mean_wait": 2.89,
          "max_wait": 29
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 1296,
          "mean_wait": 2.48,
          "max_wait": 18
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 432,
          "mean_wait": 3.81,
          "max_wait": 19
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 432,
          "mean_wait": 3.93,
          "max_wait": 26
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 432,
          "mean_wait": 1.82,
          "max_wait": 11
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 432,
          "mean_wait": 1.83,
          "max_wait": 12
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 432,
          "mean_wait": 4.37,
          "max_wait": 28
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 432,
          "mean_wait": 4.17,
          "max_wait": 31
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 432,
          "mean_wait": 5.49,
          "max_wait": 26
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 432,
          "mean_wait": 5.74,
          "max_wait": 25
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 432,
          "mean_wait": 5.11,
          "max_wait": 30
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 432,
          "mean_wait": 2.8,
          "max_wait": 23
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 432,
          "mean_wait": 2.94,
          "max_wait": 18
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 432,
          "mean_wait": 7.91,
          "max_wait": 50
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 402,
          "mean_wait": 6.66,
          "max_wait": 48
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 432,
          "mean_wait": 3.87,
          "max_wait": 21
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 432,
          "mean_wait": 5.03,
          "max_wait": 29
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 432,
          "mean_wait": 4.15,
          "max_wait": 23
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 432,
          "mean_wait": 4.05,
          "max_wait": 29
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 432,
          "mean_wait": 2.67,
          "max_wait": 12
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 432,
          "mean_wait": 3.61,
          "max_wait": 24
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 432,
          "mean_wait": 2.99,
          "max_wait": 16
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0.262,
      "checkpoints": [
        {
          "name": "Security control A",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 2870,
          "mean_wait": 3.82,
          "max_wait": 50,
          "hours_mean_15_plus": 13,
          "hours_mean_30_plus": 1,
          "busiest_hour": 11,
          "busiest_hour_mean": 9.09,
          "busiest_hour_days": 20
        },
        {
          "name": "Security control B",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 2870,
          "mean_wait": 4.86,
          "max_wait": 35,
          "hours_mean_15_plus": 21,
          "hours_mean_30_plus": 0,
          "busiest_hour": 9,
          "busiest_hour_mean": 10.85,
          "busiest_hour_days": 20
        },
        {
          "name": "Security control C",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 2870,
          "mean_wait": 3.74,
          "max_wait": 49,
          "hours_mean_15_plus": 22,
          "hours_mean_30_plus": 4,
          "busiest_hour": 9,
          "busiest_hour_mean": 11.01,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "EDI",
      "name": "Edinburgh",
      "city": "Edinburgh",
      "country": "United Kingdom",
      "publishes": "minutes",
      "how_published": "Minutes from the airport's queue sensors",
      "published_by": "edinburghairport.com",
      "days_with_data": 20,
      "hours_with_data": 478,
      "readings": 2843,
      "mean_wait": 4.61,
      "max_wait": 43,
      "hours_mean_15_plus": 22,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 15,
        "days": 20,
        "readings": 116,
        "mean_wait": 8.01,
        "max_wait": 23
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 120,
        "mean_wait": 2.16,
        "max_wait": 32
      },
      "busiest_weekday": {
        "iso_dow": 1,
        "day": "Monday",
        "days": 3,
        "hours": 72,
        "readings": 432,
        "mean_wait": 6.61,
        "max_wait": 27
      },
      "quietest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 3,
        "hours": 70,
        "readings": 395,
        "mean_wait": 3.5,
        "max_wait": 43
      },
      "worst_hour": {
        "local_hour": "2026-10-11 19:00:00",
        "mean_wait": 22.5,
        "readings": 6,
        "checkpoints": 1,
        "max_wait": 26
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 120,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 120,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 120,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 120,
          "mean_wait": 2.5,
          "max_wait": 12
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.25,
          "max_wait": 14
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 120,
          "mean_wait": 6.56,
          "max_wait": 22
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 120,
          "mean_wait": 4.69,
          "max_wait": 14
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 115,
          "mean_wait": 7.61,
          "max_wait": 27
        },
        {
          "hour": 8,
          "days": 19,
          "readings": 114,
          "mean_wait": 6.05,
          "max_wait": 20
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 115,
          "mean_wait": 7.82,
          "max_wait": 21
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 118,
          "mean_wait": 6.98,
          "max_wait": 20
        },
        {
          "hour": 11,
          "days": 19,
          "readings": 114,
          "mean_wait": 4.33,
          "max_wait": 8
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 117,
          "mean_wait": 6.25,
          "max_wait": 15
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 120,
          "mean_wait": 6.42,
          "max_wait": 23
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 119,
          "mean_wait": 4.97,
          "max_wait": 19
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 116,
          "mean_wait": 8.01,
          "max_wait": 23
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 120,
          "mean_wait": 8.01,
          "max_wait": 24
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 118,
          "mean_wait": 6.25,
          "max_wait": 22
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 117,
          "mean_wait": 7.93,
          "max_wait": 22
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.06,
          "max_wait": 26
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 120,
          "mean_wait": 3.38,
          "max_wait": 27
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 120,
          "mean_wait": 2.16,
          "max_wait": 32
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 120,
          "mean_wait": 1.08,
          "max_wait": 43
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 120,
          "mean_wait": 0,
          "max_wait": 0
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 6.61,
          "max_wait": 27
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 70,
          "readings": 395,
          "mean_wait": 3.5,
          "max_wait": 43
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 288,
          "mean_wait": 4.71,
          "max_wait": 34
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 4.48,
          "max_wait": 21
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 4.01,
          "max_wait": 32
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 3.7,
          "max_wait": 21
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 5.19,
          "max_wait": 27
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.66,
          "max_wait": 12
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.2,
          "max_wait": 32
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.73,
          "max_wait": 21
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.88,
          "max_wait": 20
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.66,
          "max_wait": 22
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.33,
          "max_wait": 13
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.72,
          "max_wait": 34
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.84,
          "max_wait": 21
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.93,
          "max_wait": 16
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.08,
          "max_wait": 12
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.58,
          "max_wait": 27
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.46,
          "max_wait": 20
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 134,
          "mean_wait": 4.18,
          "max_wait": 22
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.7,
          "max_wait": 24
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.95,
          "max_wait": 21
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.9,
          "max_wait": 23
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.28,
          "max_wait": 13
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.12,
          "max_wait": 15
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.71,
          "max_wait": 27
        },
        {
          "date": "2026-10-20",
          "hours": 22,
          "readings": 117,
          "mean_wait": 2.94,
          "max_wait": 43
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0.214,
      "checkpoints": [
        {
          "name": "Central security",
          "role": "main",
          "hours": 478,
          "days": 20,
          "readings": 2843,
          "mean_wait": 4.61,
          "max_wait": 43,
          "hours_mean_15_plus": 22,
          "hours_mean_30_plus": 0,
          "busiest_hour": 15,
          "busiest_hour_mean": 8.01,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "EMA",
      "name": "East Midlands",
      "city": "Nottingham",
      "country": "United Kingdom",
      "publishes": "minutes",
      "how_published": "Average search wait per lane from the airport group MAG; we keep the longest lane in each zone, skip lanes with under 5 passengers and cap at 60",
      "published_by": "MAG",
      "days_with_data": 18,
      "hours_with_data": 293,
      "readings": 1601,
      "mean_wait": 3.83,
      "max_wait": 60,
      "hours_mean_15_plus": 1,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 03:00:00",
      "last_local_hour": "2026-10-18 16:00:00",
      "busiest_hour": {
        "hour": 5,
        "days": 18,
        "readings": 108,
        "mean_wait": 7.76,
        "max_wait": 20
      },
      "quietest_daytime_hour": {
        "hour": 16,
        "days": 17,
        "readings": 94,
        "mean_wait": 1.97,
        "max_wait": 11
      },
      "busiest_weekday": {
        "iso_dow": 4,
        "day": "Thursday",
        "days": 3,
        "hours": 50,
        "readings": 275,
        "mean_wait": 4.95,
        "max_wait": 37
      },
      "quietest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 2,
        "hours": 34,
        "readings": 163,
        "mean_wait": 2.6,
        "max_wait": 16
      },
      "worst_hour": {
        "local_hour": "2026-10-01 20:00:00",
        "mean_wait": 17,
        "readings": 2,
        "checkpoints": 1,
        "max_wait": 17
      },
      "missing_dates": [
        "2026-10-19",
        "2026-10-20"
      ],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 3,
          "days": 18,
          "readings": 109,
          "mean_wait": 2.12,
          "max_wait": 12
        },
        {
          "hour": 4,
          "days": 18,
          "readings": 108,
          "mean_wait": 6.38,
          "max_wait": 25
        },
        {
          "hour": 5,
          "days": 18,
          "readings": 108,
          "mean_wait": 7.76,
          "max_wait": 20
        },
        {
          "hour": 6,
          "days": 18,
          "readings": 105,
          "mean_wait": 5.82,
          "max_wait": 37
        },
        {
          "hour": 7,
          "days": 18,
          "readings": 88,
          "mean_wait": 4.28,
          "max_wait": 44
        },
        {
          "hour": 8,
          "days": 15,
          "readings": 84,
          "mean_wait": 2.65,
          "max_wait": 13
        },
        {
          "hour": 9,
          "days": 17,
          "readings": 97,
          "mean_wait": 2.05,
          "max_wait": 10
        },
        {
          "hour": 10,
          "days": 18,
          "readings": 104,
          "mean_wait": 2.17,
          "max_wait": 12
        },
        {
          "hour": 11,
          "days": 17,
          "readings": 103,
          "mean_wait": 4.45,
          "max_wait": 60
        },
        {
          "hour": 12,
          "days": 18,
          "readings": 104,
          "mean_wait": 4.89,
          "max_wait": 14
        },
        {
          "hour": 13,
          "days": 18,
          "readings": 108,
          "mean_wait": 4.12,
          "max_wait": 18
        },
        {
          "hour": 14,
          "days": 18,
          "readings": 106,
          "mean_wait": 3.75,
          "max_wait": 16
        },
        {
          "hour": 15,
          "days": 18,
          "readings": 92,
          "mean_wait": 3.58,
          "max_wait": 13
        },
        {
          "hour": 16,
          "days": 17,
          "readings": 94,
          "mean_wait": 1.97,
          "max_wait": 11
        },
        {
          "hour": 17,
          "days": 16,
          "readings": 77,
          "mean_wait": 2.19,
          "max_wait": 8
        },
        {
          "hour": 18,
          "days": 14,
          "readings": 55,
          "mean_wait": 2.48,
          "max_wait": 8
        },
        {
          "hour": 19,
          "days": 7,
          "readings": 26,
          "mean_wait": 2.23,
          "max_wait": 10
        },
        {
          "hour": 20,
          "days": 7,
          "readings": 26,
          "mean_wait": 2.08,
          "max_wait": 17
        },
        {
          "hour": 21,
          "days": 1,
          "readings": 5,
          "mean_wait": 0.6,
          "max_wait": 1
        },
        {
          "hour": 22,
          "days": 2,
          "readings": 2,
          "mean_wait": 0.5,
          "max_wait": 1
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 2,
          "hours": 32,
          "readings": 185,
          "mean_wait": 3.54,
          "max_wait": 44
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 2,
          "hours": 34,
          "readings": 163,
          "mean_wait": 2.6,
          "max_wait": 16
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 34,
          "readings": 183,
          "mean_wait": 3.07,
          "max_wait": 60
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 50,
          "readings": 275,
          "mean_wait": 4.95,
          "max_wait": 37
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 49,
          "readings": 282,
          "mean_wait": 4.09,
          "max_wait": 16
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 46,
          "readings": 255,
          "mean_wait": 3.93,
          "max_wait": 18
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 48,
          "readings": 258,
          "mean_wait": 3.8,
          "max_wait": 40
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 17,
          "readings": 82,
          "mean_wait": 4.73,
          "max_wait": 17
        },
        {
          "date": "2026-10-02",
          "hours": 16,
          "readings": 93,
          "mean_wait": 4.19,
          "max_wait": 16
        },
        {
          "date": "2026-10-03",
          "hours": 15,
          "readings": 85,
          "mean_wait": 3.19,
          "max_wait": 14
        },
        {
          "date": "2026-10-04",
          "hours": 20,
          "readings": 109,
          "mean_wait": 3.26,
          "max_wait": 40
        },
        {
          "date": "2026-10-05",
          "hours": 16,
          "readings": 93,
          "mean_wait": 3.89,
          "max_wait": 20
        },
        {
          "date": "2026-10-06",
          "hours": 16,
          "readings": 73,
          "mean_wait": 2.98,
          "max_wait": 13
        },
        {
          "date": "2026-10-07",
          "hours": 18,
          "readings": 102,
          "mean_wait": 2.58,
          "max_wait": 13
        },
        {
          "date": "2026-10-08",
          "hours": 15,
          "readings": 87,
          "mean_wait": 5.12,
          "max_wait": 37
        },
        {
          "date": "2026-10-09",
          "hours": 16,
          "readings": 94,
          "mean_wait": 3.51,
          "max_wait": 11
        },
        {
          "date": "2026-10-10",
          "hours": 15,
          "readings": 81,
          "mean_wait": 3.98,
          "max_wait": 18
        },
        {
          "date": "2026-10-11",
          "hours": 14,
          "readings": 70,
          "mean_wait": 3.87,
          "max_wait": 18
        },
        {
          "date": "2026-10-12",
          "hours": 16,
          "readings": 92,
          "mean_wait": 3.18,
          "max_wait": 44
        },
        {
          "date": "2026-10-13",
          "hours": 18,
          "readings": 90,
          "mean_wait": 2.29,
          "max_wait": 16
        },
        {
          "date": "2026-10-14",
          "hours": 16,
          "readings": 81,
          "mean_wait": 3.68,
          "max_wait": 60
        },
        {
          "date": "2026-10-15",
          "hours": 18,
          "readings": 106,
          "mean_wait": 4.99,
          "max_wait": 16
        },
        {
          "date": "2026-10-16",
          "hours": 17,
          "readings": 95,
          "mean_wait": 4.56,
          "max_wait": 16
        },
        {
          "date": "2026-10-17",
          "hours": 16,
          "readings": 89,
          "mean_wait": 4.6,
          "max_wait": 14
        },
        {
          "date": "2026-10-18",
          "hours": 14,
          "readings": 79,
          "mean_wait": 4.48,
          "max_wait": 12
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0.102,
      "checkpoints": [
        {
          "name": "Central search",
          "role": "main",
          "hours": 293,
          "days": 18,
          "readings": 1601,
          "mean_wait": 3.83,
          "max_wait": 60,
          "hours_mean_15_plus": 1,
          "hours_mean_30_plus": 0,
          "busiest_hour": 5,
          "busiest_hour_mean": 7.76,
          "busiest_hour_days": 18
        }
      ]
    },
    {
      "code": "FRA",
      "name": "Frankfurt",
      "city": "Frankfurt",
      "country": "Germany",
      "publishes": "bands",
      "how_published": "Phrases such as \"max. 5 minutes\" or \"10-20 minutes\"; we store the top figure",
      "published_by": "frankfurt-airport.com",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 19319,
      "mean_wait": 5.91,
      "max_wait": 30,
      "hours_mean_15_plus": 2,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 9,
        "days": 20,
        "readings": 879,
        "mean_wait": 8.04,
        "max_wait": 20
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 894,
        "mean_wait": 5.01,
        "max_wait": 10
      },
      "busiest_weekday": {
        "iso_dow": 6,
        "day": "Saturday",
        "days": 3,
        "hours": 72,
        "readings": 2824,
        "mean_wait": 6.67,
        "max_wait": 30
      },
      "quietest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 3,
        "hours": 72,
        "readings": 2886,
        "mean_wait": 5.24,
        "max_wait": 20
      },
      "worst_hour": {
        "local_hour": "2026-10-17 12:00:00",
        "mean_wait": 15.97,
        "readings": 42,
        "checkpoints": 3,
        "max_wait": 30
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 608,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 590,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 600,
          "mean_wait": 5.14,
          "max_wait": 30
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 600,
          "mean_wait": 5.41,
          "max_wait": 20
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 595,
          "mean_wait": 5.02,
          "max_wait": 10
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 744,
          "mean_wait": 5.15,
          "max_wait": 20
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 906,
          "mean_wait": 5.56,
          "max_wait": 20
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 893,
          "mean_wait": 5.94,
          "max_wait": 20
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 931,
          "mean_wait": 6.58,
          "max_wait": 30
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 879,
          "mean_wait": 8.04,
          "max_wait": 20
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 901,
          "mean_wait": 7.93,
          "max_wait": 30
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 880,
          "mean_wait": 6.83,
          "max_wait": 30
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 893,
          "mean_wait": 7.3,
          "max_wait": 30
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 897,
          "mean_wait": 6.48,
          "max_wait": 30
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 902,
          "mean_wait": 5.91,
          "max_wait": 30
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 886,
          "mean_wait": 5.36,
          "max_wait": 30
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 825,
          "mean_wait": 5.12,
          "max_wait": 20
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 887,
          "mean_wait": 5.4,
          "max_wait": 20
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 884,
          "mean_wait": 6.05,
          "max_wait": 20
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 878,
          "mean_wait": 6.24,
          "max_wait": 20
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 909,
          "mean_wait": 5.36,
          "max_wait": 20
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 894,
          "mean_wait": 5.01,
          "max_wait": 10
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 750,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 587,
          "mean_wait": 5,
          "max_wait": 5
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 2880,
          "mean_wait": 5.69,
          "max_wait": 30
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 2886,
          "mean_wait": 5.24,
          "max_wait": 20
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 2004,
          "mean_wait": 5.61,
          "max_wait": 30
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 2975,
          "mean_wait": 6.07,
          "max_wait": 30
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 2982,
          "mean_wait": 6.05,
          "max_wait": 20
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 2824,
          "mean_wait": 6.67,
          "max_wait": 30
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 2768,
          "mean_wait": 5.95,
          "max_wait": 30
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 927,
          "mean_wait": 5.98,
          "max_wait": 20
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 1029,
          "mean_wait": 5.87,
          "max_wait": 20
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 924,
          "mean_wait": 5.73,
          "max_wait": 20
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 921,
          "mean_wait": 5.6,
          "max_wait": 20
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 929,
          "mean_wait": 5.62,
          "max_wait": 20
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 1027,
          "mean_wait": 5.24,
          "max_wait": 20
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 1028,
          "mean_wait": 5.58,
          "max_wait": 20
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 1023,
          "mean_wait": 6.36,
          "max_wait": 30
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 1023,
          "mean_wait": 6.06,
          "max_wait": 20
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 930,
          "mean_wait": 6.91,
          "max_wait": 20
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 929,
          "mean_wait": 6.16,
          "max_wait": 20
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 1025,
          "mean_wait": 6.04,
          "max_wait": 30
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 939,
          "mean_wait": 5.28,
          "max_wait": 20
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 976,
          "mean_wait": 5.64,
          "max_wait": 30
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 1025,
          "mean_wait": 5.84,
          "max_wait": 20
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 930,
          "mean_wait": 6.22,
          "max_wait": 20
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 970,
          "mean_wait": 7.33,
          "max_wait": 30
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 918,
          "mean_wait": 6.1,
          "max_wait": 30
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 926,
          "mean_wait": 5.36,
          "max_wait": 20
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 920,
          "mean_wait": 5.21,
          "max_wait": 20
        }
      ],
      "band_shares_oct_7_to_20": [
        {
          "minutes": 5,
          "share": 0.883,
          "raw_readings": 11985
        },
        {
          "minutes": 10,
          "share": 0.077,
          "raw_readings": 1045
        },
        {
          "minutes": 20,
          "share": 0.039,
          "raw_readings": 527
        },
        {
          "minutes": 30,
          "share": 0.002,
          "raw_readings": 21
        }
      ],
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Terminal 1, concourse A",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 8724,
          "mean_wait": 5.67,
          "max_wait": 20,
          "hours_mean_15_plus": 2,
          "hours_mean_30_plus": 0,
          "busiest_hour": 9,
          "busiest_hour_mean": 7.92,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 1, concourse B",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 8607,
          "mean_wait": 6.25,
          "max_wait": 30,
          "hours_mean_15_plus": 7,
          "hours_mean_30_plus": 0,
          "busiest_hour": 10,
          "busiest_hour_mean": 9.29,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 1, concourse C",
          "role": "main",
          "hours": 340,
          "days": 20,
          "readings": 1988,
          "mean_wait": 5.47,
          "max_wait": 20,
          "hours_mean_15_plus": 7,
          "hours_mean_30_plus": 0,
          "busiest_hour": 19,
          "busiest_hour_mean": 6.9,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "GOT",
      "name": "Gothenburg Landvetter",
      "city": "Gothenburg",
      "country": "Sweden",
      "publishes": "bands",
      "how_published": "Ranges such as 5-10 minutes, from Swedavia; we store the top of the range",
      "published_by": "swedavia.com",
      "days_with_data": 17,
      "hours_with_data": 339,
      "readings": 1974,
      "mean_wait": 10.72,
      "max_wait": 30,
      "hours_mean_15_plus": 18,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 5,
        "days": 14,
        "readings": 79,
        "mean_wait": 13.55,
        "max_wait": 30
      },
      "quietest_daytime_hour": {
        "hour": 14,
        "days": 14,
        "readings": 82,
        "mean_wait": 10,
        "max_wait": 10
      },
      "busiest_weekday": {
        "iso_dow": 4,
        "day": "Thursday",
        "days": 3,
        "hours": 72,
        "readings": 430,
        "mean_wait": 11.6,
        "max_wait": 30
      },
      "quietest_weekday": {
        "iso_dow": 7,
        "day": "Sunday",
        "days": 2,
        "hours": 23,
        "readings": 133,
        "mean_wait": 10.04,
        "max_wait": 15
      },
      "worst_hour": {
        "local_hour": "2026-10-08 05:00:00",
        "mean_wait": 25,
        "readings": 6,
        "checkpoints": 1,
        "max_wait": 30
      },
      "missing_dates": [
        "2026-10-03",
        "2026-10-11",
        "2026-10-12"
      ],
      "thin_dates": [
        "2026-10-02",
        "2026-10-13",
        "2026-10-18"
      ],
      "by_hour": [
        {
          "hour": 0,
          "days": 15,
          "readings": 85,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "hour": 1,
          "days": 15,
          "readings": 83,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "hour": 2,
          "days": 14,
          "readings": 81,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "hour": 3,
          "days": 13,
          "readings": 78,
          "mean_wait": 10.06,
          "max_wait": 15
        },
        {
          "hour": 4,
          "days": 13,
          "readings": 76,
          "mean_wait": 10.99,
          "max_wait": 20
        },
        {
          "hour": 5,
          "days": 14,
          "readings": 79,
          "mean_wait": 13.55,
          "max_wait": 30
        },
        {
          "hour": 6,
          "days": 14,
          "readings": 83,
          "mean_wait": 10.79,
          "max_wait": 25
        },
        {
          "hour": 7,
          "days": 15,
          "readings": 80,
          "mean_wait": 10.12,
          "max_wait": 15
        },
        {
          "hour": 8,
          "days": 14,
          "readings": 84,
          "mean_wait": 10.53,
          "max_wait": 20
        },
        {
          "hour": 9,
          "days": 15,
          "readings": 90,
          "mean_wait": 10.39,
          "max_wait": 15
        },
        {
          "hour": 10,
          "days": 15,
          "readings": 88,
          "mean_wait": 12.84,
          "max_wait": 25
        },
        {
          "hour": 11,
          "days": 15,
          "readings": 84,
          "mean_wait": 12.33,
          "max_wait": 25
        },
        {
          "hour": 12,
          "days": 13,
          "readings": 78,
          "mean_wait": 10.95,
          "max_wait": 20
        },
        {
          "hour": 13,
          "days": 13,
          "readings": 78,
          "mean_wait": 10.12,
          "max_wait": 15
        },
        {
          "hour": 14,
          "days": 14,
          "readings": 82,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "hour": 15,
          "days": 14,
          "readings": 82,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "hour": 16,
          "days": 14,
          "readings": 82,
          "mean_wait": 11.58,
          "max_wait": 25
        },
        {
          "hour": 17,
          "days": 14,
          "readings": 82,
          "mean_wait": 12.62,
          "max_wait": 25
        },
        {
          "hour": 18,
          "days": 14,
          "readings": 80,
          "mean_wait": 10.38,
          "max_wait": 20
        },
        {
          "hour": 19,
          "days": 14,
          "readings": 81,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "hour": 20,
          "days": 14,
          "readings": 84,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "hour": 21,
          "days": 14,
          "readings": 84,
          "mean_wait": 10.06,
          "max_wait": 15
        },
        {
          "hour": 22,
          "days": 14,
          "readings": 84,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "hour": 23,
          "days": 15,
          "readings": 86,
          "mean_wait": 10,
          "max_wait": 10
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 2,
          "hours": 42,
          "readings": 223,
          "mean_wait": 10.47,
          "max_wait": 20
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 57,
          "readings": 330,
          "mean_wait": 10.21,
          "max_wait": 20
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 47,
          "readings": 273,
          "mean_wait": 10.6,
          "max_wait": 25
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 430,
          "mean_wait": 11.6,
          "max_wait": 30
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 56,
          "readings": 333,
          "mean_wait": 10.93,
          "max_wait": 25
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 2,
          "hours": 42,
          "readings": 252,
          "mean_wait": 10.32,
          "max_wait": 20
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 2,
          "hours": 23,
          "readings": 133,
          "mean_wait": 10.04,
          "max_wait": 15
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 144,
          "mean_wait": 12.19,
          "max_wait": 25
        },
        {
          "date": "2026-10-02",
          "hours": 8,
          "readings": 45,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "date": "2026-10-04",
          "hours": 18,
          "readings": 108,
          "mean_wait": 10,
          "max_wait": 10
        },
        {
          "date": "2026-10-05",
          "hours": 22,
          "readings": 122,
          "mean_wait": 10.12,
          "max_wait": 15
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 144,
          "mean_wait": 10.1,
          "max_wait": 15
        },
        {
          "date": "2026-10-07",
          "hours": 23,
          "readings": 133,
          "mean_wait": 10.3,
          "max_wait": 15
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 144,
          "mean_wait": 12.01,
          "max_wait": 30
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 144,
          "mean_wait": 11.25,
          "max_wait": 25
        },
        {
          "date": "2026-10-10",
          "hours": 18,
          "readings": 108,
          "mean_wait": 10.37,
          "max_wait": 15
        },
        {
          "date": "2026-10-13",
          "hours": 9,
          "readings": 42,
          "mean_wait": 10.24,
          "max_wait": 15
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 140,
          "mean_wait": 10.89,
          "max_wait": 25
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 142,
          "mean_wait": 10.6,
          "max_wait": 20
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 144,
          "mean_wait": 10.9,
          "max_wait": 20
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 144,
          "mean_wait": 10.28,
          "max_wait": 20
        },
        {
          "date": "2026-10-18",
          "hours": 5,
          "readings": 25,
          "mean_wait": 10.19,
          "max_wait": 15
        },
        {
          "date": "2026-10-19",
          "hours": 20,
          "readings": 101,
          "mean_wait": 10.89,
          "max_wait": 20
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 144,
          "mean_wait": 10.31,
          "max_wait": 20
        }
      ],
      "band_shares_oct_7_to_20": [
        {
          "minutes": 10,
          "share": 0.894,
          "raw_readings": 1261
        },
        {
          "minutes": 15,
          "share": 0.07,
          "raw_readings": 99
        },
        {
          "minutes": 20,
          "share": 0.026,
          "raw_readings": 37
        },
        {
          "minutes": 25,
          "share": 0.009,
          "raw_readings": 13
        },
        {
          "minutes": 30,
          "share": 0.001,
          "raw_readings": 1
        }
      ],
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Central security",
          "role": "main",
          "hours": 339,
          "days": 17,
          "readings": 1974,
          "mean_wait": 10.72,
          "max_wait": 30,
          "hours_mean_15_plus": 18,
          "hours_mean_30_plus": 0,
          "busiest_hour": 5,
          "busiest_hour_mean": 13.55,
          "busiest_hour_days": 14
        }
      ]
    },
    {
      "code": "HAM",
      "name": "Hamburg",
      "city": "Hamburg",
      "country": "Germany",
      "publishes": "bands",
      "how_published": "Ranges such as under 1 or 1-10 minutes; we store the top of the range",
      "published_by": "hamburg-airport.de",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 2870,
      "mean_wait": 8.34,
      "max_wait": 45,
      "hours_mean_15_plus": 64,
      "hours_mean_30_plus": 1,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 13,
        "days": 20,
        "readings": 118,
        "mean_wait": 15.59,
        "max_wait": 45
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 120,
        "mean_wait": 1.45,
        "max_wait": 10
      },
      "busiest_weekday": {
        "iso_dow": 3,
        "day": "Wednesday",
        "days": 2,
        "hours": 48,
        "readings": 287,
        "mean_wait": 10.47,
        "max_wait": 45
      },
      "quietest_weekday": {
        "iso_dow": 6,
        "day": "Saturday",
        "days": 3,
        "hours": 72,
        "readings": 432,
        "mean_wait": 6.98,
        "max_wait": 30
      },
      "worst_hour": {
        "local_hour": "2026-10-05 13:00:00",
        "mean_wait": 30,
        "readings": 6,
        "checkpoints": 1,
        "max_wait": 45
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 120,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 114,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 124,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 119,
          "mean_wait": 3.57,
          "max_wait": 10
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 117,
          "mean_wait": 10.85,
          "max_wait": 30
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 123,
          "mean_wait": 14.96,
          "max_wait": 30
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 120,
          "mean_wait": 10.08,
          "max_wait": 30
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 120,
          "mean_wait": 9.88,
          "max_wait": 20
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 123,
          "mean_wait": 12.93,
          "max_wait": 30
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 119,
          "mean_wait": 12.13,
          "max_wait": 30
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 119,
          "mean_wait": 12.9,
          "max_wait": 45
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 121,
          "mean_wait": 10.36,
          "max_wait": 20
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 120,
          "mean_wait": 11.68,
          "max_wait": 30
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 118,
          "mean_wait": 15.59,
          "max_wait": 45
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 117,
          "mean_wait": 11.95,
          "max_wait": 30
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 123,
          "mean_wait": 10.17,
          "max_wait": 45
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 116,
          "mean_wait": 12.64,
          "max_wait": 45
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 119,
          "mean_wait": 12.22,
          "max_wait": 20
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 120,
          "mean_wait": 9.82,
          "max_wait": 20
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 118,
          "mean_wait": 7.02,
          "max_wait": 20
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 119,
          "mean_wait": 4.89,
          "max_wait": 20
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 120,
          "mean_wait": 1.45,
          "max_wait": 10
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 120,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 121,
          "mean_wait": 1,
          "max_wait": 1
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 431,
          "mean_wait": 8.94,
          "max_wait": 45
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 423,
          "mean_wait": 8.65,
          "max_wait": 30
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 287,
          "mean_wait": 10.47,
          "max_wait": 45
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 8.51,
          "max_wait": 30
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 433,
          "mean_wait": 8.08,
          "max_wait": 20
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 6.98,
          "max_wait": 30
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 7.43,
          "max_wait": 30
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.97,
          "max_wait": 20
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 144,
          "mean_wait": 8.91,
          "max_wait": 20
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.55,
          "max_wait": 20
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.76,
          "max_wait": 20
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 144,
          "mean_wait": 9.69,
          "max_wait": 45
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.84,
          "max_wait": 30
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 144,
          "mean_wait": 10.51,
          "max_wait": 45
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 143,
          "mean_wait": 9.14,
          "max_wait": 30
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 145,
          "mean_wait": 8.28,
          "max_wait": 20
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.05,
          "max_wait": 20
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.74,
          "max_wait": 30
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 144,
          "mean_wait": 8.64,
          "max_wait": 20
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 134,
          "mean_wait": 10.31,
          "max_wait": 30
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 143,
          "mean_wait": 10.43,
          "max_wait": 45
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 145,
          "mean_wait": 8.44,
          "max_wait": 30
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.05,
          "max_wait": 20
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.34,
          "max_wait": 30
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 144,
          "mean_wait": 7.8,
          "max_wait": 20
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 143,
          "mean_wait": 8.49,
          "max_wait": 20
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 145,
          "mean_wait": 7.93,
          "max_wait": 20
        }
      ],
      "band_shares_oct_7_to_20": [
        {
          "minutes": 1,
          "share": 0.341,
          "raw_readings": 684
        },
        {
          "minutes": 10,
          "share": 0.523,
          "raw_readings": 1049
        },
        {
          "minutes": 20,
          "share": 0.119,
          "raw_readings": 238
        },
        {
          "minutes": 30,
          "share": 0.016,
          "raw_readings": 33
        },
        {
          "minutes": 45,
          "share": 0.001,
          "raw_readings": 3
        }
      ],
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Central security",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 2870,
          "mean_wait": 8.34,
          "max_wait": 45,
          "hours_mean_15_plus": 64,
          "hours_mean_30_plus": 1,
          "busiest_hour": 13,
          "busiest_hour_mean": 15.59,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "HEL",
      "name": "Helsinki-Vantaa",
      "city": "Helsinki",
      "country": "Finland",
      "publishes": "minutes",
      "how_published": "Average wait in the latest half-hour, from Finavia",
      "published_by": "finavia.fi",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 958,
      "mean_wait": 1.35,
      "max_wait": 20,
      "hours_mean_15_plus": 3,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 6,
        "days": 20,
        "readings": 40,
        "mean_wait": 6.63,
        "max_wait": 20
      },
      "quietest_daytime_hour": {
        "hour": 12,
        "days": 20,
        "readings": 40,
        "mean_wait": 0,
        "max_wait": 0
      },
      "busiest_weekday": {
        "iso_dow": 1,
        "day": "Monday",
        "days": 3,
        "hours": 72,
        "readings": 144,
        "mean_wait": 2.01,
        "max_wait": 17
      },
      "quietest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 3,
        "hours": 72,
        "readings": 142,
        "mean_wait": 0.86,
        "max_wait": 19
      },
      "worst_hour": {
        "local_hour": "2026-10-03 05:00:00",
        "mean_wait": 16.5,
        "readings": 2,
        "checkpoints": 1,
        "max_wait": 17
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 40,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 40,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 40,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.35,
          "max_wait": 2
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 40,
          "mean_wait": 2.38,
          "max_wait": 10
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 40,
          "mean_wait": 5.83,
          "max_wait": 17
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 40,
          "mean_wait": 6.63,
          "max_wait": 20
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.2,
          "max_wait": 4
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.6,
          "max_wait": 8
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.5,
          "max_wait": 9
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 40,
          "mean_wait": 1.48,
          "max_wait": 13
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.18,
          "max_wait": 4
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 40,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.03,
          "max_wait": 1
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 40,
          "mean_wait": 5.33,
          "max_wait": 15
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 40,
          "mean_wait": 5.3,
          "max_wait": 19
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.2,
          "max_wait": 7
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 39,
          "mean_wait": 0.15,
          "max_wait": 2
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.88,
          "max_wait": 15
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.23,
          "max_wait": 9
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 39,
          "mean_wait": 0.31,
          "max_wait": 4
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.43,
          "max_wait": 8
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.83,
          "max_wait": 11
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 40,
          "mean_wait": 0.45,
          "max_wait": 11
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 144,
          "mean_wait": 2.01,
          "max_wait": 17
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 142,
          "mean_wait": 0.86,
          "max_wait": 19
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 96,
          "mean_wait": 1.38,
          "max_wait": 13
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 144,
          "mean_wait": 1.07,
          "max_wait": 14
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 144,
          "mean_wait": 1.26,
          "max_wait": 15
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 144,
          "mean_wait": 1.76,
          "max_wait": 20
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 144,
          "mean_wait": 1.09,
          "max_wait": 15
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 48,
          "mean_wait": 0.73,
          "max_wait": 9
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.83,
          "max_wait": 15
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.56,
          "max_wait": 19
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.02,
          "max_wait": 9
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 48,
          "mean_wait": 2.13,
          "max_wait": 15
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 48,
          "mean_wait": 2.06,
          "max_wait": 19
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.54,
          "max_wait": 13
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.15,
          "max_wait": 14
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.08,
          "max_wait": 12
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 48,
          "mean_wait": 2.25,
          "max_wait": 20
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.21,
          "max_wait": 15
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.83,
          "max_wait": 13
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 46,
          "mean_wait": 0.3,
          "max_wait": 5
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.21,
          "max_wait": 11
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.33,
          "max_wait": 14
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 48,
          "mean_wait": 0.88,
          "max_wait": 11
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.46,
          "max_wait": 13
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 48,
          "mean_wait": 1.04,
          "max_wait": 12
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 48,
          "mean_wait": 2.06,
          "max_wait": 17
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 48,
          "mean_wait": 0.19,
          "max_wait": 4
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0.749,
      "checkpoints": [
        {
          "name": "Departure hall security",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 958,
          "mean_wait": 1.35,
          "max_wait": 20,
          "hours_mean_15_plus": 3,
          "hours_mean_30_plus": 0,
          "busiest_hour": 6,
          "busiest_hour_mean": 6.63,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "IST",
      "name": "Istanbul",
      "city": "Istanbul",
      "country": "Turkey",
      "publishes": "minutes",
      "how_published": "Minutes per checkpoint",
      "published_by": "istairport.com",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 5740,
      "mean_wait": 2.28,
      "max_wait": 15,
      "hours_mean_15_plus": 0,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 12,
        "days": 20,
        "readings": 240,
        "mean_wait": 3.53,
        "max_wait": 12
      },
      "quietest_daytime_hour": {
        "hour": 19,
        "days": 20,
        "readings": 236,
        "mean_wait": 1.78,
        "max_wait": 7
      },
      "busiest_weekday": {
        "iso_dow": 7,
        "day": "Sunday",
        "days": 3,
        "hours": 72,
        "readings": 864,
        "mean_wait": 2.47,
        "max_wait": 12
      },
      "quietest_weekday": {
        "iso_dow": 1,
        "day": "Monday",
        "days": 3,
        "hours": 72,
        "readings": 864,
        "mean_wait": 2.1,
        "max_wait": 14
      },
      "worst_hour": {
        "local_hour": "2026-10-16 11:00:00",
        "mean_wait": 4.65,
        "readings": 12,
        "checkpoints": 2,
        "max_wait": 11
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 240,
          "mean_wait": 1.61,
          "max_wait": 12
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 240,
          "mean_wait": 1.74,
          "max_wait": 11
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 240,
          "mean_wait": 1.67,
          "max_wait": 9
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 240,
          "mean_wait": 1.85,
          "max_wait": 10
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.82,
          "max_wait": 11
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.58,
          "max_wait": 9
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.24,
          "max_wait": 12
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.27,
          "max_wait": 10
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.21,
          "max_wait": 9
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.61,
          "max_wait": 11
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.8,
          "max_wait": 9
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 240,
          "mean_wait": 3.21,
          "max_wait": 15
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 240,
          "mean_wait": 3.53,
          "max_wait": 12
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 240,
          "mean_wait": 3.04,
          "max_wait": 14
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.36,
          "max_wait": 9
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.39,
          "max_wait": 9
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 238,
          "mean_wait": 2.19,
          "max_wait": 7
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 232,
          "mean_wait": 2.47,
          "max_wait": 10
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 240,
          "mean_wait": 2.26,
          "max_wait": 9
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 236,
          "mean_wait": 1.78,
          "max_wait": 7
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 234,
          "mean_wait": 1.87,
          "max_wait": 9
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 240,
          "mean_wait": 1.93,
          "max_wait": 9
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 240,
          "mean_wait": 1.71,
          "max_wait": 7
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 240,
          "mean_wait": 1.68,
          "max_wait": 10
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 864,
          "mean_wait": 2.1,
          "max_wait": 14
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 844,
          "mean_wait": 2.18,
          "max_wait": 11
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 576,
          "mean_wait": 2.23,
          "max_wait": 12
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 864,
          "mean_wait": 2.3,
          "max_wait": 10
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 864,
          "mean_wait": 2.31,
          "max_wait": 11
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 864,
          "mean_wait": 2.38,
          "max_wait": 15
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 864,
          "mean_wait": 2.47,
          "max_wait": 12
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.26,
          "max_wait": 10
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.41,
          "max_wait": 11
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.58,
          "max_wait": 12
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.48,
          "max_wait": 9
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.14,
          "max_wait": 14
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.29,
          "max_wait": 11
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.1,
          "max_wait": 12
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.1,
          "max_wait": 7
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.11,
          "max_wait": 9
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.13,
          "max_wait": 11
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.23,
          "max_wait": 9
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.04,
          "max_wait": 9
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 268,
          "mean_wait": 2.21,
          "max_wait": 9
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.36,
          "max_wait": 10
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.56,
          "max_wait": 9
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.4,
          "max_wait": 11
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.42,
          "max_wait": 15
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.69,
          "max_wait": 12
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.11,
          "max_wait": 9
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 288,
          "mean_wait": 2.04,
          "max_wait": 9
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Domestic departures",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 2870,
          "mean_wait": 1.88,
          "max_wait": 12,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 6,
          "busiest_hour_mean": 2.1,
          "busiest_hour_days": 20
        },
        {
          "name": "International departures",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 2870,
          "mean_wait": 2.69,
          "max_wait": 15,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 12,
          "busiest_hour_mean": 5.2,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "LHR",
      "name": "London Heathrow",
      "city": "London",
      "country": "United Kingdom",
      "publishes": "bands",
      "how_published": "Ranges such as under 5 or 5-10 minutes; we store the top of the range",
      "published_by": "heathrow.com",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 9570,
      "mean_wait": 5.15,
      "max_wait": 15,
      "hours_mean_15_plus": 0,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 4,
        "days": 20,
        "readings": 400,
        "mean_wait": 5.52,
        "max_wait": 15
      },
      "quietest_daytime_hour": {
        "hour": 20,
        "days": 20,
        "readings": 400,
        "mean_wait": 5.03,
        "max_wait": 10
      },
      "busiest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 3,
        "hours": 72,
        "readings": 1410,
        "mean_wait": 5.22,
        "max_wait": 15
      },
      "quietest_weekday": {
        "iso_dow": 5,
        "day": "Friday",
        "days": 3,
        "hours": 72,
        "readings": 1440,
        "mean_wait": 5.1,
        "max_wait": 15
      },
      "worst_hour": {
        "local_hour": "2026-10-13 10:00:00",
        "mean_wait": 6.52,
        "readings": 20,
        "checkpoints": 5,
        "max_wait": 10
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 400,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 400,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 400,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 400,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.52,
          "max_wait": 15
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.17,
          "max_wait": 15
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.04,
          "max_wait": 10
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.14,
          "max_wait": 15
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.19,
          "max_wait": 10
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.24,
          "max_wait": 10
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.36,
          "max_wait": 10
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.32,
          "max_wait": 15
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.28,
          "max_wait": 10
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.23,
          "max_wait": 15
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.22,
          "max_wait": 10
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 385,
          "mean_wait": 5.17,
          "max_wait": 15
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 395,
          "mean_wait": 5.09,
          "max_wait": 10
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 395,
          "mean_wait": 5.2,
          "max_wait": 10
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 395,
          "mean_wait": 5.13,
          "max_wait": 10
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.15,
          "max_wait": 10
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.03,
          "max_wait": 10
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 400,
          "mean_wait": 5.03,
          "max_wait": 10
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 400,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 400,
          "mean_wait": 5,
          "max_wait": 5
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 1440,
          "mean_wait": 5.18,
          "max_wait": 15
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 1410,
          "mean_wait": 5.22,
          "max_wait": 15
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 960,
          "mean_wait": 5.15,
          "max_wait": 10
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 1440,
          "mean_wait": 5.11,
          "max_wait": 10
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 1440,
          "mean_wait": 5.1,
          "max_wait": 15
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 1440,
          "mean_wait": 5.14,
          "max_wait": 15
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 1440,
          "mean_wait": 5.12,
          "max_wait": 10
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.03,
          "max_wait": 10
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.11,
          "max_wait": 15
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.11,
          "max_wait": 10
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.06,
          "max_wait": 10
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.1,
          "max_wait": 10
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.09,
          "max_wait": 10
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.09,
          "max_wait": 10
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.11,
          "max_wait": 10
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.1,
          "max_wait": 10
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.15,
          "max_wait": 15
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.16,
          "max_wait": 10
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.26,
          "max_wait": 15
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 450,
          "mean_wait": 5.32,
          "max_wait": 15
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.2,
          "max_wait": 10
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.2,
          "max_wait": 10
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.1,
          "max_wait": 15
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.17,
          "max_wait": 15
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.14,
          "max_wait": 10
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.2,
          "max_wait": 15
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 480,
          "mean_wait": 5.26,
          "max_wait": 15
        }
      ],
      "band_shares_oct_7_to_20": [
        {
          "minutes": 5,
          "share": 0.968,
          "raw_readings": 6485
        },
        {
          "minutes": 10,
          "share": 0.03,
          "raw_readings": 203
        },
        {
          "minutes": 15,
          "share": 0.002,
          "raw_readings": 12
        }
      ],
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Terminal 2",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 1914,
          "mean_wait": 5.18,
          "max_wait": 15,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 4,
          "busiest_hour_mean": 6.91,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 3",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 1914,
          "mean_wait": 5.15,
          "max_wait": 15,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 4,
          "busiest_hour_mean": 5.7,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 4",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 1914,
          "mean_wait": 5.06,
          "max_wait": 10,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 13,
          "busiest_hour_mean": 5.45,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 5 North",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 1914,
          "mean_wait": 5.16,
          "max_wait": 15,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 10,
          "busiest_hour_mean": 5.64,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 5 South",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 1914,
          "mean_wait": 5.18,
          "max_wait": 15,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 10,
          "busiest_hour_mean": 5.89,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 2 connections",
          "role": "transfer",
          "hours": 480,
          "days": 20,
          "readings": 1914,
          "mean_wait": 6.02,
          "max_wait": 25,
          "hours_mean_15_plus": 25,
          "hours_mean_30_plus": 0,
          "busiest_hour": 9,
          "busiest_hour_mean": 7.2,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 3 connections",
          "role": "transfer",
          "hours": 480,
          "days": 20,
          "readings": 1914,
          "mean_wait": 5.95,
          "max_wait": 25,
          "hours_mean_15_plus": 17,
          "hours_mean_30_plus": 0,
          "busiest_hour": 19,
          "busiest_hour_mean": 8.2,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 4 connections",
          "role": "transfer",
          "hours": 480,
          "days": 20,
          "readings": 1914,
          "mean_wait": 5,
          "max_wait": 5,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 0,
          "busiest_hour_mean": 5,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 5 connections",
          "role": "transfer",
          "hours": 337,
          "days": 20,
          "readings": 1257,
          "mean_wait": 6.71,
          "max_wait": 25,
          "hours_mean_15_plus": 9,
          "hours_mean_30_plus": 0,
          "busiest_hour": 11,
          "busiest_hour_mean": 10.47,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "MAD",
      "name": "Madrid-Barajas",
      "city": "Madrid",
      "country": "Spain",
      "publishes": "bands",
      "how_published": "Ranges such as under 5 or 5-10 minutes, from Aena; we store the top of the range",
      "published_by": "aena.es",
      "days_with_data": 16,
      "hours_with_data": 288,
      "readings": 11753,
      "mean_wait": 5.58,
      "max_wait": 20,
      "hours_mean_15_plus": 0,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 07:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 4,
        "days": 11,
        "readings": 382,
        "mean_wait": 7.39,
        "max_wait": 20
      },
      "quietest_daytime_hour": {
        "hour": 14,
        "days": 12,
        "readings": 537,
        "mean_wait": 5.21,
        "max_wait": 10
      },
      "busiest_weekday": {
        "iso_dow": 1,
        "day": "Monday",
        "days": 2,
        "hours": 41,
        "readings": 1518,
        "mean_wait": 5.89,
        "max_wait": 20
      },
      "quietest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 3,
        "hours": 57,
        "readings": 2331,
        "mean_wait": 5.36,
        "max_wait": 20
      },
      "worst_hour": {
        "local_hour": "2026-10-10 04:00:00",
        "mean_wait": 9.73,
        "readings": 36,
        "checkpoints": 3,
        "max_wait": 20
      },
      "missing_dates": [
        "2026-10-03",
        "2026-10-11",
        "2026-10-12",
        "2026-10-16"
      ],
      "thin_dates": [
        "2026-10-02",
        "2026-10-13",
        "2026-10-15",
        "2026-10-18"
      ],
      "by_hour": [
        {
          "hour": 0,
          "days": 11,
          "readings": 389,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 1,
          "days": 12,
          "readings": 354,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "hour": 2,
          "days": 11,
          "readings": 356,
          "mean_wait": 5.02,
          "max_wait": 10
        },
        {
          "hour": 3,
          "days": 11,
          "readings": 366,
          "mean_wait": 5.42,
          "max_wait": 20
        },
        {
          "hour": 4,
          "days": 11,
          "readings": 382,
          "mean_wait": 7.39,
          "max_wait": 20
        },
        {
          "hour": 5,
          "days": 12,
          "readings": 524,
          "mean_wait": 6.4,
          "max_wait": 20
        },
        {
          "hour": 6,
          "days": 12,
          "readings": 534,
          "mean_wait": 5.38,
          "max_wait": 10
        },
        {
          "hour": 7,
          "days": 13,
          "readings": 516,
          "mean_wait": 5.69,
          "max_wait": 20
        },
        {
          "hour": 8,
          "days": 12,
          "readings": 564,
          "mean_wait": 5.89,
          "max_wait": 20
        },
        {
          "hour": 9,
          "days": 13,
          "readings": 593,
          "mean_wait": 5.54,
          "max_wait": 10
        },
        {
          "hour": 10,
          "days": 13,
          "readings": 591,
          "mean_wait": 6.23,
          "max_wait": 20
        },
        {
          "hour": 11,
          "days": 13,
          "readings": 554,
          "mean_wait": 5.73,
          "max_wait": 20
        },
        {
          "hour": 12,
          "days": 11,
          "readings": 526,
          "mean_wait": 5.53,
          "max_wait": 20
        },
        {
          "hour": 13,
          "days": 11,
          "readings": 519,
          "mean_wait": 5.31,
          "max_wait": 10
        },
        {
          "hour": 14,
          "days": 12,
          "readings": 537,
          "mean_wait": 5.21,
          "max_wait": 10
        },
        {
          "hour": 15,
          "days": 12,
          "readings": 539,
          "mean_wait": 5.21,
          "max_wait": 10
        },
        {
          "hour": 16,
          "days": 12,
          "readings": 549,
          "mean_wait": 5.59,
          "max_wait": 20
        },
        {
          "hour": 17,
          "days": 12,
          "readings": 567,
          "mean_wait": 5.73,
          "max_wait": 20
        },
        {
          "hour": 18,
          "days": 13,
          "readings": 531,
          "mean_wait": 5.95,
          "max_wait": 20
        },
        {
          "hour": 19,
          "days": 12,
          "readings": 408,
          "mean_wait": 5.61,
          "max_wait": 20
        },
        {
          "hour": 20,
          "days": 12,
          "readings": 431,
          "mean_wait": 5.57,
          "max_wait": 10
        },
        {
          "hour": 21,
          "days": 12,
          "readings": 474,
          "mean_wait": 5.31,
          "max_wait": 10
        },
        {
          "hour": 22,
          "days": 12,
          "readings": 483,
          "mean_wait": 5.02,
          "max_wait": 10
        },
        {
          "hour": 23,
          "days": 13,
          "readings": 466,
          "mean_wait": 5,
          "max_wait": 5
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 2,
          "hours": 41,
          "readings": 1518,
          "mean_wait": 5.89,
          "max_wait": 20
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 57,
          "readings": 2331,
          "mean_wait": 5.36,
          "max_wait": 20
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 47,
          "readings": 1966,
          "mean_wait": 5.39,
          "max_wait": 20
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 48,
          "readings": 2027,
          "mean_wait": 5.66,
          "max_wait": 20
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 2,
          "hours": 32,
          "readings": 1306,
          "mean_wait": 5.65,
          "max_wait": 20
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 2,
          "hours": 40,
          "readings": 1677,
          "mean_wait": 5.79,
          "max_wait": 20
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 2,
          "hours": 23,
          "readings": 928,
          "mean_wait": 5.44,
          "max_wait": 20
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 17,
          "readings": 749,
          "mean_wait": 5.59,
          "max_wait": 10
        },
        {
          "date": "2026-10-02",
          "hours": 8,
          "readings": 288,
          "mean_wait": 5.1,
          "max_wait": 10
        },
        {
          "date": "2026-10-04",
          "hours": 18,
          "readings": 790,
          "mean_wait": 5.52,
          "max_wait": 20
        },
        {
          "date": "2026-10-05",
          "hours": 22,
          "readings": 805,
          "mean_wait": 5.96,
          "max_wait": 20
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 1041,
          "mean_wait": 5.46,
          "max_wait": 20
        },
        {
          "date": "2026-10-07",
          "hours": 23,
          "readings": 965,
          "mean_wait": 5.46,
          "max_wait": 20
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 1021,
          "mean_wait": 5.74,
          "max_wait": 20
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 1018,
          "mean_wait": 5.8,
          "max_wait": 20
        },
        {
          "date": "2026-10-10",
          "hours": 19,
          "readings": 785,
          "mean_wait": 6.17,
          "max_wait": 20
        },
        {
          "date": "2026-10-13",
          "hours": 9,
          "readings": 257,
          "mean_wait": 5.37,
          "max_wait": 10
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 1001,
          "mean_wait": 5.31,
          "max_wait": 20
        },
        {
          "date": "2026-10-15",
          "hours": 7,
          "readings": 257,
          "mean_wait": 5.49,
          "max_wait": 20
        },
        {
          "date": "2026-10-17",
          "hours": 21,
          "readings": 892,
          "mean_wait": 5.46,
          "max_wait": 20
        },
        {
          "date": "2026-10-18",
          "hours": 5,
          "readings": 138,
          "mean_wait": 5,
          "max_wait": 5
        },
        {
          "date": "2026-10-19",
          "hours": 19,
          "readings": 713,
          "mean_wait": 5.81,
          "max_wait": 20
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 1033,
          "mean_wait": 5.26,
          "max_wait": 20
        }
      ],
      "band_shares_oct_7_to_20": [
        {
          "minutes": 5,
          "share": 0.899,
          "raw_readings": 7265
        },
        {
          "minutes": 10,
          "share": 0.094,
          "raw_readings": 757
        },
        {
          "minutes": 20,
          "share": 0.008,
          "raw_readings": 63
        }
      ],
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Terminal 1 main",
          "role": "main",
          "hours": 288,
          "days": 16,
          "readings": 3220,
          "mean_wait": 5.78,
          "max_wait": 20,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 10,
          "busiest_hour_mean": 7.65,
          "busiest_hour_days": 13
        },
        {
          "name": "Terminal 2 alternative",
          "role": "main",
          "hours": 213,
          "days": 15,
          "readings": 2096,
          "mean_wait": 5.07,
          "max_wait": 20,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 17,
          "busiest_hour_mean": 5.44,
          "busiest_hour_days": 12
        },
        {
          "name": "Terminal 2 main",
          "role": "main",
          "hours": 168,
          "days": 16,
          "readings": 1280,
          "mean_wait": 6.15,
          "max_wait": 20,
          "hours_mean_15_plus": 1,
          "hours_mean_30_plus": 0,
          "busiest_hour": 4,
          "busiest_hour_mean": 10.56,
          "busiest_hour_days": 11
        },
        {
          "name": "Terminal 3",
          "role": "main",
          "hours": 171,
          "days": 15,
          "readings": 1911,
          "mean_wait": 5.6,
          "max_wait": 20,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 17,
          "busiest_hour_mean": 6.55,
          "busiest_hour_days": 12
        },
        {
          "name": "Terminal 4",
          "role": "main",
          "hours": 287,
          "days": 16,
          "readings": 3246,
          "mean_wait": 5.48,
          "max_wait": 20,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 10,
          "busiest_hour_mean": 6.88,
          "busiest_hour_days": 13
        }
      ]
    },
    {
      "code": "MAN",
      "name": "Manchester",
      "city": "Manchester",
      "country": "United Kingdom",
      "publishes": "minutes",
      "how_published": "Average search wait per lane from the airport group MAG; we keep the longest lane in each zone, skip lanes with under 5 passengers and cap at 60",
      "published_by": "MAG",
      "days_with_data": 20,
      "hours_with_data": 435,
      "readings": 6686,
      "mean_wait": 5.8,
      "max_wait": 60,
      "hours_mean_15_plus": 0,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 02:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 5,
        "days": 20,
        "readings": 360,
        "mean_wait": 7.58,
        "max_wait": 25
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 196,
        "mean_wait": 1.98,
        "max_wait": 60
      },
      "busiest_weekday": {
        "iso_dow": 4,
        "day": "Thursday",
        "days": 3,
        "hours": 66,
        "readings": 1020,
        "mean_wait": 6.07,
        "max_wait": 60
      },
      "quietest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 3,
        "hours": 66,
        "readings": 974,
        "mean_wait": 5.29,
        "max_wait": 60
      },
      "worst_hour": {
        "local_hour": "2026-10-07 08:00:00",
        "mean_wait": 11.1,
        "readings": 18,
        "checkpoints": 3,
        "max_wait": 60
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 1,
          "readings": 1,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 102,
          "mean_wait": 1.1,
          "max_wait": 7
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 353,
          "mean_wait": 3.36,
          "max_wait": 60
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 360,
          "mean_wait": 7.04,
          "max_wait": 37
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 360,
          "mean_wait": 7.58,
          "max_wait": 25
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 360,
          "mean_wait": 6.77,
          "max_wait": 30
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 360,
          "mean_wait": 7.14,
          "max_wait": 22
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 359,
          "mean_wait": 7.22,
          "max_wait": 60
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 360,
          "mean_wait": 6.42,
          "max_wait": 33
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 361,
          "mean_wait": 6.93,
          "max_wait": 60
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 360,
          "mean_wait": 6.32,
          "max_wait": 60
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 360,
          "mean_wait": 6.12,
          "max_wait": 16
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 357,
          "mean_wait": 7.25,
          "max_wait": 20
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 360,
          "mean_wait": 7.03,
          "max_wait": 20
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 345,
          "mean_wait": 6.11,
          "max_wait": 28
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 357,
          "mean_wait": 6.03,
          "max_wait": 21
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 356,
          "mean_wait": 6.02,
          "max_wait": 60
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 342,
          "mean_wait": 4.38,
          "max_wait": 21
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 289,
          "mean_wait": 3.92,
          "max_wait": 16
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 229,
          "mean_wait": 2.45,
          "max_wait": 17
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 196,
          "mean_wait": 1.98,
          "max_wait": 60
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 122,
          "mean_wait": 1.42,
          "max_wait": 18
        },
        {
          "hour": 23,
          "days": 14,
          "readings": 37,
          "mean_wait": 0.9,
          "max_wait": 4
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 64,
          "readings": 1003,
          "mean_wait": 5.75,
          "max_wait": 33
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 66,
          "readings": 974,
          "mean_wait": 5.29,
          "max_wait": 60
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 44,
          "readings": 670,
          "mean_wait": 5.6,
          "max_wait": 60
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 66,
          "readings": 1020,
          "mean_wait": 6.07,
          "max_wait": 60
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 65,
          "readings": 1002,
          "mean_wait": 6.03,
          "max_wait": 60
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 66,
          "readings": 1012,
          "mean_wait": 5.77,
          "max_wait": 60
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 64,
          "readings": 1005,
          "mean_wait": 5.99,
          "max_wait": 60
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 22,
          "readings": 346,
          "mean_wait": 6.51,
          "max_wait": 49
        },
        {
          "date": "2026-10-02",
          "hours": 22,
          "readings": 329,
          "mean_wait": 5.92,
          "max_wait": 60
        },
        {
          "date": "2026-10-03",
          "hours": 22,
          "readings": 335,
          "mean_wait": 5.03,
          "max_wait": 17
        },
        {
          "date": "2026-10-04",
          "hours": 22,
          "readings": 336,
          "mean_wait": 5.26,
          "max_wait": 32
        },
        {
          "date": "2026-10-05",
          "hours": 21,
          "readings": 334,
          "mean_wait": 5.29,
          "max_wait": 21
        },
        {
          "date": "2026-10-06",
          "hours": 22,
          "readings": 333,
          "mean_wait": 4.98,
          "max_wait": 37
        },
        {
          "date": "2026-10-07",
          "hours": 22,
          "readings": 330,
          "mean_wait": 5.76,
          "max_wait": 60
        },
        {
          "date": "2026-10-08",
          "hours": 22,
          "readings": 342,
          "mean_wait": 5.61,
          "max_wait": 60
        },
        {
          "date": "2026-10-09",
          "hours": 21,
          "readings": 340,
          "mean_wait": 6.31,
          "max_wait": 60
        },
        {
          "date": "2026-10-10",
          "hours": 22,
          "readings": 347,
          "mean_wait": 6.5,
          "max_wait": 60
        },
        {
          "date": "2026-10-11",
          "hours": 21,
          "readings": 331,
          "mean_wait": 6.39,
          "max_wait": 60
        },
        {
          "date": "2026-10-12",
          "hours": 21,
          "readings": 333,
          "mean_wait": 5.48,
          "max_wait": 33
        },
        {
          "date": "2026-10-13",
          "hours": 22,
          "readings": 305,
          "mean_wait": 5.2,
          "max_wait": 60
        },
        {
          "date": "2026-10-14",
          "hours": 22,
          "readings": 340,
          "mean_wait": 5.44,
          "max_wait": 60
        },
        {
          "date": "2026-10-15",
          "hours": 22,
          "readings": 332,
          "mean_wait": 6.08,
          "max_wait": 22
        },
        {
          "date": "2026-10-16",
          "hours": 22,
          "readings": 333,
          "mean_wait": 5.84,
          "max_wait": 19
        },
        {
          "date": "2026-10-17",
          "hours": 22,
          "readings": 330,
          "mean_wait": 5.76,
          "max_wait": 30
        },
        {
          "date": "2026-10-18",
          "hours": 21,
          "readings": 338,
          "mean_wait": 6.32,
          "max_wait": 60
        },
        {
          "date": "2026-10-19",
          "hours": 22,
          "readings": 336,
          "mean_wait": 6.48,
          "max_wait": 22
        },
        {
          "date": "2026-10-20",
          "hours": 22,
          "readings": 336,
          "mean_wait": 5.68,
          "max_wait": 60
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0.035,
      "checkpoints": [
        {
          "name": "Terminal 2, zone E",
          "role": "main",
          "hours": 412,
          "days": 20,
          "readings": 2354,
          "mean_wait": 6.94,
          "max_wait": 60,
          "hours_mean_15_plus": 1,
          "hours_mean_30_plus": 0,
          "busiest_hour": 14,
          "busiest_hour_mean": 9.83,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 2, zone W",
          "role": "main",
          "hours": 357,
          "days": 20,
          "readings": 2087,
          "mean_wait": 5.52,
          "max_wait": 60,
          "hours_mean_15_plus": 3,
          "hours_mean_30_plus": 0,
          "busiest_hour": 13,
          "busiest_hour_mean": 7.12,
          "busiest_hour_days": 20
        },
        {
          "name": "Terminal 3, zone A",
          "role": "main",
          "hours": 397,
          "days": 20,
          "readings": 2245,
          "mean_wait": 4.86,
          "max_wait": 60,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 7,
          "busiest_hour_mean": 7.61,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "MUC",
      "name": "Munich",
      "city": "Munich",
      "country": "Germany",
      "publishes": "minutes",
      "how_published": "Projected wait per checkpoint, from Munich Airport's Passngr feed",
      "published_by": "passngr.de",
      "days_with_data": 20,
      "hours_with_data": 340,
      "readings": 5790,
      "mean_wait": 0.96,
      "max_wait": 25,
      "hours_mean_15_plus": 0,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 03:00:00",
      "last_local_hour": "2026-10-20 17:00:00",
      "busiest_hour": {
        "hour": 3,
        "days": 18,
        "readings": 51,
        "mean_wait": 5.92,
        "max_wait": 11
      },
      "quietest_daytime_hour": {
        "hour": 20,
        "days": 16,
        "readings": 134,
        "mean_wait": 0.04,
        "max_wait": 1
      },
      "busiest_weekday": {
        "iso_dow": 5,
        "day": "Friday",
        "days": 3,
        "hours": 56,
        "readings": 952,
        "mean_wait": 1.47,
        "max_wait": 25
      },
      "quietest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 3,
        "hours": 49,
        "readings": 832,
        "mean_wait": 0.4,
        "max_wait": 10
      },
      "worst_hour": {
        "local_hour": "2026-10-16 06:00:00",
        "mean_wait": 11.63,
        "readings": 13,
        "checkpoints": 3,
        "max_wait": 25
      },
      "missing_dates": [],
      "thin_dates": [
        "2026-10-10",
        "2026-10-11"
      ],
      "by_hour": [
        {
          "hour": 0,
          "days": 3,
          "readings": 9,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 3,
          "days": 18,
          "readings": 51,
          "mean_wait": 5.92,
          "max_wait": 11
        },
        {
          "hour": 4,
          "days": 19,
          "readings": 284,
          "mean_wait": 2.84,
          "max_wait": 17
        },
        {
          "hour": 5,
          "days": 19,
          "readings": 353,
          "mean_wait": 0.7,
          "max_wait": 16
        },
        {
          "hour": 6,
          "days": 19,
          "readings": 366,
          "mean_wait": 1.18,
          "max_wait": 25
        },
        {
          "hour": 7,
          "days": 19,
          "readings": 355,
          "mean_wait": 1.85,
          "max_wait": 15
        },
        {
          "hour": 8,
          "days": 18,
          "readings": 394,
          "mean_wait": 0.53,
          "max_wait": 12
        },
        {
          "hour": 9,
          "days": 18,
          "readings": 400,
          "mean_wait": 0.84,
          "max_wait": 11
        },
        {
          "hour": 10,
          "days": 18,
          "readings": 400,
          "mean_wait": 0.89,
          "max_wait": 11
        },
        {
          "hour": 11,
          "days": 18,
          "readings": 401,
          "mean_wait": 0.41,
          "max_wait": 6
        },
        {
          "hour": 12,
          "days": 19,
          "readings": 434,
          "mean_wait": 0.83,
          "max_wait": 15
        },
        {
          "hour": 13,
          "days": 19,
          "readings": 381,
          "mean_wait": 1.33,
          "max_wait": 14
        },
        {
          "hour": 14,
          "days": 19,
          "readings": 341,
          "mean_wait": 0.71,
          "max_wait": 14
        },
        {
          "hour": 15,
          "days": 19,
          "readings": 309,
          "mean_wait": 0.19,
          "max_wait": 4
        },
        {
          "hour": 16,
          "days": 18,
          "readings": 296,
          "mean_wait": 0.61,
          "max_wait": 8
        },
        {
          "hour": 17,
          "days": 19,
          "readings": 309,
          "mean_wait": 1.27,
          "max_wait": 10
        },
        {
          "hour": 18,
          "days": 18,
          "readings": 282,
          "mean_wait": 0.81,
          "max_wait": 7
        },
        {
          "hour": 19,
          "days": 18,
          "readings": 278,
          "mean_wait": 0.17,
          "max_wait": 6
        },
        {
          "hour": 20,
          "days": 16,
          "readings": 134,
          "mean_wait": 0.04,
          "max_wait": 1
        },
        {
          "hour": 21,
          "days": 5,
          "readings": 12,
          "mean_wait": 0,
          "max_wait": 0
        },
        {
          "hour": 23,
          "days": 1,
          "readings": 1,
          "mean_wait": 0,
          "max_wait": 0
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 54,
          "readings": 1020,
          "mean_wait": 0.65,
          "max_wait": 15
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 49,
          "readings": 832,
          "mean_wait": 0.4,
          "max_wait": 10
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 37,
          "readings": 626,
          "mean_wait": 1.28,
          "max_wait": 21
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 56,
          "readings": 965,
          "mean_wait": 0.87,
          "max_wait": 15
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 56,
          "readings": 952,
          "mean_wait": 1.47,
          "max_wait": 25
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 40,
          "readings": 632,
          "mean_wait": 1.01,
          "max_wait": 17
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 48,
          "readings": 763,
          "mean_wait": 1.1,
          "max_wait": 14
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 19,
          "readings": 302,
          "mean_wait": 1.26,
          "max_wait": 15
        },
        {
          "date": "2026-10-02",
          "hours": 19,
          "readings": 341,
          "mean_wait": 0.92,
          "max_wait": 11
        },
        {
          "date": "2026-10-03",
          "hours": 18,
          "readings": 312,
          "mean_wait": 0.92,
          "max_wait": 17
        },
        {
          "date": "2026-10-04",
          "hours": 19,
          "readings": 334,
          "mean_wait": 0.76,
          "max_wait": 10
        },
        {
          "date": "2026-10-05",
          "hours": 18,
          "readings": 339,
          "mean_wait": 0.82,
          "max_wait": 15
        },
        {
          "date": "2026-10-06",
          "hours": 17,
          "readings": 321,
          "mean_wait": 0.46,
          "max_wait": 10
        },
        {
          "date": "2026-10-07",
          "hours": 19,
          "readings": 323,
          "mean_wait": 1.27,
          "max_wait": 13
        },
        {
          "date": "2026-10-08",
          "hours": 19,
          "readings": 321,
          "mean_wait": 0.73,
          "max_wait": 14
        },
        {
          "date": "2026-10-09",
          "hours": 18,
          "readings": 332,
          "mean_wait": 1.34,
          "max_wait": 14
        },
        {
          "date": "2026-10-10",
          "hours": 5,
          "readings": 75,
          "mean_wait": 2.15,
          "max_wait": 13
        },
        {
          "date": "2026-10-11",
          "hours": 9,
          "readings": 150,
          "mean_wait": 1.35,
          "max_wait": 10
        },
        {
          "date": "2026-10-12",
          "hours": 18,
          "readings": 337,
          "mean_wait": 0.84,
          "max_wait": 11
        },
        {
          "date": "2026-10-13",
          "hours": 17,
          "readings": 255,
          "mean_wait": 0.46,
          "max_wait": 6
        },
        {
          "date": "2026-10-14",
          "hours": 18,
          "readings": 303,
          "mean_wait": 1.29,
          "max_wait": 21
        },
        {
          "date": "2026-10-15",
          "hours": 18,
          "readings": 342,
          "mean_wait": 0.67,
          "max_wait": 8
        },
        {
          "date": "2026-10-16",
          "hours": 19,
          "readings": 279,
          "mean_wait": 2.31,
          "max_wait": 25
        },
        {
          "date": "2026-10-17",
          "hours": 17,
          "readings": 245,
          "mean_wait": 0.78,
          "max_wait": 12
        },
        {
          "date": "2026-10-18",
          "hours": 20,
          "readings": 279,
          "mean_wait": 1.38,
          "max_wait": 14
        },
        {
          "date": "2026-10-19",
          "hours": 18,
          "readings": 344,
          "mean_wait": 0.3,
          "max_wait": 8
        },
        {
          "date": "2026-10-20",
          "hours": 15,
          "readings": 256,
          "mean_wait": 0.28,
          "max_wait": 5
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0.67,
      "checkpoints": [
        {
          "name": "Terminal 2, business lane",
          "role": "business",
          "hours": 277,
          "days": 20,
          "readings": 1179,
          "mean_wait": 0.24,
          "max_wait": 7,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 16,
          "busiest_hour_mean": 0.82,
          "busiest_hour_days": 14
        },
        {
          "name": "Terminal 1, module C",
          "role": "main",
          "hours": 145,
          "days": 19,
          "readings": 732,
          "mean_wait": 0.81,
          "max_wait": 21,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 4,
          "busiest_hour_mean": 2.44,
          "busiest_hour_days": 17
        },
        {
          "name": "Terminal 1, module D",
          "role": "main",
          "hours": 324,
          "days": 20,
          "readings": 1752,
          "mean_wait": 0.84,
          "max_wait": 16,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 3,
          "busiest_hour_mean": 6.04,
          "busiest_hour_days": 18
        },
        {
          "name": "Terminal 2, economy north",
          "role": "main",
          "hours": 288,
          "days": 20,
          "readings": 1621,
          "mean_wait": 1.19,
          "max_wait": 25,
          "hours_mean_15_plus": 1,
          "hours_mean_30_plus": 0,
          "busiest_hour": 7,
          "busiest_hour_mean": 2.72,
          "busiest_hour_days": 19
        },
        {
          "name": "Terminal 2, economy south",
          "role": "main",
          "hours": 302,
          "days": 20,
          "readings": 1685,
          "mean_wait": 0.92,
          "max_wait": 25,
          "hours_mean_15_plus": 1,
          "hours_mean_30_plus": 0,
          "busiest_hour": 7,
          "busiest_hour_mean": 3.19,
          "busiest_hour_days": 19
        }
      ]
    },
    {
      "code": "OSL",
      "name": "Oslo Gardermoen",
      "city": "Oslo",
      "country": "Norway",
      "publishes": "minutes",
      "how_published": "Seconds, from Avinor",
      "published_by": "avinor.no",
      "days_with_data": 20,
      "hours_with_data": 386,
      "readings": 5894,
      "mean_wait": 3.61,
      "max_wait": 17,
      "hours_mean_15_plus": 0,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 04:00:00",
      "last_local_hour": "2026-10-20 22:00:00",
      "busiest_hour": {
        "hour": 7,
        "days": 20,
        "readings": 356,
        "mean_wait": 4.73,
        "max_wait": 14
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 111,
        "mean_wait": 1.9,
        "max_wait": 9
      },
      "busiest_weekday": {
        "iso_dow": 3,
        "day": "Wednesday",
        "days": 2,
        "hours": 39,
        "readings": 589,
        "mean_wait": 4.22,
        "max_wait": 14
      },
      "quietest_weekday": {
        "iso_dow": 6,
        "day": "Saturday",
        "days": 3,
        "hours": 61,
        "readings": 800,
        "mean_wait": 3.01,
        "max_wait": 10
      },
      "worst_hour": {
        "local_hour": "2026-10-14 07:00:00",
        "mean_wait": 10.27,
        "readings": 18,
        "checkpoints": 3,
        "max_wait": 14
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 2,
          "readings": 5,
          "mean_wait": 1.8,
          "max_wait": 3
        },
        {
          "hour": 3,
          "days": 2,
          "readings": 5,
          "mean_wait": 2.02,
          "max_wait": 4
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 336,
          "mean_wait": 2.76,
          "max_wait": 12
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 363,
          "mean_wait": 3.32,
          "max_wait": 9
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 361,
          "mean_wait": 3.59,
          "max_wait": 12
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 356,
          "mean_wait": 4.73,
          "max_wait": 14
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 360,
          "mean_wait": 3.4,
          "max_wait": 14
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 357,
          "mean_wait": 3.77,
          "max_wait": 12
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 364,
          "mean_wait": 4.6,
          "max_wait": 15
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 359,
          "mean_wait": 4.05,
          "max_wait": 13
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 357,
          "mean_wait": 4.43,
          "max_wait": 17
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 360,
          "mean_wait": 3.34,
          "max_wait": 9
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 363,
          "mean_wait": 3.73,
          "max_wait": 11
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 354,
          "mean_wait": 3.73,
          "max_wait": 11
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 333,
          "mean_wait": 4.16,
          "max_wait": 13
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 328,
          "mean_wait": 3.95,
          "max_wait": 12
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 313,
          "mean_wait": 3.08,
          "max_wait": 11
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 278,
          "mean_wait": 2.38,
          "max_wait": 9
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 171,
          "mean_wait": 1.99,
          "max_wait": 8
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 111,
          "mean_wait": 1.9,
          "max_wait": 9
        },
        {
          "hour": 22,
          "days": 15,
          "readings": 46,
          "mean_wait": 1.93,
          "max_wait": 5
        },
        {
          "hour": 23,
          "days": 7,
          "readings": 14,
          "mean_wait": 1.72,
          "max_wait": 3
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 57,
          "readings": 880,
          "mean_wait": 3.71,
          "max_wait": 14
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 56,
          "readings": 868,
          "mean_wait": 4.09,
          "max_wait": 17
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 39,
          "readings": 589,
          "mean_wait": 4.22,
          "max_wait": 14
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 58,
          "readings": 910,
          "mean_wait": 3.65,
          "max_wait": 13
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 56,
          "readings": 892,
          "mean_wait": 3.54,
          "max_wait": 11
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 61,
          "readings": 800,
          "mean_wait": 3.01,
          "max_wait": 10
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 59,
          "readings": 955,
          "mean_wait": 3.22,
          "max_wait": 12
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 19,
          "readings": 295,
          "mean_wait": 3.45,
          "max_wait": 10
        },
        {
          "date": "2026-10-02",
          "hours": 18,
          "readings": 294,
          "mean_wait": 3.9,
          "max_wait": 11
        },
        {
          "date": "2026-10-03",
          "hours": 20,
          "readings": 265,
          "mean_wait": 2.75,
          "max_wait": 9
        },
        {
          "date": "2026-10-04",
          "hours": 20,
          "readings": 320,
          "mean_wait": 3.35,
          "max_wait": 12
        },
        {
          "date": "2026-10-05",
          "hours": 20,
          "readings": 299,
          "mean_wait": 3.46,
          "max_wait": 12
        },
        {
          "date": "2026-10-06",
          "hours": 18,
          "readings": 299,
          "mean_wait": 3.4,
          "max_wait": 10
        },
        {
          "date": "2026-10-07",
          "hours": 21,
          "readings": 297,
          "mean_wait": 3.98,
          "max_wait": 13
        },
        {
          "date": "2026-10-08",
          "hours": 20,
          "readings": 310,
          "mean_wait": 3.27,
          "max_wait": 10
        },
        {
          "date": "2026-10-09",
          "hours": 19,
          "readings": 298,
          "mean_wait": 3.81,
          "max_wait": 11
        },
        {
          "date": "2026-10-10",
          "hours": 20,
          "readings": 279,
          "mean_wait": 3.32,
          "max_wait": 10
        },
        {
          "date": "2026-10-11",
          "hours": 20,
          "readings": 315,
          "mean_wait": 3.22,
          "max_wait": 10
        },
        {
          "date": "2026-10-12",
          "hours": 18,
          "readings": 295,
          "mean_wait": 4.54,
          "max_wait": 14
        },
        {
          "date": "2026-10-13",
          "hours": 19,
          "readings": 273,
          "mean_wait": 5.04,
          "max_wait": 17
        },
        {
          "date": "2026-10-14",
          "hours": 18,
          "readings": 292,
          "mean_wait": 4.46,
          "max_wait": 14
        },
        {
          "date": "2026-10-15",
          "hours": 19,
          "readings": 305,
          "mean_wait": 4.24,
          "max_wait": 13
        },
        {
          "date": "2026-10-16",
          "hours": 19,
          "readings": 300,
          "mean_wait": 2.91,
          "max_wait": 8
        },
        {
          "date": "2026-10-17",
          "hours": 21,
          "readings": 256,
          "mean_wait": 2.95,
          "max_wait": 10
        },
        {
          "date": "2026-10-18",
          "hours": 19,
          "readings": 320,
          "mean_wait": 3.08,
          "max_wait": 10
        },
        {
          "date": "2026-10-19",
          "hours": 19,
          "readings": 286,
          "mean_wait": 3.1,
          "max_wait": 12
        },
        {
          "date": "2026-10-20",
          "hours": 19,
          "readings": 296,
          "mean_wait": 3.9,
          "max_wait": 12
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0.003,
      "checkpoints": [
        {
          "name": "Central security",
          "role": "main",
          "hours": 320,
          "days": 20,
          "readings": 1836,
          "mean_wait": 3.18,
          "max_wait": 14,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 7,
          "busiest_hour_mean": 4.18,
          "busiest_hour_days": 20
        },
        {
          "name": "Central security (sbø)",
          "role": "main",
          "hours": 320,
          "days": 20,
          "readings": 1838,
          "mean_wait": 3.71,
          "max_wait": 15,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 10,
          "busiest_hour_mean": 4.63,
          "busiest_hour_days": 20
        },
        {
          "name": "Central security (sbv)",
          "role": "main",
          "hours": 386,
          "days": 20,
          "readings": 2220,
          "mean_wait": 3.87,
          "max_wait": 17,
          "hours_mean_15_plus": 0,
          "hours_mean_30_plus": 0,
          "busiest_hour": 7,
          "busiest_hour_mean": 5.45,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "STN",
      "name": "London Stansted",
      "city": "London",
      "country": "United Kingdom",
      "publishes": "minutes",
      "how_published": "Average search wait per lane from the airport group MAG; we keep the longest lane in each zone, skip lanes with under 5 passengers and cap at 60",
      "published_by": "MAG",
      "days_with_data": 20,
      "hours_with_data": 411,
      "readings": 2415,
      "mean_wait": 6.53,
      "max_wait": 60,
      "hours_mean_15_plus": 9,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 03:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 4,
        "days": 20,
        "readings": 120,
        "mean_wait": 9.53,
        "max_wait": 60
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 120,
        "mean_wait": 2.45,
        "max_wait": 8
      },
      "busiest_weekday": {
        "iso_dow": 4,
        "day": "Thursday",
        "days": 3,
        "hours": 61,
        "readings": 360,
        "mean_wait": 7.03,
        "max_wait": 60
      },
      "quietest_weekday": {
        "iso_dow": 6,
        "day": "Saturday",
        "days": 3,
        "hours": 61,
        "readings": 362,
        "mean_wait": 6.11,
        "max_wait": 60
      },
      "worst_hour": {
        "local_hour": "2026-10-17 04:00:00",
        "mean_wait": 25.2,
        "readings": 6,
        "checkpoints": 1,
        "max_wait": 60
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 3,
          "days": 20,
          "readings": 133,
          "mean_wait": 7.5,
          "max_wait": 60
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 120,
          "mean_wait": 9.53,
          "max_wait": 60
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 120,
          "mean_wait": 6.79,
          "max_wait": 13
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 120,
          "mean_wait": 7.82,
          "max_wait": 18
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 120,
          "mean_wait": 7.42,
          "max_wait": 15
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.64,
          "max_wait": 11
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 120,
          "mean_wait": 6.23,
          "max_wait": 52
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 120,
          "mean_wait": 6.79,
          "max_wait": 22
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 120,
          "mean_wait": 6.77,
          "max_wait": 13
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 120,
          "mean_wait": 8.1,
          "max_wait": 60
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 119,
          "mean_wait": 7.7,
          "max_wait": 20
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 120,
          "mean_wait": 7.82,
          "max_wait": 25
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 115,
          "mean_wait": 8.56,
          "max_wait": 60
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 120,
          "mean_wait": 7.07,
          "max_wait": 18
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 118,
          "mean_wait": 6.32,
          "max_wait": 16
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 118,
          "mean_wait": 7.06,
          "max_wait": 56
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 121,
          "mean_wait": 5.94,
          "max_wait": 20
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 119,
          "mean_wait": 4.06,
          "max_wait": 39
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 120,
          "mean_wait": 2.45,
          "max_wait": 8
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 116,
          "mean_wait": 1.56,
          "max_wait": 5
        },
        {
          "hour": 23,
          "days": 11,
          "readings": 16,
          "mean_wait": 1.14,
          "max_wait": 4
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 63,
          "readings": 365,
          "mean_wait": 6.23,
          "max_wait": 60
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 62,
          "readings": 355,
          "mean_wait": 6.32,
          "max_wait": 52
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 42,
          "readings": 243,
          "mean_wait": 6.3,
          "max_wait": 60
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 61,
          "readings": 360,
          "mean_wait": 7.03,
          "max_wait": 60
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 60,
          "readings": 361,
          "mean_wait": 6.72,
          "max_wait": 60
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 61,
          "readings": 362,
          "mean_wait": 6.11,
          "max_wait": 60
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 62,
          "readings": 369,
          "mean_wait": 6.9,
          "max_wait": 60
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 21,
          "readings": 122,
          "mean_wait": 7.25,
          "max_wait": 50
        },
        {
          "date": "2026-10-02",
          "hours": 20,
          "readings": 120,
          "mean_wait": 6.38,
          "max_wait": 56
        },
        {
          "date": "2026-10-03",
          "hours": 20,
          "readings": 121,
          "mean_wait": 5.55,
          "max_wait": 14
        },
        {
          "date": "2026-10-04",
          "hours": 21,
          "readings": 127,
          "mean_wait": 7.74,
          "max_wait": 60
        },
        {
          "date": "2026-10-05",
          "hours": 21,
          "readings": 122,
          "mean_wait": 6.09,
          "max_wait": 16
        },
        {
          "date": "2026-10-06",
          "hours": 20,
          "readings": 121,
          "mean_wait": 6.14,
          "max_wait": 27
        },
        {
          "date": "2026-10-07",
          "hours": 21,
          "readings": 121,
          "mean_wait": 6.18,
          "max_wait": 60
        },
        {
          "date": "2026-10-08",
          "hours": 20,
          "readings": 121,
          "mean_wait": 6.88,
          "max_wait": 37
        },
        {
          "date": "2026-10-09",
          "hours": 20,
          "readings": 120,
          "mean_wait": 7.31,
          "max_wait": 60
        },
        {
          "date": "2026-10-10",
          "hours": 21,
          "readings": 121,
          "mean_wait": 5.81,
          "max_wait": 13
        },
        {
          "date": "2026-10-11",
          "hours": 21,
          "readings": 121,
          "mean_wait": 5.88,
          "max_wait": 18
        },
        {
          "date": "2026-10-12",
          "hours": 21,
          "readings": 122,
          "mean_wait": 5.27,
          "max_wait": 15
        },
        {
          "date": "2026-10-13",
          "hours": 21,
          "readings": 112,
          "mean_wait": 6.28,
          "max_wait": 52
        },
        {
          "date": "2026-10-14",
          "hours": 21,
          "readings": 122,
          "mean_wait": 6.43,
          "max_wait": 35
        },
        {
          "date": "2026-10-15",
          "hours": 20,
          "readings": 117,
          "mean_wait": 6.95,
          "max_wait": 60
        },
        {
          "date": "2026-10-16",
          "hours": 20,
          "readings": 121,
          "mean_wait": 6.48,
          "max_wait": 25
        },
        {
          "date": "2026-10-17",
          "hours": 20,
          "readings": 120,
          "mean_wait": 6.98,
          "max_wait": 60
        },
        {
          "date": "2026-10-18",
          "hours": 20,
          "readings": 121,
          "mean_wait": 7.04,
          "max_wait": 60
        },
        {
          "date": "2026-10-19",
          "hours": 21,
          "readings": 121,
          "mean_wait": 7.35,
          "max_wait": 60
        },
        {
          "date": "2026-10-20",
          "hours": 21,
          "readings": 122,
          "mean_wait": 6.54,
          "max_wait": 39
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0.007,
      "checkpoints": [
        {
          "name": "Central search",
          "role": "main",
          "hours": 411,
          "days": 20,
          "readings": 2415,
          "mean_wait": 6.53,
          "max_wait": 60,
          "hours_mean_15_plus": 9,
          "hours_mean_30_plus": 0,
          "busiest_hour": 4,
          "busiest_hour_mean": 9.53,
          "busiest_hour_days": 20
        },
        {
          "name": "Forecourt zone",
          "role": "other",
          "hours": 212,
          "days": 20,
          "readings": 1181,
          "mean_wait": 3.4,
          "max_wait": 60,
          "hours_mean_15_plus": 2,
          "hours_mean_30_plus": 0,
          "busiest_hour": 6,
          "busiest_hour_mean": 4.65,
          "busiest_hour_days": 20
        },
        {
          "name": "VP9 zone",
          "role": "other",
          "hours": 453,
          "days": 20,
          "readings": 2591,
          "mean_wait": 1.38,
          "max_wait": 60,
          "hours_mean_15_plus": 2,
          "hours_mean_30_plus": 0,
          "busiest_hour": 16,
          "busiest_hour_mean": 2.12,
          "busiest_hour_days": 19
        }
      ]
    },
    {
      "code": "SVG",
      "name": "Stavanger Sola",
      "city": "Stavanger",
      "country": "Norway",
      "publishes": "minutes",
      "how_published": "Seconds, from Avinor",
      "published_by": "avinor.no",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 2868,
      "mean_wait": 4.36,
      "max_wait": 33,
      "hours_mean_15_plus": 3,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 8,
        "days": 20,
        "readings": 120,
        "mean_wait": 10.35,
        "max_wait": 33
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 120,
        "mean_wait": 2.07,
        "max_wait": 5
      },
      "busiest_weekday": {
        "iso_dow": 1,
        "day": "Monday",
        "days": 3,
        "hours": 72,
        "readings": 431,
        "mean_wait": 5.03,
        "max_wait": 33
      },
      "quietest_weekday": {
        "iso_dow": 6,
        "day": "Saturday",
        "days": 3,
        "hours": 72,
        "readings": 432,
        "mean_wait": 3.37,
        "max_wait": 19
      },
      "worst_hour": {
        "local_hour": "2026-10-18 08:00:00",
        "mean_wait": 25.3,
        "readings": 6,
        "checkpoints": 1,
        "max_wait": 32
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 119,
          "mean_wait": 2,
          "max_wait": 2
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 119,
          "mean_wait": 2,
          "max_wait": 2
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 120,
          "mean_wait": 2,
          "max_wait": 2
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 118,
          "mean_wait": 2,
          "max_wait": 2
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 121,
          "mean_wait": 4.14,
          "max_wait": 14
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.74,
          "max_wait": 21
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 121,
          "mean_wait": 6.09,
          "max_wait": 22
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 119,
          "mean_wait": 5.02,
          "max_wait": 30
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 120,
          "mean_wait": 10.35,
          "max_wait": 33
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 121,
          "mean_wait": 5.36,
          "max_wait": 26
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.84,
          "max_wait": 29
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 120,
          "mean_wait": 4.92,
          "max_wait": 17
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 120,
          "mean_wait": 4.28,
          "max_wait": 18
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.49,
          "max_wait": 29
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 119,
          "mean_wait": 6.73,
          "max_wait": 22
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 119,
          "mean_wait": 5.23,
          "max_wait": 24
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 116,
          "mean_wait": 4.43,
          "max_wait": 18
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 119,
          "mean_wait": 4.96,
          "max_wait": 15
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 119,
          "mean_wait": 4.93,
          "max_wait": 17
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 117,
          "mean_wait": 3.81,
          "max_wait": 13
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 120,
          "mean_wait": 3.22,
          "max_wait": 10
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 120,
          "mean_wait": 2.07,
          "max_wait": 5
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 121,
          "mean_wait": 2,
          "max_wait": 2
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 120,
          "mean_wait": 2,
          "max_wait": 2
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 431,
          "mean_wait": 5.03,
          "max_wait": 33
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 422,
          "mean_wait": 4.28,
          "max_wait": 21
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 287,
          "mean_wait": 4.63,
          "max_wait": 29
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 4.59,
          "max_wait": 26
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 4.64,
          "max_wait": 30
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 3.37,
          "max_wait": 19
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 4.07,
          "max_wait": 32
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 144,
          "mean_wait": 5.03,
          "max_wait": 23
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.84,
          "max_wait": 30
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.4,
          "max_wait": 19
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.68,
          "max_wait": 10
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 143,
          "mean_wait": 4.95,
          "max_wait": 26
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.11,
          "max_wait": 14
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.2,
          "max_wait": 20
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.68,
          "max_wait": 24
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.49,
          "max_wait": 22
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.57,
          "max_wait": 17
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.86,
          "max_wait": 15
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 144,
          "mean_wait": 5.71,
          "max_wait": 33
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 134,
          "mean_wait": 4.87,
          "max_wait": 21
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 143,
          "mean_wait": 5.06,
          "max_wait": 29
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 144,
          "mean_wait": 5.07,
          "max_wait": 26
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.59,
          "max_wait": 16
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.14,
          "max_wait": 17
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.67,
          "max_wait": 32
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.42,
          "max_wait": 18
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.91,
          "max_wait": 18
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Central security (T1)",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 2868,
          "mean_wait": 4.36,
          "max_wait": 33,
          "hours_mean_15_plus": 3,
          "hours_mean_30_plus": 0,
          "busiest_hour": 8,
          "busiest_hour_mean": 10.35,
          "busiest_hour_days": 20
        }
      ]
    },
    {
      "code": "ZRH",
      "name": "Zurich",
      "city": "Zurich",
      "country": "Switzerland",
      "publishes": "minutes",
      "how_published": "Maximum wait in minutes",
      "published_by": "flughafen-zuerich.ch",
      "days_with_data": 20,
      "hours_with_data": 480,
      "readings": 2870,
      "mean_wait": 3.65,
      "max_wait": 20,
      "hours_mean_15_plus": 8,
      "hours_mean_30_plus": 0,
      "first_local_hour": "2026-10-01 00:00:00",
      "last_local_hour": "2026-10-20 23:00:00",
      "busiest_hour": {
        "hour": 11,
        "days": 20,
        "readings": 120,
        "mean_wait": 8.59,
        "max_wait": 20
      },
      "quietest_daytime_hour": {
        "hour": 21,
        "days": 20,
        "readings": 120,
        "mean_wait": 1.28,
        "max_wait": 13
      },
      "busiest_weekday": {
        "iso_dow": 7,
        "day": "Sunday",
        "days": 3,
        "hours": 72,
        "readings": 432,
        "mean_wait": 4.34,
        "max_wait": 20
      },
      "quietest_weekday": {
        "iso_dow": 2,
        "day": "Tuesday",
        "days": 3,
        "hours": 72,
        "readings": 422,
        "mean_wait": 2.96,
        "max_wait": 20
      },
      "worst_hour": {
        "local_hour": "2026-10-17 14:00:00",
        "mean_wait": 20,
        "readings": 6,
        "checkpoints": 1,
        "max_wait": 20
      },
      "missing_dates": [],
      "thin_dates": [],
      "by_hour": [
        {
          "hour": 0,
          "days": 20,
          "readings": 120,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 1,
          "days": 20,
          "readings": 120,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 2,
          "days": 20,
          "readings": 120,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 3,
          "days": 20,
          "readings": 120,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 4,
          "days": 20,
          "readings": 120,
          "mean_wait": 1.63,
          "max_wait": 9
        },
        {
          "hour": 5,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.81,
          "max_wait": 20
        },
        {
          "hour": 6,
          "days": 20,
          "readings": 120,
          "mean_wait": 6.29,
          "max_wait": 20
        },
        {
          "hour": 7,
          "days": 20,
          "readings": 120,
          "mean_wait": 2.02,
          "max_wait": 12
        },
        {
          "hour": 8,
          "days": 20,
          "readings": 120,
          "mean_wait": 4.23,
          "max_wait": 12
        },
        {
          "hour": 9,
          "days": 20,
          "readings": 120,
          "mean_wait": 4.47,
          "max_wait": 20
        },
        {
          "hour": 10,
          "days": 20,
          "readings": 120,
          "mean_wait": 7.03,
          "max_wait": 20
        },
        {
          "hour": 11,
          "days": 20,
          "readings": 120,
          "mean_wait": 8.59,
          "max_wait": 20
        },
        {
          "hour": 12,
          "days": 20,
          "readings": 120,
          "mean_wait": 2.74,
          "max_wait": 20
        },
        {
          "hour": 13,
          "days": 20,
          "readings": 120,
          "mean_wait": 4.24,
          "max_wait": 20
        },
        {
          "hour": 14,
          "days": 20,
          "readings": 120,
          "mean_wait": 5.53,
          "max_wait": 20
        },
        {
          "hour": 15,
          "days": 20,
          "readings": 119,
          "mean_wait": 6.24,
          "max_wait": 20
        },
        {
          "hour": 16,
          "days": 20,
          "readings": 116,
          "mean_wait": 3.48,
          "max_wait": 18
        },
        {
          "hour": 17,
          "days": 20,
          "readings": 120,
          "mean_wait": 4.29,
          "max_wait": 20
        },
        {
          "hour": 18,
          "days": 20,
          "readings": 118,
          "mean_wait": 5.42,
          "max_wait": 20
        },
        {
          "hour": 19,
          "days": 20,
          "readings": 117,
          "mean_wait": 5.36,
          "max_wait": 20
        },
        {
          "hour": 20,
          "days": 20,
          "readings": 120,
          "mean_wait": 3.15,
          "max_wait": 20
        },
        {
          "hour": 21,
          "days": 20,
          "readings": 120,
          "mean_wait": 1.28,
          "max_wait": 13
        },
        {
          "hour": 22,
          "days": 20,
          "readings": 120,
          "mean_wait": 1,
          "max_wait": 1
        },
        {
          "hour": 23,
          "days": 20,
          "readings": 120,
          "mean_wait": 1,
          "max_wait": 1
        }
      ],
      "by_weekday": [
        {
          "iso_dow": 1,
          "day": "Monday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 3.2,
          "max_wait": 20
        },
        {
          "iso_dow": 2,
          "day": "Tuesday",
          "days": 3,
          "hours": 72,
          "readings": 422,
          "mean_wait": 2.96,
          "max_wait": 20
        },
        {
          "iso_dow": 3,
          "day": "Wednesday",
          "days": 2,
          "hours": 48,
          "readings": 288,
          "mean_wait": 3.56,
          "max_wait": 20
        },
        {
          "iso_dow": 4,
          "day": "Thursday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 3.77,
          "max_wait": 20
        },
        {
          "iso_dow": 5,
          "day": "Friday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 3.97,
          "max_wait": 20
        },
        {
          "iso_dow": 6,
          "day": "Saturday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 3.73,
          "max_wait": 20
        },
        {
          "iso_dow": 7,
          "day": "Sunday",
          "days": 3,
          "hours": 72,
          "readings": 432,
          "mean_wait": 4.34,
          "max_wait": 20
        }
      ],
      "by_date": [
        {
          "date": "2026-10-01",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.57,
          "max_wait": 20
        },
        {
          "date": "2026-10-02",
          "hours": 24,
          "readings": 144,
          "mean_wait": 2.19,
          "max_wait": 20
        },
        {
          "date": "2026-10-03",
          "hours": 24,
          "readings": 144,
          "mean_wait": 2.12,
          "max_wait": 11
        },
        {
          "date": "2026-10-04",
          "hours": 24,
          "readings": 144,
          "mean_wait": 2.94,
          "max_wait": 14
        },
        {
          "date": "2026-10-05",
          "hours": 24,
          "readings": 144,
          "mean_wait": 1.67,
          "max_wait": 8
        },
        {
          "date": "2026-10-06",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.08,
          "max_wait": 20
        },
        {
          "date": "2026-10-07",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.07,
          "max_wait": 20
        },
        {
          "date": "2026-10-08",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.73,
          "max_wait": 20
        },
        {
          "date": "2026-10-09",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.23,
          "max_wait": 20
        },
        {
          "date": "2026-10-10",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.6,
          "max_wait": 20
        },
        {
          "date": "2026-10-11",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.54,
          "max_wait": 18
        },
        {
          "date": "2026-10-12",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.57,
          "max_wait": 20
        },
        {
          "date": "2026-10-13",
          "hours": 24,
          "readings": 134,
          "mean_wait": 4.02,
          "max_wait": 20
        },
        {
          "date": "2026-10-14",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.06,
          "max_wait": 20
        },
        {
          "date": "2026-10-15",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.03,
          "max_wait": 18
        },
        {
          "date": "2026-10-16",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.48,
          "max_wait": 20
        },
        {
          "date": "2026-10-17",
          "hours": 24,
          "readings": 144,
          "mean_wait": 4.45,
          "max_wait": 20
        },
        {
          "date": "2026-10-18",
          "hours": 24,
          "readings": 144,
          "mean_wait": 6.54,
          "max_wait": 20
        },
        {
          "date": "2026-10-19",
          "hours": 24,
          "readings": 144,
          "mean_wait": 3.37,
          "max_wait": 20
        },
        {
          "date": "2026-10-20",
          "hours": 24,
          "readings": 144,
          "mean_wait": 1.86,
          "max_wait": 14
        }
      ],
      "band_shares_oct_7_to_20": null,
      "zero_share_oct_7_to_20": 0,
      "checkpoints": [
        {
          "name": "Central security",
          "role": "main",
          "hours": 480,
          "days": 20,
          "readings": 2870,
          "mean_wait": 3.65,
          "max_wait": 20,
          "hours_mean_15_plus": 8,
          "hours_mean_30_plus": 0,
          "busiest_hour": 11,
          "busiest_hour_mean": 8.59,
          "busiest_hour_days": 20
        }
      ]
    }
  ],
  "coverage": {
    "european_airports_with_october_rows": 24,
    "band_shares_window": "raw readings observed 2026-10-07 00:00 to 2026-10-21 00:00 UTC (the raw table keeps 14 days)"
  }
}