{
    "success": true,
    "data": {
        "route": {
            "origin": {
                "iata": "LYS",
                "name": "Lyon",
                "country_code": "FR",
                "country_name": "France",
                "is_hub": false
            },
            "destination": {
                "iata": "OPO",
                "name": "Porto",
                "country_code": "PT",
                "country_name": "Portugal",
                "is_hub": false
            },
            "slug": "lys-opo"
        },
        "parameters": {
            "agencies": [
                "Biletix",
                "Clickavia",
                "EasyJet",
                "Farera",
                "Kupi.com",
                "Tickets",
                "Trip.com",
                "Авиасейлс"
            ],
            "agencies_count": 8,
            "airlines": [
                "EC",
                "TO",
                "U2",
                "V7",
                "VY"
            ],
            "airlines_count": 5,
            "airports_arrival": 1,
            "airports_arrival_list": [
                "OPO"
            ],
            "airports_departure": 2,
            "airports_departure_list": [
                "LYS"
            ],
            "avg_duration_min": 172,
            "avg_price": 72.2759,
            "avg_transfers": 0.52,
            "cheapest_agency": "EasyJet",
            "cheapest_month": 11,
            "cheapest_weekday": 5,
            "departures_per_week": 2,
            "direct_airlines_list": [
                "EC",
                "U2"
            ],
            "direct_flights_count": 13,
            "direct_share": 61.9,
            "distance_km": 1199,
            "eco_score": 8.4,
            "flight_time_min": 115,
            "flights_found": 21,
            "has_direct": true,
            "max_duration_min": 320,
            "max_price": 212,
            "min_duration_min": 130,
            "min_price": 40,
            "min_price_1stop": 70,
            "min_price_direct": 40,
            "months_with_flights": [
                10,
                11,
                12
            ],
            "popularity_score": 1.1,
            "seasonality": 1,
            "time_diff_hours": -1
        },
        "calendar": [
            {
                "date": "2026-11-15",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-16",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-17",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-18",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-19",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-20",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-21",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-22",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-23",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-24",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-25",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-26",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-27",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-28",
                "price_usd": 48,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-29",
                "price_usd": 41,
                "transfers": 0,
                "airline": "U2",
                "gate": "Авиасейлс",
                "duration_min": 135
            },
            {
                "date": "2026-11-30",
                "price_usd": 54,
                "transfers": 0,
                "airline": "U2",
                "gate": "Biletix",
                "duration_min": 135
            },
            {
                "date": "2026-12-01",
                "price_usd": 70,
                "transfers": 0,
                "airline": "VY",
                "gate": "Clickavia",
                "duration_min": 200
            },
            {
                "date": "2026-12-02",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-03",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-04",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-05",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-06",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-07",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-08",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-09",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-10",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-11",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-12",
                "price_usd": 55,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-13",
                "price_usd": 40,
                "transfers": 0,
                "airline": "U2",
                "gate": "EasyJet",
                "duration_min": 135
            },
            {
                "date": "2026-12-14",
                "price_usd": 74,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-15",
                "price_usd": 74,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-16",
                "price_usd": 74,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-17",
                "price_usd": 74,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-18",
                "price_usd": 74,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-19",
                "price_usd": 107,
                "transfers": 0,
                "airline": "TO",
                "gate": "Tickets",
                "duration_min": 265
            }
        ],
        "variants": [
            {
                "depart_date": "2026-12-13",
                "price_usd": 40,
                "airline": "U2",
                "flight_number": "6808",
                "departure_airport": "LYS",
                "arrival_airport": "OPO",
                "departure_time": "11:50:00",
                "arrival_time": "14:05:00",
                "duration_min": 135,
                "transfers": 0,
                "gate": "EasyJet",
                "ticket_id": "dd5074fef4cd77dcbe73ddc353d4f05b"
            },
            {
                "depart_date": "2026-11-29",
                "price_usd": 41,
                "airline": "U2",
                "flight_number": "4431",
                "departure_airport": "LYS",
                "arrival_airport": "OPO",
                "departure_time": "10:00:00",
                "arrival_time": "12:15:00",
                "duration_min": 135,
                "transfers": 0,
                "gate": "Авиасейлс",
                "ticket_id": "5e776df2ae3138bafe1257765c2f4241"
            },
            {
                "depart_date": "2026-11-30",
                "price_usd": 54,
                "airline": "U2",
                "flight_number": "4431",
                "departure_airport": "LYS",
                "arrival_airport": "OPO",
                "departure_time": "15:45:00",
                "arrival_time": "18:00:00",
                "duration_min": 135,
                "transfers": 0,
                "gate": "Biletix",
                "ticket_id": "ec07cf655d599e14b9e4d959eca2e574"
            },
            {
                "depart_date": "2026-12-01",
                "price_usd": 70,
                "airline": "VY",
                "flight_number": "8125",
                "departure_airport": "LYS",
                "arrival_airport": "OPO",
                "departure_time": "11:10:00",
                "arrival_time": "14:30:00",
                "duration_min": 200,
                "transfers": 1,
                "gate": "Clickavia",
                "ticket_id": "a31f9a59c6fd28820cf2d1a14822cb14"
            },
            {
                "depart_date": "2026-12-19",
                "price_usd": 107,
                "airline": "TO",
                "flight_number": "4840",
                "departure_airport": "LYS",
                "arrival_airport": "OPO",
                "departure_time": "08:35:00",
                "arrival_time": "13:00:00",
                "duration_min": 265,
                "transfers": 2,
                "gate": "Tickets",
                "ticket_id": "9eb5c8165629f412a50f2d442901b70c"
            },
            {
                "depart_date": "2026-12-19",
                "price_usd": 186,
                "airline": "U2",
                "flight_number": "6808",
                "departure_airport": "LYS",
                "arrival_airport": "OPO",
                "departure_time": "23:20:00",
                "arrival_time": "01:35:00",
                "duration_min": 135,
                "transfers": 0,
                "gate": "Farera",
                "ticket_id": "dfe8363d27ddd8abed4625d9141c8a69"
            },
            {
                "depart_date": "2026-12-01",
                "price_usd": 236,
                "airline": "U2",
                "flight_number": "6808",
                "departure_airport": "LYS",
                "arrival_airport": "OPO",
                "departure_time": "23:30:00",
                "arrival_time": "01:40:00",
                "duration_min": 130,
                "transfers": 0,
                "gate": "Trip.com",
                "ticket_id": "d459084dd74b8c84d14a6a9ebb832455"
            }
        ],
        "airlines": [
            {
                "iata": "U2",
                "name": "easyJet",
                "logo_url": "https://img.wway.io/pics/root/U2@png?exar=1&rs=fit:80:80",
                "is_lowcost": true,
                "routes_count": 996,
                "min_price_usd": 40
            },
            {
                "iata": "EC",
                "name": "easyJet",
                "logo_url": "https://img.wway.io/pics/root/EC@png?exar=1&rs=fit:80:80",
                "is_lowcost": true,
                "routes_count": 2,
                "min_price_usd": 62
            },
            {
                "iata": "VY",
                "name": "Vueling",
                "logo_url": "https://img.wway.io/pics/root/VY@png?exar=1&rs=fit:80:80",
                "is_lowcost": true,
                "routes_count": 228,
                "min_price_usd": 70
            },
            {
                "iata": "V7",
                "name": "Volotea",
                "logo_url": "https://img.wway.io/pics/root/V7@png?exar=1&rs=fit:80:80",
                "is_lowcost": true,
                "routes_count": 68,
                "min_price_usd": 106
            },
            {
                "iata": "TO",
                "name": "Transavia France",
                "logo_url": "https://img.wway.io/pics/root/TO@png?exar=1&rs=fit:80:80",
                "is_lowcost": true,
                "routes_count": 62,
                "min_price_usd": 107
            }
        ],
        "agencies": [
            {
                "name": "EasyJet",
                "min_price_usd": 40,
                "tickets_count": 4
            },
            {
                "name": "Авиасейлс",
                "min_price_usd": 41,
                "tickets_count": 1
            },
            {
                "name": "Farera",
                "min_price_usd": 42,
                "tickets_count": 3
            },
            {
                "name": "Biletix",
                "min_price_usd": 54,
                "tickets_count": 1
            },
            {
                "name": "Clickavia",
                "min_price_usd": 70,
                "tickets_count": 4
            },
            {
                "name": "Tickets",
                "min_price_usd": 107,
                "tickets_count": 2
            },
            {
                "name": "Trip.com",
                "min_price_usd": 160,
                "tickets_count": 5
            },
            {
                "name": "Kupi.com",
                "min_price_usd": 217,
                "tickets_count": 1
            }
        ],
        "airports": {
            "departure": [
                {
                    "iata": "LYS",
                    "name": "Lyon Saint-Exupery International Airport",
                    "iata_type": "airport",
                    "time_zone": "Europe/Paris"
                }
            ],
            "arrival": [
                {
                    "iata": "OPO",
                    "name": "Porto Airport",
                    "iata_type": "airport",
                    "time_zone": "Europe/Lisbon"
                }
            ]
        },
        "html_url": "https://cityvator.com/en/lys-opo/",
        "api_urls": {
            "self": "https://cityvator.com/api/routes/lys-opo",
            "qa": "https://cityvator.com/api/qa/route/lys-opo",
            "compare": "https://cityvator.com/api/compare/lys-opo-vs-"
        },
        "updated_at": "2026-10-15 23:40:13"
    },
    "meta": {
        "lang": "en",
        "currency": "USD",
        "requested_at": "2026-11-15T14:50:58+03:00",
        "powered_by": "Cityvator",
        "source": "https://cityvator.com",
        "license": "CC-BY-4.0",
        "attribution": "Data source: Cityvator (https://cityvator.com)"
    }
}