{
  "openapi": "3.0.1",
  "info": {
    "title": "Live Aircraft Position Tracker",
    "description": "Track every aircraft flying right now over a region, a map box, an airport, a callsign or a tail number. One row per aircraft with position, altitude, speed, heading, climb rate, route, aircraft type, operator and the tail number most trackers hide.",
    "version": "0.0",
    "x-build-id": "ovLbY14Hq5tANh2p3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apt_marble~live-aircraft-position-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apt_marble-live-aircraft-position-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~live-aircraft-position-tracker/runs": {
      "post": {
        "operationId": "runs-sync-apt_marble-live-aircraft-position-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~live-aircraft-position-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-apt_marble-live-aircraft-position-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What do you want to track?",
            "enum": [
              "area",
              "airport",
              "callsign",
              "registration"
            ],
            "type": "string",
            "description": "Pick how the aircraft you want should be selected. Track everything flying over a map area, everything flying to or from one airport, one specific flight by its radio callsign, or one specific aeroplane by its tail number.",
            "default": "area"
          },
          "region": {
            "title": "Region",
            "enum": [
              "europe",
              "north_america",
              "south_america",
              "africa",
              "middle_east",
              "asia",
              "oceania",
              "north_atlantic",
              "world",
              "custom"
            ],
            "type": "string",
            "description": "Used when you track a map area. Choose a ready-made part of the world, or choose \"Custom box\" and set the four edges below. Larger regions are read as a grid of squares, because the source publishes only so many aircraft for any single square. A region that needs more squares than the square limit below allows is sampled — the squares that are read are spread evenly across the whole region and the summary reports the rest as not read. At the default square size Europe needs 8 squares and the whole world needs 162.",
            "default": "europe"
          },
          "north": {
            "title": "Custom box — northern edge",
            "minimum": -90,
            "maximum": 90,
            "type": "integer",
            "description": "Latitude of the top edge of your box, between -90 and 90. Only used when the region is set to \"Custom box\"."
          },
          "south": {
            "title": "Custom box — southern edge",
            "minimum": -90,
            "maximum": 90,
            "type": "integer",
            "description": "Latitude of the bottom edge of your box, between -90 and 90, and below the northern edge."
          },
          "west": {
            "title": "Custom box — western edge",
            "minimum": -180,
            "maximum": 180,
            "type": "integer",
            "description": "Longitude of the left edge of your box, between -180 and 180."
          },
          "east": {
            "title": "Custom box — eastern edge",
            "minimum": -180,
            "maximum": 180,
            "type": "integer",
            "description": "Longitude of the right edge of your box, between -180 and 180."
          },
          "airports": {
            "title": "Airports",
            "type": "array",
            "description": "Used when you track airports. Three-letter airport codes such as JFK, LHR or DXB. Every aircraft currently flying to or from each one is returned. Unknown codes are refused before the run starts rather than coming back as an empty result.",
            "items": {
              "type": "string"
            }
          },
          "callsigns": {
            "title": "Flight callsigns",
            "type": "array",
            "description": "Used when you track callsigns. The radio callsign a flight is flying under, such as BAW117 or UAL1. Only an exact match is returned — near-matches such as BAW1170 are counted in the run summary and never sold to you as your flight.",
            "items": {
              "type": "string"
            }
          },
          "registrations": {
            "title": "Tail numbers",
            "type": "array",
            "description": "Used when you track tail numbers. The registration painted on the aircraft, such as G-VNYL or N154QS. Returns that aeroplane's current position if it is flying.",
            "items": {
              "type": "string"
            }
          },
          "coverage": {
            "title": "Coverage",
            "enum": [
              "standard",
              "wide"
            ],
            "type": "string",
            "description": "Standard returns the fullest record for every aircraft: tail number, aircraft type, operator, route and position. Wide additionally sweeps a second, broader observation network so aircraft the first one does not report still appear — those extra aircraft carry position and callsign only, with the route and tail-number fields left empty rather than guessed. Wide applies to map areas and callsigns. Extra aircraft never take the place of a fuller record: every aircraft the first network reported is delivered first, and the second network only fills what is left of your row limit.",
            "default": "standard"
          },
          "includeOperatorDetail": {
            "title": "Add aircraft details (owner, manufacturer, model)",
            "type": "boolean",
            "description": "Look up the registered owner, the manufacturer and the full model name for every aircraft returned — the fields a plain position feed does not carry, and the only way to tell whose business jet you are looking at. Charged separately per aircraft; aircraft with nothing published are never charged for.",
            "default": false
          },
          "maxDetailLookups": {
            "title": "Maximum aircraft to add details for",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "A ceiling on the extra detail work, so a broad run cannot cost more than you expect. Set it to the number of aircraft whose owner and model you actually need.",
            "default": 250
          },
          "includeGroundAircraft": {
            "title": "Include aircraft on the ground",
            "type": "boolean",
            "description": "Keep aircraft that are taxiing or parked at a stand as well as those in the air. Turn this off for airborne traffic only.",
            "default": true
          },
          "minAltitudeFt": {
            "title": "Lowest altitude to keep",
            "minimum": 0,
            "maximum": 80000,
            "type": "integer",
            "description": "Leave empty for no lower limit. Set, for example, 20000 to keep only aircraft at cruise. Aircraft whose altitude is not published are dropped when a limit is set, never treated as zero."
          },
          "maxAltitudeFt": {
            "title": "Highest altitude to keep",
            "minimum": 0,
            "maximum": 80000,
            "type": "integer",
            "description": "Leave empty for no upper limit. Set, for example, 10000 to keep only aircraft in the approach and departure phase."
          },
          "airlines": {
            "title": "Only these operators",
            "type": "array",
            "description": "Leave empty for every operator. Three-letter operator codes such as BAW (British Airways), UAL (United) or DLH (Lufthansa).",
            "items": {
              "type": "string"
            }
          },
          "aircraftTypes": {
            "title": "Only these aircraft types",
            "type": "array",
            "description": "Leave empty for every type. Short type codes such as A320, B789 or E75L.",
            "items": {
              "type": "string"
            }
          },
          "maxRows": {
            "title": "Maximum aircraft to return",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "The run stops adding aircraft once it reaches this number. This is the main control on what a run costs you.",
            "default": 500
          },
          "tileSizeDegrees": {
            "title": "Map square size",
            "minimum": 2,
            "maximum": 60,
            "type": "integer",
            "description": "Used when you track a map area. The source publishes only so many aircraft for a single square, so a busy square comes back truncated. Smaller squares mean more complete coverage and a longer run; 20 is a good balance and 5 to 10 suits busy airspace such as western Europe.",
            "default": 20
          },
          "maxAreaTiles": {
            "title": "Maximum map squares to read",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "A ceiling on how many squares are actually read, so a large region with a small square size cannot run away with your run. If the region needs more squares than this, the run reads this many spread evenly across the whole region and the summary reports the rest as not read — nothing is claimed about a square that was not read. Europe needs 8 squares at the default square size; the whole world needs 162.",
            "default": 12
          },
          "parallelReads": {
            "title": "How much to do at once",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Higher finishes sooner; lower is gentler on the source and slightly more reliable. Three suits almost every run.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}