{
  "openapi": "3.0.1",
  "info": {
    "title": "Flight Status Tracker",
    "description": "Live status for any flight number or tail number: delay in minutes, gate, terminal, aircraft, and scheduled versus actual times. Every row also carries how that flight number has really performed over its recent operations. Up to 100 flights per run, no account needed.",
    "version": "0.0",
    "x-build-id": "4xr4x3CVdguz6xb4J"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apt_marble~flight-status-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apt_marble-flight-status-tracker",
        "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~flight-status-tracker/runs": {
      "post": {
        "operationId": "runs-sync-apt_marble-flight-status-tracker",
        "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~flight-status-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-apt_marble-flight-status-tracker",
        "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": [
          "flights"
        ],
        "properties": {
          "flights": {
            "title": "Flights",
            "type": "array",
            "description": "The flights to check. Use the flight number printed on a ticket — UA1, BA117, LH402, EK202 — or an aircraft registration such as N154QS, D-ABYT or B-6521. Spaces and hyphens are fine. Write a registration with its hyphen where it has one: B-6521 asks for that aircraft, while B6521 reads first as JetBlue flight 521. Up to 100 in one run.",
            "default": [
              "UA1"
            ],
            "items": {
              "type": "string"
            }
          },
          "date": {
            "title": "Date (optional)",
            "type": "string",
            "description": "Leave empty for the operation running now or next. Set a date as YYYY-MM-DD to get that day's operation instead. The recent record of a flight number usually reaches about ten days back and a couple of days forward; a date outside it is reported as not published, and the run tells you which dates are available."
          },
          "market": {
            "title": "Region",
            "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 regional edition asked for when a flight is checked, used identically on every check in a run. It is a preference the source is free to ignore — the wording of a free-text delay notice is the only thing it could change, and most of that is published in English whatever is asked for. It never changes a time, a number, a code or an airport: every time is given twice, once in UTC and once on the clock at the airport it happens at.",
            "default": "US"
          },
          "includeHistory": {
            "title": "Include the punctuality record",
            "type": "boolean",
            "description": "Attaches the recent operations of the same flight number — each with its scheduled and actual times, delay in minutes, and whether it was cancelled or diverted — plus an on-time percentage, an average delay and the best and worst arrival. The figures are computed over every operation the source published for that flight number, which can be more than are listed when the list is capped; the row states the count they used. It arrives together with the status, so it does not slow the run down.",
            "default": true
          },
          "maxHistoryLegs": {
            "title": "Recent operations to include",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "How many earlier operations of the flight number to LIST on each row, newest first. The source publishes roughly 8 to 30 of them depending on how often the flight runs; the on-time figures are computed over all of them whatever this is set to, and the row states the count they used.",
            "default": 25
          },
          "onTimeThresholdMinutes": {
            "title": "On-time cut-off",
            "minimum": 0,
            "maximum": 180,
            "type": "integer",
            "description": "How many minutes past the scheduled arrival still counts as on time when the on-time percentage is worked out. The industry standard is 15.",
            "default": 15
          },
          "includeTrack": {
            "title": "Include the flight path",
            "type": "boolean",
            "description": "Adds the positions the flight has actually been observed at, in order — time, latitude, longitude, altitude and speed — for drawing a map. It makes each row considerably larger.",
            "default": false
          },
          "maxTrackPoints": {
            "title": "Maximum positions per flight",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Upper limit on how many observed positions are attached when the flight path is switched on. Past that limit the most recent positions are kept, so the path always ends where the aircraft actually is, and the row states how many were published in total.",
            "default": 500
          },
          "includeRoute": {
            "title": "Include the planned route",
            "type": "boolean",
            "description": "Adds the route the crew filed, the planned cruising altitude and speed, the planned flight time and the planned fuel burn, where the source publishes them.",
            "default": false
          },
          "trackUntilLanded": {
            "title": "Keep watching until the flight lands",
            "type": "boolean",
            "description": "Instead of one status per flight, keep checking and publish a new row every time something a traveller would act on changes — the estimated time, the gate, the terminal, a departure, a landing, a cancellation or a diversion. Position changes alone never produce a row. Ignored when a date is set, because a past flight has already finished.",
            "default": false
          },
          "refreshIntervalSec": {
            "title": "Seconds between checks",
            "minimum": 30,
            "maximum": 900,
            "type": "integer",
            "description": "How long to wait between checks while watching a flight. Shorter means fresher updates and a longer run.",
            "default": 120
          },
          "maxTrackingMinutes": {
            "title": "Maximum minutes to watch each flight",
            "minimum": 1,
            "maximum": 720,
            "type": "integer",
            "description": "Stop watching a flight after this long, even if it has not landed. Watching also stops on its own as soon as the flight arrives, is cancelled or is diverted.",
            "default": 120
          },
          "maxUpdatesPerFlight": {
            "title": "Maximum updates per flight",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Upper limit on how many update rows a single watched flight can produce, so a long run stays predictable.",
            "default": 30
          },
          "maxRecordAgeDays": {
            "title": "Treat a record older than this as no record",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "If the newest thing the source publishes for a flight is older than this, the run reports that there is no current record instead of returning a stale one. Raise it if you are looking up flights that have not operated for a while.",
            "default": 30
          },
          "maxRows": {
            "title": "Maximum rows in total",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard ceiling on the rows this run produces across every flight, including update rows. Use it to keep a long watch predictable.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}