{
  "openapi": "3.0.1",
  "info": {
    "title": "Flightpoints Award Flights Scraper: Miles, Taxes",
    "description": "Search public award availability from Flightpoints for one main route on a date or bounded date window, with optional extra routes. Export structured itineraries with miles, taxes, seats, cabin details, loyalty programs, flight segments, and booking links when available.",
    "version": "2.0",
    "x-build-id": "W8XRNUmW07A19zpmE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/maximedupre~award-flights-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-maximedupre-award-flights-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/maximedupre~award-flights-scraper/runs": {
      "post": {
        "operationId": "runs-sync-maximedupre-award-flights-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/maximedupre~award-flights-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-maximedupre-award-flights-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": [
          "origin",
          "destination",
          "departureDate"
        ],
        "properties": {
          "origin": {
            "title": "Origin airport",
            "pattern": "^[A-Za-z]{3}$",
            "maxLength": 3,
            "type": "string",
            "description": "Three-letter IATA code for the departure airport."
          },
          "destination": {
            "title": "Destination airport",
            "pattern": "^[A-Za-z]{3}$",
            "maxLength": 3,
            "type": "string",
            "description": "Three-letter IATA code for the arrival airport."
          },
          "departureDate": {
            "title": "Departure date",
            "type": "string",
            "description": "Departure date for the main route, used as a one-day search when Start date and End date are empty. When Start date is empty and End date is set, the search covers the dates from the earlier of this date and End date through the later one, but no later than 60 days after the earlier date. When Start date is set, the search uses Start date and End date instead."
          },
          "startDate": {
            "title": "Start date",
            "type": "string",
            "description": "Optional first departure date in the search window."
          },
          "endDate": {
            "title": "End date",
            "type": "string",
            "description": "Optional last departure date in the search window. If it is earlier than Start date, or earlier than Departure date when Start date is empty, the two dates swap. The window ends no later than 60 days after the first date searched."
          },
          "additionalRoutes": {
            "title": "Additional routes",
            "type": "array",
            "description": "Optional extra routes to search in this same run. Each route needs its own origin, destination, and departure date. Leave empty to search only the main route.",
            "items": {
              "type": "object",
              "required": [
                "origin",
                "destination",
                "departureDate"
              ],
              "properties": {
                "origin": {
                  "title": "Origin airport",
                  "type": "string",
                  "description": "Three-letter IATA code for the departure airport.",
                  "maxLength": 3,
                  "pattern": "^[A-Za-z]{3}$"
                },
                "destination": {
                  "title": "Destination airport",
                  "type": "string",
                  "description": "Three-letter IATA code for the arrival airport.",
                  "maxLength": 3,
                  "pattern": "^[A-Za-z]{3}$"
                },
                "departureDate": {
                  "title": "Departure date",
                  "type": "string",
                  "description": "Departure date for this route. Start date and End date do not apply to additional routes.",
                  "dateType": "absolute",
                  "editor": "datepicker"
                }
              }
            }
          },
          "cabin": {
            "title": "Cabin filter",
            "enum": [
              "",
              "economy",
              "premiumEconomy",
              "business",
              "first"
            ],
            "type": "string",
            "description": "Keep itineraries with availability in the selected cabin."
          },
          "maxMiles": {
            "title": "Maximum miles",
            "minimum": 1,
            "type": "integer",
            "description": "Keep itineraries whose matching cabin award price is at or below this amount."
          },
          "maxCashTaxes": {
            "title": "Maximum cash taxes",
            "minimum": 0,
            "type": "number",
            "description": "Keep itineraries whose cash taxes or surcharges are at or below this amount."
          },
          "minSeats": {
            "title": "Minimum award seats",
            "minimum": 1,
            "type": "integer",
            "description": "Keep itineraries with at least this many available award seats."
          },
          "nonstop": {
            "title": "Nonstop only",
            "type": "boolean",
            "description": "Keep only itineraries with no connections."
          },
          "sortBy": {
            "title": "Prioritize cabin",
            "enum": [
              "",
              "economy",
              "premiumEconomy",
              "business",
              "first"
            ],
            "type": "string",
            "description": "Prefer itineraries with availability in this cabin before saving rows. Each batch of results is sorted on its own, so matches in later batches do not move to the top."
          },
          "issuers": {
            "title": "Redemption program codes",
            "type": "array",
            "description": "Codes for the programs to include, such as CX for Cathay Pacific Asia Miles. Enter codes, not program names. Leave empty to include all programs. This filter checks the loyalty program, not the airline that flies the flight. If no award flights match these codes, the run returns no rows. If FlightPoints skips the search or results do not load in time, the run logs a warning, so zero rows can also mean the search did not run or finish. The full code list is published in the [FlightPoints program catalog](https://api.flightpoints.com/flights/program).",
            "items": {
              "type": "string"
            }
          },
          "operatingAirlines": {
            "title": "Operating airlines",
            "type": "array",
            "description": "Airline codes to include, such as CX for Cathay Pacific. This setting is not applied yet, so results include flights from any operating airline.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Maximum itineraries",
            "minimum": 1,
            "type": "integer",
            "description": "Optional stop after this many individual award flight itineraries. Leave it empty to return all available results until FlightPoints has no more results or the search ends early."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}