{
  "openapi": "3.0.1",
  "info": {
    "title": "Airline Award Seat Scraper API – Live Miles, Taxes & Seats Left",
    "description": "Search live award flights and award seat availability on Alaska Airlines Atmos Rewards (ex Mileage Plan), plus partner awards on JAL, American, Qantas and Cathay. Route and dates in; miles, taxes, seats left, flights and booking link out. No login. First 200 results a month free.",
    "version": "0.2",
    "x-build-id": "hZQpfCBQyAEnkTzxn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/k-data-lab~airline-award-seat-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-k-data-lab-airline-award-seat-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/k-data-lab~airline-award-seat-scraper/runs": {
      "post": {
        "operationId": "runs-sync-k-data-lab-airline-award-seat-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/k-data-lab~airline-award-seat-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-k-data-lab-airline-award-seat-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"
        ],
        "properties": {
          "origins": {
            "title": "From (airports)",
            "type": "array",
            "description": "Where the flight departs. Use 3-letter IATA airport codes (SEA, LAX, JFK, HNL, ICN), metro codes (NYC, TYO, LON) or city names (Tokyo, New York); metros expand to their airports. Every origin is searched against every destination.",
            "items": {
              "type": "string"
            }
          },
          "destinations": {
            "title": "To (airports)",
            "type": "array",
            "description": "Where the flight arrives. Same format as origins: airport codes (JFK, NRT, SYD, LHR, DOH), metro codes (TYO = NRT + HND) or city names (Tokyo).",
            "items": {
              "type": "string"
            }
          },
          "dateFrom": {
            "title": "Departure date from",
            "type": "string",
            "description": "First departure date: YYYY-MM-DD, or days from today such as +30 (best for scheduled runs). Empty = 30 days from today. The airline sells awards about 11 months ahead."
          },
          "dateTo": {
            "title": "Departure date to",
            "type": "string",
            "description": "Last departure date (inclusive): YYYY-MM-DD or +N days. Empty = same day as dateFrom. Up to 120 days per run; every day is searched live. One date works too."
          },
          "cabins": {
            "title": "Cabins",
            "type": "array",
            "description": "Keep only these cabins: economy, premium (premium economy), business, first. Empty = all cabins. On Alaska domestic flights 'first' is the domestic First Class cabin.",
            "items": {
              "type": "string",
              "enum": [
                "economy",
                "premium",
                "business",
                "first"
              ],
              "enumTitles": [
                "Economy",
                "Premium economy",
                "Business",
                "First"
              ]
            },
            "default": []
          },
          "passengers": {
            "title": "Passengers (adults)",
            "minimum": 1,
            "maximum": 7,
            "type": "integer",
            "description": "Adults travelling together (1–7). With 2+ only options with at least that many award seats are kept.",
            "default": 1
          },
          "programs": {
            "title": "Loyalty programs",
            "type": "array",
            "description": "Programs to search live. Today: Alaska Airlines Atmos Rewards (no login; also finds partner awards on American, JAL, Qantas, Cathay Pacific, Starlux, Hawaiian and others). The README lists every program we tested and why the others are not available yet.",
            "items": {
              "type": "string",
              "enum": [
                "atmos"
              ],
              "enumTitles": [
                "Alaska Airlines Atmos Rewards (no login)"
              ]
            },
            "default": [
              "atmos"
            ]
          },
          "outputMode": {
            "title": "Output",
            "enum": [
              "all",
              "cheapestPerCabinPerDay"
            ],
            "type": "string",
            "description": "'all' = every flight option per cabin; 'cheapestPerCabinPerDay' = only the lowest-points option per route, day and cabin (best for calendars and alerts, fewer results to pay for).",
            "default": "all"
          },
          "maxStops": {
            "title": "Max stops",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "0 = nonstop only, 1 = up to one connection. Empty = any."
          },
          "maxMiles": {
            "title": "Max points per passenger",
            "minimum": 0,
            "type": "integer",
            "description": "Drop options that cost more points than this per passenger, e.g. 60000. Empty = no limit."
          },
          "minSeats": {
            "title": "Min seats left",
            "minimum": 0,
            "maximum": 9,
            "type": "integer",
            "description": "Keep only options with at least this many award seats left. Defaults to the number of passengers."
          },
          "carriers": {
            "title": "Airlines (IATA codes)",
            "type": "array",
            "description": "Keep only itineraries flown or marketed by these airlines, e.g. JL (JAL), QF (Qantas), CX (Cathay), AA, HA, JX (Starlux). Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "excludeMixedCabin": {
            "title": "Exclude mixed-cabin itineraries",
            "type": "boolean",
            "description": "Drop options where part of the trip is in a lower cabin (e.g. business with an economy connection).",
            "default": false
          },
          "maxTaxes": {
            "title": "Max taxes and fees per passenger (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Drop options whose taxes and fees are above this amount in USD per passenger, e.g. 50. Useful for skipping long-haul partner awards with high surcharges. Empty = no limit."
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed seats (watch mode)",
            "type": "boolean",
            "description": "For scheduled alerts. Returns only options that are new, cheaper in points or have more seats left than the last run of this same search, marked with changeType. The first run returns every match and sets the baseline. The same origins, destinations, passengers, output mode and filters count as the same search, so relative dates such as +1 to +60 keep working.",
            "default": false
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many award options (rows). 0 = no limit.",
            "default": 1000
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Used only if the airline refuses our direct connection. The default Apify datacenter proxy is enough.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}