{
    "success": true,
    "data": {
        "route": {
            "origin": {
                "iata": "CMN",
                "name": "Casablanca",
                "country_code": "MA",
                "country_name": "Morocco",
                "is_hub": false
            },
            "destination": {
                "iata": "OPO",
                "name": "Porto",
                "country_code": "PT",
                "country_name": "Portugal",
                "is_hub": false
            },
            "slug": "cmn-opo"
        },
        "parameters": {
            "agencies": [
                "Aviakassa",
                "Clickavia",
                "Kiwi.com",
                "OneTwoTrip",
                "Trip.com",
                "Авиасейлс"
            ],
            "agencies_count": 6,
            "airlines": [
                "AT"
            ],
            "airlines_count": 1,
            "airports_arrival": 1,
            "airports_arrival_list": [
                "OPO"
            ],
            "airports_departure": 1,
            "airports_departure_list": [
                "CMN"
            ],
            "avg_duration_min": 166,
            "avg_price": 102.5789,
            "avg_transfers": 0.45,
            "cheapest_agency": "Clickavia",
            "cheapest_month": 12,
            "cheapest_weekday": 4,
            "departures_per_week": 1,
            "direct_airlines_list": [
                "AT"
            ],
            "direct_flights_count": 6,
            "direct_share": 54.55,
            "distance_km": 853,
            "eco_score": 8.7,
            "flight_time_min": 90,
            "flights_found": 11,
            "has_direct": true,
            "max_duration_min": 355,
            "max_price": 148,
            "min_duration_min": 105,
            "min_price": 64,
            "min_price_1stop": 64,
            "min_price_direct": 100,
            "months_with_flights": [
                10,
                11,
                12
            ],
            "popularity_score": 0.6,
            "seasonality": 1,
            "time_diff_hours": 0
        },
        "calendar": [
            {
                "date": "2026-11-15",
                "price_usd": 101,
                "transfers": 0,
                "airline": "AT",
                "gate": "Trip.com",
                "duration_min": 105
            },
            {
                "date": "2026-11-16",
                "price_usd": 131,
                "transfers": 1,
                "airline": "AT",
                "gate": "Aviakassa",
                "duration_min": 355
            },
            {
                "date": "2026-11-18",
                "price_usd": 126,
                "transfers": 1,
                "airline": "AT",
                "gate": "Clickavia",
                "duration_min": 345
            },
            {
                "date": "2026-11-19",
                "price_usd": 137,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-20",
                "price_usd": 137,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-21",
                "price_usd": 137,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-25",
                "price_usd": 137,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-26",
                "price_usd": 137,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-11-27",
                "price_usd": 148,
                "transfers": 0,
                "airline": "AT",
                "gate": "Авиасейлс",
                "duration_min": 105
            },
            {
                "date": "2026-12-10",
                "price_usd": 64,
                "transfers": 0,
                "airline": "AT",
                "gate": "Clickavia",
                "duration_min": 165
            },
            {
                "date": "2026-12-11",
                "price_usd": 67,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-12",
                "price_usd": 67,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-16",
                "price_usd": 67,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-17",
                "price_usd": 67,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-18",
                "price_usd": 67,
                "transfers": 0,
                "airline": null,
                "gate": null,
                "duration_min": 0
            },
            {
                "date": "2026-12-19",
                "price_usd": 70,
                "transfers": 0,
                "airline": "AT",
                "gate": "Clickavia",
                "duration_min": 165
            }
        ],
        "variants": [
            {
                "depart_date": "2026-12-10",
                "price_usd": 64,
                "airline": "AT",
                "flight_number": "988",
                "departure_airport": "CMN",
                "arrival_airport": "OPO",
                "departure_time": "12:10:00",
                "arrival_time": "14:55:00",
                "duration_min": 165,
                "transfers": 1,
                "gate": "Clickavia",
                "ticket_id": "93c0c5a1b83ed3096a9cab640e300167"
            },
            {
                "depart_date": "2026-12-19",
                "price_usd": 70,
                "airline": "AT",
                "flight_number": "984",
                "departure_airport": "CMN",
                "arrival_airport": "OPO",
                "departure_time": "17:45:00",
                "arrival_time": "20:30:00",
                "duration_min": 165,
                "transfers": 1,
                "gate": "Clickavia",
                "ticket_id": "4d6996695d962b648f5ec704a3a5ec1c"
            },
            {
                "depart_date": "2026-12-19",
                "price_usd": 100,
                "airline": "AT",
                "flight_number": "994",
                "departure_airport": "CMN",
                "arrival_airport": "OPO",
                "departure_time": "10:30:00",
                "arrival_time": "12:15:00",
                "duration_min": 105,
                "transfers": 0,
                "gate": "Trip.com",
                "ticket_id": "ceb5015be7a866e48c36c618b831eeac"
            },
            {
                "depart_date": "2026-11-15",
                "price_usd": 101,
                "airline": "AT",
                "flight_number": "996",
                "departure_airport": "CMN",
                "arrival_airport": "OPO",
                "departure_time": "17:15:00",
                "arrival_time": "19:00:00",
                "duration_min": 105,
                "transfers": 0,
                "gate": "Trip.com",
                "ticket_id": "aa85dbaff9f7c9c7dec854bfc6851138"
            },
            {
                "depart_date": "2026-12-10",
                "price_usd": 103,
                "airline": "AT",
                "flight_number": "994",
                "departure_airport": "CMN",
                "arrival_airport": "OPO",
                "departure_time": "10:30:00",
                "arrival_time": "12:15:00",
                "duration_min": 105,
                "transfers": 0,
                "gate": "OneTwoTrip",
                "ticket_id": "2b8088337b12fe8745b02f97dda7f2fd"
            },
            {
                "depart_date": "2026-11-18",
                "price_usd": 126,
                "airline": "AT",
                "flight_number": "954",
                "departure_airport": "CMN",
                "arrival_airport": "OPO",
                "departure_time": "08:55:00",
                "arrival_time": "14:40:00",
                "duration_min": 345,
                "transfers": 1,
                "gate": "Clickavia",
                "ticket_id": "45d6b3f4b8052a204fb1b86c8d8a66c5"
            },
            {
                "depart_date": "2026-11-16",
                "price_usd": 131,
                "airline": "AT",
                "flight_number": "954",
                "departure_airport": "CMN",
                "arrival_airport": "OPO",
                "departure_time": "08:55:00",
                "arrival_time": "14:50:00",
                "duration_min": 355,
                "transfers": 1,
                "gate": "Aviakassa",
                "ticket_id": "65dceeba6e5e3b7ebdcb2cd3ce2214ff"
            },
            {
                "depart_date": "2026-11-27",
                "price_usd": 148,
                "airline": "AT",
                "flight_number": "996",
                "departure_airport": "CMN",
                "arrival_airport": "OPO",
                "departure_time": "17:05:00",
                "arrival_time": "18:50:00",
                "duration_min": 105,
                "transfers": 0,
                "gate": "Авиасейлс",
                "ticket_id": "3ae28dc41054846d9cb68e8c0d64fc94"
            }
        ],
        "airlines": [
            {
                "iata": "AT",
                "name": "Royal Air Maroc",
                "logo_url": "https://img.wway.io/pics/root/AT@png?exar=1&rs=fit:80:80",
                "is_lowcost": false,
                "routes_count": 220,
                "min_price_usd": 64
            }
        ],
        "agencies": [
            {
                "name": "Clickavia",
                "min_price_usd": 64,
                "tickets_count": 4
            },
            {
                "name": "Trip.com",
                "min_price_usd": 100,
                "tickets_count": 3
            },
            {
                "name": "OneTwoTrip",
                "min_price_usd": 103,
                "tickets_count": 1
            },
            {
                "name": "Aviakassa",
                "min_price_usd": 131,
                "tickets_count": 1
            },
            {
                "name": "Kiwi.com",
                "min_price_usd": 131,
                "tickets_count": 1
            },
            {
                "name": "Авиасейлс",
                "min_price_usd": 148,
                "tickets_count": 1
            }
        ],
        "airports": {
            "departure": [
                {
                    "iata": "CMN",
                    "name": "Mohamed V International Airport",
                    "iata_type": "airport",
                    "time_zone": "Africa/Casablanca"
                }
            ],
            "arrival": [
                {
                    "iata": "OPO",
                    "name": "Porto Airport",
                    "iata_type": "airport",
                    "time_zone": "Europe/Lisbon"
                }
            ]
        },
        "html_url": "https://cityvator.com/en/cmn-opo/",
        "api_urls": {
            "self": "https://cityvator.com/api/routes/cmn-opo",
            "qa": "https://cityvator.com/api/qa/route/cmn-opo",
            "compare": "https://cityvator.com/api/compare/cmn-opo-vs-"
        },
        "updated_at": "2026-10-23 06:38:12"
    },
    "meta": {
        "lang": "en",
        "currency": "USD",
        "requested_at": "2026-11-15T06:58:50+03:00",
        "powered_by": "Cityvator",
        "source": "https://cityvator.com",
        "license": "CC-BY-4.0",
        "attribution": "Data source: Cityvator (https://cityvator.com)"
    }
}