{
  "openapi": "3.0.1",
  "info": {
    "title": "True Cost of Flying — Baggage Fee Scraper",
    "description": "Find out what a Kiwi.com fare really costs once you add a bag. Every result comes back with its included allowance, the price of each extra cabin and checked bag, the weight and size limits, and a combined fare-plus-bags total ranked cheapest first. 37 currencies, no account needed.",
    "version": "0.0",
    "x-build-id": "t7AFm29v5sB15BFbJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apt_marble~true-cost-baggage-fee-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apt_marble-true-cost-baggage-fee-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/apt_marble~true-cost-baggage-fee-scraper/runs": {
      "post": {
        "operationId": "runs-sync-apt_marble-true-cost-baggage-fee-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/apt_marble~true-cost-baggage-fee-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-apt_marble-true-cost-baggage-fee-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "origins",
          "destinations",
          "departureDates"
        ],
        "properties": {
          "origins": {
            "title": "Departure places",
            "type": "array",
            "description": "Where the trip starts. Use airport codes (JFK, LHR), city-wide codes (NYC, LON) or plain names (\"London Heathrow\", \"Oslo\"). Add several to compare departure points in one run.",
            "items": {
              "type": "string"
            }
          },
          "destinations": {
            "title": "Arrival places",
            "type": "array",
            "description": "Where the trip ends. Use airport codes (LAX, CDG), city-wide codes (PAR, MIL) or plain names (\"Los Angeles\", \"Nice\"). Add several to compare destinations in one run.",
            "items": {
              "type": "string"
            }
          },
          "tripType": {
            "title": "Trip type",
            "enum": [
              "oneway",
              "return"
            ],
            "type": "string",
            "description": "One-way, or a return trip. A return trip needs at least one return date.",
            "default": "oneway"
          },
          "departureDates": {
            "title": "Departure dates",
            "type": "array",
            "description": "Outbound dates in YYYY-MM-DD form. Every date is searched separately, so three dates on one route means three searches. Dates in the past are skipped.",
            "items": {
              "type": "string"
            }
          },
          "returnDates": {
            "title": "Return dates",
            "type": "array",
            "description": "Return dates in YYYY-MM-DD form, for return trips only. Each one is paired with each departure date; pairs that come back before they leave are skipped.",
            "items": {
              "type": "string"
            }
          },
          "bagsToAdd": {
            "title": "Bags to price",
            "enum": [
              "none",
              "hand",
              "checked",
              "both"
            ],
            "type": "string",
            "description": "Which bags to add on top of every fare. The trip is always searched without bags first, so the fare and the bag fees stay separate and you can see both.",
            "default": "checked"
          },
          "handBagsToAdd": {
            "title": "Cabin bags (exact number)",
            "minimum": 0,
            "maximum": 2,
            "type": "integer",
            "description": "Optional. Overrides the choice above with an exact number of cabin bags to price. Leave empty to use the choice above."
          },
          "checkedBagsToAdd": {
            "title": "Checked bags (exact number)",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Optional. Overrides the choice above with an exact number of checked bags to price. Leave empty to use the choice above."
          },
          "cabinClass": {
            "title": "Cabin",
            "enum": [
              "ECONOMY",
              "PREMIUM_ECONOMY",
              "BUSINESS",
              "FIRST_CLASS"
            ],
            "type": "string",
            "description": "Travel class to search. Baggage allowances and fees differ sharply between cabins, so this changes the answer.",
            "default": "ECONOMY"
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Adult travellers. Fares and bag prices are for the whole party, exactly as the source prices them.",
            "default": 1
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Children aged 2 to 11 travelling in their own seat.",
            "default": 0
          },
          "infants": {
            "title": "Infants",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Infants under 2 travelling on an adult's lap. Cannot exceed the number of adults.",
            "default": 0
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "HUF",
              "RON",
              "JPY",
              "KRW",
              "SGD",
              "HKD",
              "INR",
              "AED",
              "BRL",
              "MXN",
              "ZAR",
              "TRY",
              "NZD",
              "ILS",
              "THB",
              "PHP",
              "MYR",
              "IDR",
              "SAR",
              "CLP",
              "COP",
              "UAH",
              "ISK",
              "RSD",
              "PEN",
              "TWD"
            ],
            "type": "string",
            "description": "The currency to price fares and bags in. Every row also records the currency it was actually served in, so you always know what a number means.",
            "default": "USD"
          },
          "market": {
            "title": "Market",
            "enum": [
              "US",
              "GB",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "CA",
              "AU",
              "IN",
              "AE",
              "SG",
              "JP",
              "BR",
              "MX",
              "PL",
              "SE",
              "CH",
              "IE",
              "ZA"
            ],
            "type": "string",
            "description": "The market the search is prepared for. Fares and availability differ between markets; the market you pick is recorded on every row.",
            "default": "US"
          },
          "maxResultsPerSearch": {
            "title": "Flights per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many itineraries to keep for each route and date, cheapest first. Each one can produce more than one row, because the same flight is often sold as several fare products.",
            "default": 30
          },
          "fareOptions": {
            "title": "Fare products per flight",
            "enum": [
              "all",
              "cheapest"
            ],
            "type": "string",
            "description": "The same flight is usually sold as more than one fare product at different prices with the same baggage terms. Keep them all to compare, or keep only the cheapest.",
            "default": "all"
          },
          "maxStops": {
            "title": "Maximum stops",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Optional. Keep only trips with at most this many stops. Leave empty for no limit."
          },
          "includeAllInPrice": {
            "title": "Add the all-in price and ranking",
            "type": "boolean",
            "description": "Work out the combined fare-plus-bags total for every fare and rank each search cheapest first on that total. If you choose \"no bags\", the total is simply the fare and the extra all-in charge is not made. Turn it off to collect the published allowances and prices only.",
            "default": true
          },
          "onlyFaresWithBaggagePrices": {
            "title": "Only fares that publish baggage terms",
            "type": "boolean",
            "description": "Drop any fare whose baggage terms the source does not publish, instead of returning it with those columns empty.",
            "default": false
          },
          "excludeSelfTransferFares": {
            "title": "Exclude self-connected trips",
            "type": "boolean",
            "description": "Leave out trips stitched together from separate tickets, where a traveller may have to collect and re-check a bag at the connection.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}