{
  "_note": "Every time below is transcribed from the operator's own published timetable. Edit this file, run _src/build.py, then _src/verify.py. Never add a time that is not on the operator's timetable.",
  "checked": "2026-11-03",
  "operators": {
    "anei": {
      "name": "Anei Kanko",
      "native": "安栄観光",
      "site": "https://aneikankou.co.jp/",
      "status_url": "https://aneikankou.co.jp/condition/index",
      "valid_from": "2026-10-01",
      "valid_to": "2027-03-31",
      "timetable_url": "https://aneikankou.co.jp/files/manager/pdf/timetable/2026.10.1-2027.3.31.pdf",
      "fares_url": "https://aneikankou.co.jp/timetable",
      "timetable_label": "Anei Kanko high-speed boat timetable, 1 Oct 2026 to 31 Mar 2027 (PDF)",
      "notes": [
        "Web pre-booking and pre-payment lets you board without visiting the counter on the day.",
        "Times can change within the period depending on conditions.",
        "Allow at least 30 minutes for connections at Ishigaki Port and on each island."
      ]
    },
    "ykf": {
      "name": "Yaeyama Kanko Ferry (YKF)",
      "native": "八重山観光フェリー",
      "site": "https://yaeyama.co.jp/",
      "status_url": "https://yaeyama.co.jp/operation.html",
      "valid_from": "2026-10-01",
      "valid_to": "2027-02-28",
      "timetable_url": "https://yaeyama.co.jp/files/docs/tt202610_02.pdf",
      "fares_url": "https://yaeyama.co.jp/operation.html",
      "timetable_label": "YKF timetable, 1 Oct 2026 to 28 Feb 2027 (PDF)",
      "notes": [
        "Tickets are open: you pick the sailing when you board.",
        "Times can change within the period because of conditions, weather or tide.",
        "No boarding in wet clothing."
      ]
    }
  },
  "routes": {
    "taketomi": {
      "name": "Taketomi",
      "port": "Taketomi",
      "island": "Taketomi",
      "duration_min": 10,
      "duration_max": 15,
      "services": {
        "anei": {
          "out": [
            [
              "07:30"
            ],
            [
              "09:00"
            ],
            [
              "10:00"
            ],
            [
              "11:00"
            ],
            [
              "12:30"
            ],
            [
              "15:30"
            ],
            [
              "16:30"
            ],
            [
              "17:30"
            ]
          ],
          "back": [
            [
              "07:50"
            ],
            [
              "09:20"
            ],
            [
              "10:20"
            ],
            [
              "11:20"
            ],
            [
              "12:50"
            ],
            [
              "14:50"
            ],
            [
              "15:50"
            ],
            [
              "16:50"
            ],
            [
              "17:50"
            ]
          ]
        },
        "ykf": {
          "out": [
            [
              "07:30"
            ],
            [
              "08:30"
            ],
            [
              "09:30"
            ],
            [
              "10:30"
            ],
            [
              "11:30"
            ],
            [
              "13:30"
            ],
            [
              "14:30"
            ],
            [
              "15:30"
            ],
            [
              "16:00"
            ],
            [
              "17:30"
            ]
          ],
          "back": [
            [
              "07:50"
            ],
            [
              "08:50"
            ],
            [
              "09:50"
            ],
            [
              "10:50"
            ],
            [
              "11:50"
            ],
            [
              "13:50"
            ],
            [
              "14:50"
            ],
            [
              "15:50"
            ],
            [
              "16:20"
            ],
            [
              "17:50"
            ]
          ]
        }
      }
    },
    "kohama": {
      "name": "Kohama",
      "port": "Kohama",
      "island": "Kohama",
      "duration_min": 25,
      "duration_max": 30,
      "services": {
        "anei": {
          "out": [
            [
              "09:40"
            ],
            [
              "11:00"
            ],
            [
              "14:50"
            ],
            [
              "16:20"
            ]
          ],
          "back": [
            [
              "10:20"
            ],
            [
              "11:40"
            ],
            [
              "15:30"
            ],
            [
              "17:00"
            ]
          ]
        },
        "ykf": {
          "out": [
            [
              "07:30"
            ],
            [
              "09:00"
            ],
            [
              "10:15"
            ],
            [
              "14:00"
            ],
            [
              "16:00"
            ],
            [
              "17:00"
            ]
          ],
          "back": [
            [
              "08:10"
            ],
            [
              "09:40"
            ],
            [
              "10:55"
            ],
            [
              "14:40"
            ],
            [
              "16:40"
            ],
            [
              "17:40"
            ]
          ]
        }
      }
    },
    "kuroshima": {
      "name": "Kuroshima",
      "port": "Kuroshima",
      "island": "Kuroshima",
      "duration_min": 25,
      "duration_max": 30,
      "services": {
        "anei": {
          "out": [
            [
              "08:00"
            ],
            [
              "13:30"
            ],
            [
              "16:00"
            ]
          ],
          "back": [
            [
              "08:40"
            ],
            [
              "14:10"
            ],
            [
              "16:40"
            ]
          ]
        },
        "ykf": {
          "out": [
            [
              "08:30"
            ],
            [
              "11:45"
            ],
            [
              "16:30"
            ]
          ],
          "back": [
            [
              "09:10"
            ],
            [
              "12:25"
            ],
            [
              "17:10"
            ]
          ]
        }
      }
    },
    "iriomote-ohara": {
      "name": "Iriomote (Ohara Port)",
      "port": "Ohara",
      "island": "Iriomote",
      "duration_min": 40,
      "duration_max": 45,
      "services": {
        "anei": {
          "out": [
            [
              "07:30",
              "runs only when the Uehara route is cancelled; connecting bus Ohara to Uehara"
            ],
            [
              "08:30"
            ],
            [
              "13:00"
            ],
            [
              "16:00",
              "connecting bus Ohara to Uehara when the Uehara route is cancelled"
            ]
          ],
          "back": [
            [
              "08:30",
              "runs only when the Uehara route is cancelled; connecting bus Uehara to Ohara"
            ],
            [
              "09:30"
            ],
            [
              "14:00",
              "calls at Taketomi"
            ],
            [
              "17:00",
              "connecting bus Uehara to Ohara when the Uehara route is cancelled"
            ]
          ]
        },
        "ykf": {
          "out": [
            [
              "07:30"
            ],
            [
              "09:00"
            ],
            [
              "10:30"
            ],
            [
              "14:00"
            ],
            [
              "15:30"
            ],
            [
              "16:10"
            ]
          ],
          "back": [
            [
              "08:30"
            ],
            [
              "10:00"
            ],
            [
              "11:30"
            ],
            [
              "15:00"
            ],
            [
              "16:30"
            ],
            [
              "17:10"
            ]
          ]
        }
      }
    },
    "iriomote-uehara": {
      "name": "Iriomote (Uehara Port)",
      "port": "Uehara",
      "island": "Iriomote",
      "duration_min": 45,
      "duration_max": 55,
      "duration_note_ykf": "YKF prints 45 to 50 minutes direct, and 70 to 80 minutes on sailings via Hatoma.",
      "services": {
        "anei": {
          "out": [
            [
              "07:30"
            ],
            [
              "08:30"
            ],
            [
              "13:30"
            ],
            [
              "16:00",
              "via Hatoma"
            ]
          ],
          "back": [
            [
              "08:30"
            ],
            [
              "09:30",
              "via Hatoma"
            ],
            [
              "14:30"
            ],
            [
              "17:15"
            ]
          ]
        },
        "ykf": {
          "out": [
            [
              "08:00"
            ],
            [
              "11:00"
            ],
            [
              "13:30"
            ],
            [
              "15:45",
              "via Hatoma"
            ]
          ],
          "back": [
            [
              "09:00",
              "via Hatoma"
            ],
            [
              "12:00"
            ],
            [
              "14:30"
            ],
            [
              "17:05"
            ]
          ],
          "via_max": 80
        }
      }
    },
    "hatoma": {
      "name": "Hatoma",
      "port": "Hatoma",
      "island": "Hatoma",
      "duration_min": 45,
      "duration_max": 75,
      "duration_note_ykf": "YKF prints 45 to 50 minutes direct, and 70 to 80 minutes on sailings via Uehara.",
      "services": {
        "anei": {
          "out": [
            [
              "08:30",
              "via Uehara"
            ],
            [
              "16:00"
            ]
          ],
          "back": [
            [
              "09:45"
            ],
            [
              "16:55",
              "via Uehara"
            ]
          ]
        },
        "ykf": {
          "out": [
            [
              "08:00",
              "via Uehara"
            ],
            [
              "15:45"
            ]
          ],
          "back": [
            [
              "09:20"
            ],
            [
              "16:40",
              "via Uehara"
            ]
          ],
          "via_max": 80
        }
      }
    },
    "hateruma": {
      "name": "Hateruma",
      "port": "Hateruma",
      "island": "Hateruma",
      "duration_min": 60,
      "duration_max": 90,
      "duration_note_anei": "Anei prints 60 to 90 minutes. On the large high-speed boat Paiji-ma 2, it can take about 90 to 100 minutes.",
      "services": {
        "anei": {
          "out": [
            [
              "08:00"
            ],
            [
              "14:30"
            ]
          ],
          "back": [
            [
              "09:50"
            ],
            [
              "16:20"
            ]
          ]
        }
      },
      "planner_max": 100
    }
  },
  "inter_island": [
    {
      "operator": "anei",
      "from": "Iriomote (Ohara)",
      "to": "Taketomi",
      "times": [
        "14:00"
      ],
      "duration": "35 to 40 minutes",
      "note": "The 14:00 Ohara to Ishigaki sailing calls at Taketomi."
    },
    {
      "operator": "anei",
      "from": "Iriomote (Uehara)",
      "to": "Hatoma",
      "times": [
        "09:30"
      ],
      "duration": "10 to 15 minutes",
      "note": "Hatoma to Uehara: 16:55. Runs only when the Uehara route runs."
    },
    {
      "operator": "ykf",
      "from": "Iriomote (Uehara)",
      "to": "Hatoma",
      "times": [
        "09:00"
      ],
      "duration": "10 to 15 minutes",
      "note": "Hatoma to Uehara: 16:40."
    }
  ],
  "fares": {
    "note": "Yen, incl. fuel surcharge. Adult = junior high school and up; child = elementary school. Infants ride free on an adult's lap (one per adult). The fuel surcharge changes, so check the operator before you travel.",
    "anei": {
      "source": "https://aneikankou.co.jp/timetable",
      "rows": {
        "taketomi": [
          970,
          1880,
          510,
          990
        ],
        "kohama": [
          1720,
          3340,
          870,
          1680
        ],
        "kuroshima": [
          1850,
          3590,
          950,
          1840
        ],
        "iriomote-ohara": [
          2520,
          4880,
          1290,
          2500
        ],
        "iriomote-uehara": [
          3290,
          6370,
          1650,
          3200
        ],
        "hatoma": [
          3290,
          6370,
          1650,
          3200
        ],
        "hateruma": [
          4990,
          9670,
          2500,
          4850
        ]
      }
    },
    "ykf": {
      "source": "https://yaeyama.co.jp/operation.html",
      "rows": {
        "taketomi": [
          970,
          1880,
          510,
          990
        ],
        "kohama": [
          1720,
          3340,
          870,
          1680
        ],
        "kuroshima": [
          1850,
          3590,
          950,
          1840
        ],
        "iriomote-ohara": [
          2520,
          4880,
          1290,
          2500
        ],
        "iriomote-uehara": [
          3290,
          6370,
          1650,
          3200
        ],
        "hatoma": [
          3290,
          6370,
          1650,
          3200
        ]
      }
    },
    "columns": [
      "Adult one way",
      "Adult return",
      "Child one way",
      "Child return"
    ]
  },
  "other": {
    "ishigaki_dream": "Ishigaki Dream Tours holds an irregular passenger-route licence and lists package tours on its site. It publishes no scheduled ferry timetable, so it is not in the tables.",
    "dream_source": "https://ishigaki-dream.co.jp/ferry"
  }
}