mcpField
F
Flywizz

Flywizz

ローカル
github.com/victorlane地図・旅行08 週間前に更新

Flywizz について

Flywizzは、Wizz Airのフライトデータを取得する非公式のオープンソースPythonラッパーで、自然言語検索用のMCPサーバーも含みます。時刻表、運賃、路線、運航状況を扱い、一部の空席照会エンドポイントにはボット対策があると説明しています。

主な機能

  1. 01運航日と時刻表の検索
  2. 02日付別の運賃比較
  3. 03路線と目的地の探索
  4. 04フライト状況の取得
  5. 05非同期クライアントメソッド

活用シーン

  1. 01指定路線と期間のフライト検索
  2. 02日付ごとの運賃比較
  3. 03空港から行ける目的地の探索
  4. 04フライト状況の確認

MCP 対応

付属のMCPサーバーにより、MCPクライアントから自然言語でWizz Airのフライトを検索できます。READMEでは Claude Desktop、Claude Code、Cursor がクライアントとして挙げられています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"victorlane-flywizz": {
"command": "uvx",
"args": [
"Flywizz"
]
}
}
}
起動コマンドuvx Flywizz

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiFlywizz0.1.0

ツール

5

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
adultsintegerいいえ
originstringはい
date_tostringはい
infantsintegerいいえ
childrenintegerいいえ
date_fromstringはい
destinationstringはい
wizz_discount_clubbooleanいいえ

詳細

Flywizz SDK

PyPI version Python versions CI CodeQL PyPI downloads License

Wizz Air のフライトデータを取得するための、オープンソースの非公式 API ラッパーです。

ヒント

AI エージェント向けの MCP サーバーを同梱しています。 Flywizz を Claude Desktop、 Claude Code、または Cursor に接続して、自然言語で Wizz Air のフライトを検索できます。 MCP クイックスタートへ進んでください。

目次

インストール

pip install Flywizz

または uv を使用します。

uv add Flywizz

クイックスタート

from datetime import datetime, timedelta
from flywizz import WizzAir, TimetableSearch

# Initialize the client
client = WizzAir()

# Set up search parameters
search = TimetableSearch(
    origin="BUD",       # Budapest
    destination="LTN",  # London Luton
    date_from=datetime.now() + timedelta(days=30),
    date_to=datetime.now() + timedelta(days=60),
)

# One call gets the schedule and the prices
for day in client.get_timetable(search):
    if day.price is None:
        continue
    print(f"{day.departure_date.date()}: {day.price.amount} {day.price.currency}")
    print(f"  departures: {', '.join(d.departure.strftime('%H:%M') for d in day.departures)}")

各エントリーは1運航日を表します。その日の最安運賃に加えて、すべての出発時刻も含まれるため、1回の呼び出しで「いつ運航するか」と「料金はいくらか」の両方がわかります。

最初に知っておくべき3つのこと

料金は出発地の通貨で表示されます

Wizz Air にはサーバー側の通貨上書き機能がありません。BUD -> LTN は HUF、LTN -> BUD は GBP、WAW -> LTN は PLN で料金が表示されます。currency という名前の本文フィールド、クエリパラメーター、Cookie、ヘッダーはすべて無視されます。

検索前に通貨を確認する必要がある場合は、get_network() から Station.currency_code を取得し、クライアント側で換算してください。

すべての運航日に料金が表示されるわけではありません

timetableV2 と farechart は各日に price オブジェクトを付与しますが、料金が直接表示されない日には、amount が 0 で、price_type は checkPrice(運賃は存在しますが、search/search 経由でのみ確認できます)または noData のいずれかになります。Flywizz はどちらも price=None にマッピングするため、料金が表示されていない日を無料と誤認することはありません。時刻表のエントリーでは、original_price を通じて引き続き参考運賃を確認できます。

for day in client.get_timetable(search):
    if day.price is not None:
        print(day.departure_date.date(), day.price.amount, day.price.currency)
    elif day.original_price is not None:
        print(day.departure_date.date(), "~", day.original_price.amount, "(check price)")
検索期間には上限があり、上限はそれぞれ異なります

料金が表示されるデータと表示されないデータでは、先の日付をどこまで検索できるかが異なります。どちらも期間が広すぎると 400 InvalidTimeDateRange を返し、詳しい説明はありません。そのため Flywizz は、それぞれの上限を明記したメッセージとともに、各上限を適用します。

from flywizz.misc import (
    MAX_TIMETABLE_WINDOW_DAYS,      # 42, for timetableV2 and farechart
    MAX_FLIGHT_DATES_WINDOW_DAYS,   # 62, for the schedule endpoints
)

cheapest_weekend() は、デフォルトの months_ahead=3 がどちらの上限も大幅に超えるため、内部で期間を分割します。

search/search はボットゲートの背後にあります

4つのエンドポイント(search/search、booking/seatmap、booking/ancillaries、booking/passengers)は Kasada の背後にあり、ブラウザー以外のクライアントからのリクエストには、空の本文とともに 429 を返します。Flywizz はチャレンジの解決を試みず、BotGateError を発生させます。

料金が表示される timetableV2 と farechart を含め、それ以外はすべて公開されています。これだけで料金の追跡、ルートの探索、カレンダー検索が可能です。運賃バンドルとセールキーが必要な場合は、実際のブラウザーセッションを使用し、そのヘッダーを渡してください。

from flywizz import WizzAir, WizzairTransport

client = WizzAir(WizzairTransport(kasada_headers={
    "x-kpsdk-ct": "...",
    "x-kpsdk-v": "...",
    "x-kpsdk-h": "...",
    "x-kpsdk-cd": "...",
}))

ゲート、セッションのハンドシェイク、ルートテーブル全体の詳細については、docs/internal-api-spec.mdを参照してください。

API リファレンス

WizzAir クラス
コンストラクター
WizzAir(transport: Optional[Transport] = None)

新しい Wizz Air クライアントインスタンスを作成します。

パラメーター:

  • transport(Transport、任意):カスタムトランスポートを注入します。たとえば、デフォルトをラップする CachingTransport、kasada_headers を備えた WizzairTransport、またはテスト用のフィクスチャトランスポートを指定できます。デフォルトは、新しい WizzairTransport です。

例:

# Defaults
client = WizzAir()

# With caching for the 650 KB network metadata
from flywizz import CachingTransport, WizzairTransport
client = WizzAir(CachingTransport(WizzairTransport(), ttl=3600))
メソッド
メソッドエンドポイント取得できる内容
get_network(language="en-gb")asset/mapすべての空港、座標、通貨、就航路線
get_destinations(origin, direct_only=True)derivedorigin から到達できる空港
explore_by_country(origin)derived国コード別に分類された目的地
validate_route(origin, destination)derivedWizz Air がこの路線を直行便で運航しているかどうか
get_flight_dates(origin, destination, date_from, date_to)search/flightDates運航日。料金情報はなく、非常に低負荷です
get_flight_dates_multi(origin, destinations, date_from, date_to)search/FlightDatesMultiArrival1 リクエストあたり最大 5 か所の目的地の運航日をバッチで取得
get_connecting_flight_dates(origin, destination, date_from, date_to)search/dohopFlightDates乗り継ぎ 1 回の便も含む運航日
get_timetable(params)search/timetableV2日ごとの最安料金と、すべての出発便
get_return_timetable(params)search/timetableV21 回の呼び出しで往路と復路を取得
get_fare_chart(params)asset/farechart指定日付の前後の料金一覧
get_availability(params)search/search運賃バンドルと販売キー。ボットによる制限があります
cheapest_in_month(origin, destination, month)derived1 か月間で最も安い日
cheapest_weekend(origin, destination, months_ahead=3)derived金曜から日曜、または金曜から月曜の往復で最も安い日程
explore_with_fares(origin, date_from, date_to, limit=None)derived各目的地の最安料金
get_flight_status(carrier_code, flight_number, date=None)asset/flightinformation1 つの便名のリアルタイム運航状況
get_currencies()asset/currencies対応する ISO 4217 コード
get_countries()asset/countryEU/シェンゲン協定のフラグ付きの国
get_cultures()asset/culturesサイトの言語と各言語の通貨
get_service_fees(currencies=None)asset/serviceFees公開されている手荷物、座席、変更の手数料
get_wdc_prices()asset/wdcPriceDiscount Club の会員ランクと最低割引額

すべてのメソッドは、同じシグネチャで AsyncWizzAir にも用意されています。

TimetableSearch クラス

時刻表検索のパラメーターです。

TimetableSearch(
    origin: str,
    destination: str,
    date_from: datetime,
    date_to: datetime,
    return_date_from: Optional[datetime] = None,
    return_date_to: Optional[datetime] = None,
    adults: int = 1,
    children: int = 0,
    infants: int = 0,
    price_type: str = "regular",
)

パラメーター:

  • origin(str):出発空港の IATA コード(例:"BUD")
  • destination(str):到着空港の IATA コード(例:"LTN")
  • date_from(datetime):往路の出発期間の開始日時
  • date_to(datetime):往路の出発期間の終了日時
  • return_date_from / return_date_to(datetime、任意):復路の期間です。 get_return_timetable() では両方が必須です
  • adults / children / infants(int):乗客数です。大人は少なくとも 1 人必要です
  • price_type(str):Wizz Discount Club の料金には "regular" または "wdc" を指定します
FareChartSearch クラス

料金一覧のパラメーターです。

FareChartSearch(
    origin: str,
    destination: str,
    date: datetime,
    day_interval: int = 3,
    adults: int = 1,
    children: int = 0,
    infants: int = 0,
    price_type: str = "regular",
)

day_interval は date の前後の期間を指定する値で、3 以上である必要があります。そのため、デフォルトでは 7 日間が返されます。3 未満の値は、上流で DayIntervalMustBeGreaterOrEqualTo3 により拒否されます。

AvailabilitySearch クラス

ボットによる制限がある空席照会のパラメーターです。

AvailabilitySearch(
    origin: str,
    destination: str,
    departure_date: datetime,
    return_date: Optional[datetime] = None,
    wdc: bool = True,
    is_flight_change: bool = False,
    adults: int = 1,
    children: int = 0,
    infants: int = 0,
)

データモデル

Price

Wizz Air が報告する金額を表します。

属性:

  • amount(float):金額
  • currency(str):ISO 4217 コード。常に出発空港の通貨です
  • exchanged_amount(Optional[float]):SPA のクライアント側通貨換算フックです。 匿名セッションでは None のままです
  • exchanged_currency(Optional[str]):exchanged_amount の通貨
TimetableEntry

運航日のうちの1日分の路線と、最安運賃です。

属性:

  • departure_station (str)、arrival_station (str):IATAコード
  • departure_date (datetime):運航日
  • price (Optional[Price]):その日の最安運賃。完売の場合は None
  • original_price (Optional[Price]):割引前の価格
  • departures (list[Departure]):その日のすべての出発便
  • price_type (Optional[str]):在庫があった場合は "price"
  • has_mac_flight (bool):路線に大都市圏の代替空港が含まれるかどうか
  • applied_coupon_code (Optional[str])
Departure

属性:

  • departure (datetime):出発時刻
  • is_cheapest_of_the_day (bool):この出発便が price の対象かどうか
FlightDate

get_connecting_flight_dates() から返される運航日のうちの1日分です。

属性:

  • date (datetime):運航日
  • stops (int):直行便の場合は0、乗り継ぎの場合は1以上
  • is_direct (bool):プロパティ。stops が0の場合はtrue
FareChartEntry

価格一覧の1日分です。

属性:

  • departure_station (str)、arrival_station (str):IATAコード
  • day (datetime):日付
  • price (Optional[Price]):その日の最安価格
  • class_of_service (Optional[str]):見積もりの取得元となった予約クラス
  • price_type (Optional[str])、has_mac_flight (bool)
Station

Wizz Air の運航中ネットワークにある空港です。探索メソッドから返されます。

属性:

  • iata (str):IATA 空港コード
  • name (str):空港名
  • country_code (str):大文字の ISO2 国コード(例:"HU"、"GB")
  • country_name (str):国名
  • currency_code (str):現地通貨。この空港発の運賃はこの通貨で表示されます
  • latitude (float)、longitude (float):座標
  • mac (Optional[str]):大都市圏コード(例:"LON")
  • aliases (list[str]):別名
  • categories (list[int]):Wizz Air が割り当てたマーケティングカテゴリ
  • rank (Optional[int])、is_fake_station (bool)
  • connections (list[Connection]):この空港から運航するすべての路線

ヘルパー:destinations(direct_only=True) は IATA コードのみを返します。

Connection

属性:

  • iata (str):目的地の空港コード
  • is_direct (bool):Wizz Air の直行便かどうか。通常はこちらのフラグを使用します
  • is_connected (bool):直行便ではなく、セルフトランスファーの乗り継ぎかどうか
  • is_domestic (bool)、is_new (bool)
  • operation_start_date (Optional[datetime]):路線の運航開始日
FlightStatus

フライト情報エンドポイントから返される、運航中の1便分の情報です。

属性:

  • flight_id (int)、carrier_code (str)、flight_number (int)
  • departure_airport (str)、arrival_airport (str)
  • original_departure_airport / original_arrival_airport (Optional[str]): 便が別の空港に変更された場合、実際の空港とは異なります
  • operation_day (Optional[datetime])
  • scheduled_departure / scheduled_arrival (Optional[datetime])
  • op_suffix (Optional[str])
DestinationFare

explore_with_fares() から返されます。到達可能な目的地と、価格照会で取得できた場合はサンプル期間中の最安運賃を組み合わせたものです。

属性:

  • station (Station):目的地
  • price (Optional[Price]):期間中の最安運賃。路線がネットワーク内にあっても、価格付きの在庫情報が返されなかった場合は None
  • departure_date (Optional[datetime]):その運賃が適用された日

例

1か月のうち最も安い日
from datetime import datetime
from flywizz import WizzAir

client = WizzAir()
cheapest = client.cheapest_in_month("BUD", "LTN", datetime(2026, 11, 1))

if cheapest:
    print(f"{cheapest.departure_date.date()}: "
          f"{cheapest.price.amount} {cheapest.price.currency}")
前後1日と比べて安いかどうか
from datetime import datetime
from flywizz import WizzAir, FareChartSearch

client = WizzAir()
strip = client.get_fare_chart(
    FareChartSearch(origin="BUD", destination="LTN",
                    date=datetime(2026, 11, 10), day_interval=3)
)

for day in strip:
    price = f"{day.price.amount:.0f} {day.price.currency}" if day.price else "-"
    print(f"{day.day.date()}  {price}")
今後3か月で最も安い週末
from flywizz import WizzAir

client = WizzAir()
weekend = client.cheapest_weekend("BUD", "LTN", months_ahead=3)

if weekend:
    out, back = weekend
    total = out.price.amount + back.price.amount
    print(f"{out.departure_date.date()} -> {back.departure_date.date()}: "
          f"{total} {out.price.currency}")
Discount Club の価格
from datetime import datetime, timedelta
from flywizz import WizzAir, TimetableSearch

client = WizzAir()
wdc = client.get_timetable(
    TimetableSearch(
        origin="BUD", destination="LTN",
        date_from=datetime.now() + timedelta(days=30),
        date_to=datetime.now() + timedelta(days=45),
        price_type="wdc",
    )
)
リアルタイムのフライト状況
from flywizz import WizzAir

client = WizzAir()
for leg in client.get_flight_status("W6", "6201"):
    print(f"{leg.operation_day.date()} {leg.departure_airport} -> {leg.arrival_airport}")

航空会社コードは AOC の接頭辞です:W6(ハンガリー)、W4(マルタ)、W9(英国)。

エラー処理
from flywizz import BotGateError, ValidationError, WizzairException

try:
    entries = client.get_timetable(search)
    if not entries:
        print("No flights found for the given criteria")
except ValidationError as e:
    print(f"Wizz Air rejected the request: {e.codes}")
except BotGateError:
    print("This endpoint needs a browser session")
except WizzairException as e:
    print(f"Wizz Air API error: {e}")

ValidationError.codes には Wizz Air 独自の検証コードが含まれ、問題があったフィールドを示します。空のリストは API に一致する結果がなかったことを意味し、失敗を意味することはありません。

複数の路線を一度に確認する

get_flight_dates_multi() は、1 回のリクエストで複数の目的地の運航スケジュールに関する質問に答えます。get_flight_dates() を繰り返し呼び出す場合と比べて、費用は 5 分の 1 です。

from datetime import datetime, timedelta
from flywizz import WizzAir, WizzairTransport, CachingTransport

client = WizzAir(CachingTransport(WizzairTransport()))
start = datetime.now() + timedelta(days=30)

destinations = [s.iata for s in client.get_destinations("BUD")]
dates = client.get_flight_dates_multi("BUD", destinations, start, start + timedelta(days=30))

for iata, days in dates.items():
    print(f"{iata}: {len(days)} operating days")

指定したすべての目的地が結果に含まれます。指定期間に運航していない路線は、結果から欠落するのではなく空のリストとして返されるため、含まれているか確認し忘れる心配はありません。

エンドポイントが 1 回のリクエストで受け付ける目的地は最大 5 つで、上限を超えるリストはエラーではなく、結果なしとして返されます。Flywizz が自動でバッチ処理するため、渡すリストに実質的な上限はありません。

運賃は別です。運賃を取得するバッチ処理用の機能はないため、explore_with_fares() は目的地ごとに 1 回ずつ呼び出す必要があります。

乗り継ぎが必要なフライト

validate_route() と get_flight_dates() が対象とするのは直行便のみです。そのため、いずれかが False を返しても、その路線を利用できないとは限りません。 get_connecting_flight_dates() は、乗り継ぎが必要な組み合わせにも対応しています。

from datetime import datetime, timedelta
from flywizz import WizzAir

client = WizzAir()
start = datetime.now() + timedelta(days=30)

client.validate_route("KTW", "LIS")   # False - no direct flight

for day in client.get_connecting_flight_dates("KTW", "LIS", start, start + timedelta(days=30)):
    print(day.date.date(), "direct" if day.is_direct else f"{day.stops} stop(s)")

直行便が一部の曜日にしか運航していない路線では、直行便と乗り継ぎ便の両方が混在して返されるため、乗り継ぎが必要な曜日を確認できます。直行便のみが必要な場合は、is_direct で絞り込んでください。

探索モード

探索モードでは、「ここから実際にどこへ飛べるか」を確認できます。Wizz Air の最新のネットワークメタデータを一度読み込み、任意の出発地から到達できる目的地を返します。必要に応じてグループ化したり、指定期間内の最安運賃と組み合わせたりできます。

以下のすべてのメソッドは、WizzAir と AsyncWizzAir の両方で利用できます。

すべての目的地を一覧表示する
for station in client.get_destinations("BUD"):
    print(f"{station.iata} {station.name} ({station.country_code})")

セルフ乗り継ぎを含めるには、direct_only=False を指定してください。

目的地をグループ化する
by_country = client.explore_by_country("BUD")

print(f"BUD flies to {len(by_country)} countries")
for country, stations in sorted(by_country.items()):
    codes = ", ".join(s.iata for s in stations)
    print(f"  {country}: {codes}")

国コードは ISO2 の大文字です。

特定の路線を確認する
client.validate_route("BUD", "LTN")  # True
最安運賃付きの目的地

explore_with_fares() はネットワーク上の目的地と時刻表の検索結果を組み合わせます。そのため、各目的地について、最安の Price が返されます。指定期間内にその路線の空席情報が返されなかった場合は None になります。

Wizz Air には「どこへでも」という検索機能がないため、目的地ごとに 1 回呼び出す必要があります。繰り返し処理する際は limit を使用し、トランスポートを CachingTransport でラップしてください。

from datetime import datetime, timedelta

start = datetime.now() + timedelta(days=30)
end = start + timedelta(days=14)

results = client.explore_with_fares("BUD", start, end, limit=20)

priced = [d for d in results if d.price is not None]
for d in sorted(priced, key=lambda d: d.price.amount)[:10]:
    print(f"{d.station.iata} {d.station.name}: "
          f"{d.price.amount} {d.price.currency}")

目的地ごとの運賃はすべて出発地の通貨で表示されるため、そのまま比較できます。

非同期での使用

AsyncWizzAir にはすべての探索メソッドが用意されており、explore_with_fares() は同時に複数のリクエストを実行します。

import asyncio
from datetime import datetime, timedelta
from flywizz import AsyncWizzAir

async def main():
    async with AsyncWizzAir() as client:
        results = await client.explore_with_fares(
            "BUD",
            datetime.now() + timedelta(days=30),
            datetime.now() + timedelta(days=45),
            limit=20,
            concurrency=5,
        )
        print(f"{sum(1 for r in results if r.price)} priced destinations")

asyncio.run(main())

探索メソッドを続けて複数回呼び出す場合は、ネットワークメタデータが一度だけ取得され、再利用されるように、トランスポートを CachingTransport でラップしてください。

Claude、Cursor、その他の MCP クライアントでの使用

重要

2 つのコマンドを実行するだけで完了です。

uv tool install "Flywizz[mcp]"
claude mcp add flywizz flywizz-mcp

これで、エージェントは自然言語で Wizz Air のフライトを検索できるようになります。API キーもアカウントも不要です。

Flywizz にはオプションの Model Context Protocol サーバーが付属しており、エージェントは「11 月にブダペストからロンドンへ飛ぶ場合、最も安い曜日はいつ?」や「12 月の第 1 週にブダペストからどこへ飛べる?」といった自然言語のプロンプトで Wizz Air の運賃を検索できます。

クイックスタート

1. MCP エクストラ付きで Flywizz をインストールします。

uv tool install "Flywizz[mcp]"

または pip を使用します。

pipx install "Flywizz[mcp]"

これにより、flywizz-mcp コンソールスクリプトが PATH にインストールされます。

2. エージェントに追加します。

Claude Code(1 行のコマンド):

claude mcp add flywizz flywizz-mcp

Claude Desktop:macOS では ~/Library/Application Support/Claude/claude_desktop_config.json(Windows では %APPDATA%\Claude\claude_desktop_config.json)を開き、次を追加します。

{
  "mcpServers": {
    "flywizz": {
      "command": "flywizz-mcp"
    }
  }
}

その後、Claude Desktop を再起動します。

Cursor:設定 → MCP → 新しいサーバーを追加し、名前に flywizz、コマンドに flywizz-mcp を指定します。

3. 試してみましょう。 エージェントに次のように尋ねます。

「11 月にブダペストからロンドン・ルートンへ飛ぶ場合、最も安い曜日はいつですか?」

エージェントは origin="BUD"、destination="LTN"、month="2026-11-01" を指定して cheapest_day を呼び出し、曜日と運賃を返します。

通貨

Wizz Air には通貨設定がないため、通貨設定はありません。各ツールは出発空港の現地通貨で運賃を返し、金額とともに通貨コードを報告します。ユーロと決めつけず、返された通貨で案内するようエージェントに伝えてください。

公開されているツール

エージェントが確実に選べるよう、サーバーは厳選した5つのツールを公開しています。

  • find_fares:「11月のBUDからLTNはいくらですか」に対応し、日ごとの詳細とすべての出発時刻を返します
  • cheapest_day:「今月、XからYへ飛ぶなら何曜日が最安ですか」に対応します
  • price_around:「10日の前後1日で安くなりますか」に対応します
  • explore_destinations:「Xからどの国へ行けますか」に対応します
  • flight_status:「W6 6201はいつ運航していますか」に対応します

API キー、アカウント、レート制限の設定は不要です。サーバーは呼び出し間で単一のキャッシュ済みWizzAirクライアントを再利用するため、ネットワークメタデータはプロセスごとに一度だけ取得されます。

ボット対策で制限されているsearch/searchエンドポイントは、意図的に公開していません。ヘッドレスプロセスからは動作せず、常に失敗するエージェントツールは、ツールがないよりも悪いためです。

API の特性

上流 API の以下の特性によって、この SDK でできることとできないことが決まります。Flywizz がすべて処理しますが、一部の呼び出しがそのように動作する理由を理解するうえで知っておくと役立ちます。

動作
国コードISO 3166-1 alpha-2 の大文字表記です。小文字のコードは拒否されます。
認証匿名で利用できますが、各リクエストにはセッションハンドシェイクと、呼び出しごとにローテーションする CSRF トークンが必要です。
通貨出発空港によって決まり、変更できません。クライアント側で換算してください。
格安運賃の検索「どこでも」を検索するエンドポイントはありません。explore_with_fares()は目的地ごとに1回の呼び出しを行います。
運賃を取得できるエンドポイントtimetableV2とfarechartは公開されていますが、search/searchは制限されています。
ページネーションありません。すべてのレスポンスが完全なため、asset/mapは650 KBになります。
期間の上限時刻表の期間は最大42日、スケジュールの期間は最大62日です。
ボット対策4つのエンドポイントで、常時 Kasada によるボット対策が行われています。

キャッシュ

asset/mapは650 KBで、変更もほとんどありません。複数回呼び出す場合は、トランスポートをラップしてください。

from flywizz import WizzAir, WizzairTransport, CachingTransport

client = WizzAir(CachingTransport(WizzairTransport(), ttl=3600))

非同期コードには非同期ラッパーが必要です。2つは互換性がありません。混在させるとコルーチンがキャッシュされるのではなく、TypeErrorが発生します。

from flywizz import AsyncWizzAir, AsyncWizzairTransport, AsyncCachingTransport

client = AsyncWizzAir(AsyncCachingTransport(AsyncWizzairTransport(), ttl=3600))

どちらのラッパーも POST リクエストはキャッシュしないため、運賃は常に最新の状態です。キャッシュを早めに破棄するにはinvalidate()を呼び出してください。

レート制限

SDK はネットワークエラーと5xxレスポンスに対し、最大4回まで指数バックオフで再試行します。意図的に429は再試行しません。この API では、これはバックプレッシャーではなく Kasada によるボット対策ゲートであり、再試行しても負荷が増えるだけで、リクエストは失敗するためです。

Wizz Air の API は匿名で利用できますが、あなた自身のものではありません。節度ある利用を心がけ、ネットワークメタデータをキャッシュし、explore_with_fares()による呼び出しの増加を控えめにし、運賃の変動頻度を超えて運賃をポーリングしないでください。

貢献

これはオープンソースプロジェクトです。貢献を歓迎します。CONTRIBUTING.mdをご覧ください。アーキテクチャに関するエージェント向けの説明はAGENTS.mdにあり、上流 API について判明しているすべての情報はdocs/internal-api-spec.mdに記載されています。

免責事項

これは非公式の API ラッパーであり、Wizz Air とは提携していません。航空会社の公式ウェブサイトが使用する公開エンドポイントに対して、読み取り専用のリクエストを実行します。ご自身の責任で使用し、Wizz Air の利用規約を遵守してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。