# OpenSky Network - Live Flight Tracker & ADS-B Data (`parseforge/opensky-network-scraper`) Actor

Scrape live global flight positions from OpenSky Network. Export real-time ADS-B data (ICAO24, callsign, country, coordinates, altitude, speed) as CSV, Excel, JSON, or XML.

- **URL**: https://apify.com/parseforge/opensky-network-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Travel, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $29.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🛰️ OpenSky Network - Live Flight Tracker & ADS-B Data Scraper

> 🚀 **Export live global flight positions in seconds.** Track **10,000+ airborne flights** in real time with ADS-B fields including callsign, altitude, speed, heading, and vertical rate. No API key, no login, no pipeline engineering.

> 🕒 **Last updated:** 2026-05-21 · **📊 12 fields** per record · **✈️ 10,000+ live flights** · **🌍 Global coverage** · **🛰️ ADS-B data**

The **OpenSky Network Flight Scraper** pulls live transponder data from the OpenSky Network public API and returns **12 fields per record**, including ICAO24 address, callsign, origin country, GPS coordinates, barometric altitude, ground speed, heading, and vertical rate. OpenSky is the world's largest open ADS-B network, maintained by a community of volunteers and academics since 2013.

The dataset covers **every airborne flight with an ADS-B or Mode S transponder**, updated every few seconds from a global network of receivers. This Actor makes that data downloadable as CSV, Excel, JSON, or XML with optional bounding-box and ground/air filtering. No parser engineering, no API authentication, no manual work.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Aviation analysts, flight-tracking app developers, GIS engineers, researchers, logistics teams, drone operators, data journalists | Live flight heatmaps, airspace monitoring, ADS-B data feeds, aviation research, drone proximity checks, geospatial dashboards |

---

### 📋 What the OpenSky Network Scraper does

Four core workflows in a single run:

- 🌍 **Worldwide snapshot.** Every transponder-equipped aircraft visible to the network right now.
- 📐 **Bounding-box filter.** Restrict to any lat/lon region - a country, a city, an airport corridor.
- 🛬 **Ground filter.** Return only aircraft currently on the ground (taxiing, parked, holding short).
- ⚡ **Speed run.** Set `maxItems` to a small number for instant dashboards with no data waste.

Each record includes the ICAO24 transponder address, callsign, country of registration, GPS coordinates, barometric altitude, speed, heading, vertical rate, and a direct link to the aircraft's profile on the OpenSky Network website.

> 💡 **Why it matters:** building your own ADS-B data pipeline means managing WebSocket streams, receiver networks, and state-vector parsing. This Actor skips all of that. One click, one dataset, every live flight on the planet.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded live flight dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td><code>minLatitude</code></td><td>number</td><td><code>null</code></td><td>Southern boundary of the bounding box (-90 to 90). All four bbox fields must be set together.</td></tr>
<tr><td><code>maxLatitude</code></td><td>number</td><td><code>null</code></td><td>Northern boundary of the bounding box (-90 to 90).</td></tr>
<tr><td><code>minLongitude</code></td><td>number</td><td><code>null</code></td><td>Western boundary of the bounding box (-180 to 180).</td></tr>
<tr><td><code>maxLongitude</code></td><td>number</td><td><code>null</code></td><td>Eastern boundary of the bounding box (-180 to 180).</td></tr>
<tr><td><code>onGroundOnly</code></td><td>boolean</td><td><code>false</code></td><td>When <code>true</code>, returns only aircraft currently on the ground.</td></tr>
</tbody>
</table>

**Example: 100 live flights over Western Europe.**

```json
{
    "maxItems": 100,
    "minLatitude": 36,
    "maxLatitude": 55,
    "minLongitude": -10,
    "maxLongitude": 25
}
````

**Example: all aircraft on the ground at global airports (up to 1,000).**

```json
{
    "maxItems": 1000,
    "onGroundOnly": true
}
```

> ⚠️ **Good to Know:** the OpenSky Network relies on volunteer-operated receivers. Coverage is strongest in Europe and North America. Remote oceanic regions may have gaps. Position accuracy depends on the density of nearby receivers and transponder type (ADS-B vs. Mode S vs. MLAT).

***

### 📊 Output

Each flight record contains **12 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 📡 `icao24` | string | `"a3b87f"` |
| ✈️ `callsign` | string | null | `"DAL1728"` |
| 🌍 `originCountry` | string | `"United States"` |
| 📍 `longitude` | number | null | `-86.894` |
| 📍 `latitude` | number | null | `37.1927` |
| ⛰️ `altitude` | number | null | `10668` |
| 🛬 `onGround` | boolean | `false` |
| 💨 `velocity` | number | null | `225.65` |
| 🧭 `heading` | number | null | `170.82` |
| ↕️ `verticalRate` | number | null | `0` |
| 🔗 `url` | string | `"https://opensky-network.org/aircraft-profile?icao24=a3b87f"` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-21T23:00:57.004Z"` |

#### 📦 Sample records

<details>
<summary><strong>✈️ Commercial airliner: Delta Air Lines DAL1728</strong></summary>

```json
{
    "icao24": "a3b87f",
    "callsign": "DAL1728",
    "originCountry": "United States",
    "longitude": -86.894,
    "latitude": 37.1927,
    "altitude": 10668,
    "onGround": false,
    "velocity": 225.65,
    "heading": 170.82,
    "verticalRate": 0,
    "url": "https://opensky-network.org/aircraft-profile?icao24=a3b87f",
    "scrapedAt": "2026-05-21T23:00:57.004Z"
}
```

</details>

<details>
<summary><strong>🛩️ Business jet: EJA582 (NetJets)</strong></summary>

```json
{
    "icao24": "a77ec5",
    "callsign": "EJA582",
    "originCountry": "United States",
    "longitude": -121.9107,
    "latitude": 37.5913,
    "altitude": 2567.94,
    "onGround": false,
    "velocity": 124.58,
    "heading": 131.99,
    "verticalRate": -7.8,
    "url": "https://opensky-network.org/aircraft-profile?icao24=a77ec5",
    "scrapedAt": "2026-05-21T23:00:57.004Z"
}
```

</details>

<details>
<summary><strong>🌎 International flight: LPE2136 over South America</strong></summary>

```json
{
    "icao24": "e8027e",
    "callsign": "LPE2136",
    "originCountry": "Chile",
    "longitude": -78.1051,
    "latitude": -10.0033,
    "altitude": 10058.4,
    "onGround": false,
    "velocity": 226.4,
    "heading": 154.13,
    "verticalRate": 0,
    "url": "https://opensky-network.org/aircraft-profile?icao24=e8027e",
    "scrapedAt": "2026-05-21T23:00:57.004Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🌍 | **Global coverage.** Every ADS-B and Mode S transponder visible to 6,000+ OpenSky receivers worldwide. |
| ⚡ | **Real-time data.** State vectors updated every few seconds - not cached, not delayed. |
| 🎯 | **Bounding-box filtering.** Scope to a continent, country, city, or airport corridor in a single input. |
| 📐 | **Ground/air split.** Separate parked and taxiing aircraft from airborne traffic with one checkbox. |
| 🔖 | **ICAO24 cross-reference.** The 24-bit hex address links to FAA registry, Flightradar24, and ADS-B Exchange. |
| 🚫 | **No authentication.** Works with the OpenSky public API. No account, no API key, no rate-limit negotiation. |
| 🔁 | **Always live.** Every run fetches the current state vector snapshot, so your dataset is never stale. |

> 📊 ADS-B data is the backbone of modern air traffic analytics - used by regulators, insurers, researchers, and safety systems worldwide.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ OpenSky Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **10,000+ live flights** worldwide | **Live per run** | bbox, ground/air, maxItems | ⚡ 2 min |
| OpenSky REST API (DIY) | Free with rate limits | Same | Same | Same params | 🐢 Hours to set up |
| Flightradar24 API | $499+/month | Commercial only | Streaming | Many | ⏳ Days + approval |
| ADS-B Exchange API | $100+/month | Full global | Streaming | Many | ⏳ Days + approval |
| Manual CSV exports | Free | Partial, historical | Manually triggered | None | 🕒 Variable |

Pick this Actor when you want live global coverage, zero infrastructure, and results in minutes rather than days.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the OpenSky Network Flight Scraper page on the Apify Store.
3. 🎯 **Set input.** Enter a bounding box for a region, toggle ground-only, and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your live flight snapshot.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **2-3 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### ✈️ Aviation Analytics & Research

- Density heatmaps by region, country, or airspace
- Fleet tracking for airlines with known ICAO24 codes
- Historical snapshot archiving for before/after comparisons
- ADS-B coverage gap studies for receiver placement

</td>
<td width="50%" valign="top">

#### 🗺️ GIS, Mapping & Visualization

- Live flight layers for Leaflet, Mapbox, Deck.gl, and Kepler
- Airspace corridor density visualization for planners
- Bounding-box snapshots for regional airspace studies
- Airport arrival/departure traffic patterns over time

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 🚁 Drone & Logistics Operations

- Pre-flight airspace awareness by bounding box
- Ground vehicle proximity to taxiing aircraft
- Altitude clearance checks before drone launches
- Input data for BVLOS risk assessment tools

</td>
<td width="50%" valign="top">

#### 📰 Journalism & Intelligence

- Tracking government or private jet movements
- Verifying aircraft presence at specific coordinates
- Enriching investigative datasets with registration lookups
- Cross-referencing callsigns with publicly reported routes

</td>
</tr>
</table>

***

### 🔌 Automating OpenSky Network Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Every 5 minutes, hourly, or daily snapshots build a time-series of global air traffic without writing a single line of infrastructure code.

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same live flight records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Air traffic network topology studies for transport papers
- Geospatial movement datasets for ML coursework
- Reproducible ADS-B snapshots for peer-reviewed research
- Coverage analysis of open receiver networks

</td>
<td width="50%">

#### 🎨 Personal and creative

- Personal flight dashboards and travel trackers
- Airport spotting apps showing nearby aircraft
- Visualizations for portfolio demos and side projects
- Real-time data art installations with live flight feeds

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Search-and-rescue support with live aircraft coordinates
- Civic transparency tools tracking government aviation
- Community ADS-B receiver coverage improvement
- Investigative journalism on charter and private flights

</td>
<td width="50%">

#### 🧪 Experimentation

- Train aircraft-classification or trajectory ML models
- Prototype airspace management tools with real-time data
- Test aviation dashboard concepts without a streaming API
- Validate geospatial indexing with live coordinate feeds

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20OpenSky%20Network%20Flight%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20OpenSky%20Network%20Flight%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20OpenSky%20Network%20Flight%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20OpenSky%20Network%20Flight%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

The Actor calls the OpenSky Network public REST API, which aggregates live ADS-B and Mode S transponder signals from 6,000+ volunteer-operated ground stations. The raw state vector array is parsed and emitted as a structured record per aircraft. No browser automation, no authentication, no setup.

#### 📏 How accurate is the position data?

Position accuracy depends on the density and proximity of nearby OpenSky receivers. Aircraft in densely covered regions (Central Europe, Northeast USA) are typically accurate to within 50-200 meters. Oceanic or remote regions may have gaps or stale positions from the last MLAT fix.

#### 🔁 How often is the data updated?

OpenSky updates state vectors every 5-10 seconds from receiver feeds. Every time you run this Actor you get a fresh point-in-time snapshot of current global air traffic.

#### 🌊 Does it cover oceanic flights?

Partially. Oceanic coverage depends on satellite-enabled receivers. The North Atlantic corridor and major Pacific routes have growing coverage, but gaps remain over remote ocean stretches not covered by land-based receivers.

#### 📐 How do I filter to a specific country or region?

Use the bounding box inputs (`minLatitude`, `maxLatitude`, `minLongitude`, `maxLongitude`). For example, to cover the contiguous United States use lat 24-50, lon -125 to -65. For Western Europe use lat 36-55, lon -10 to 25.

#### 🛬 Can I get only ground traffic?

Yes. Toggle `onGroundOnly` to `true` to filter to aircraft currently on the ground - taxiing, parked, or holding short of a runway.

#### ⏰ Can I schedule regular snapshots?

Yes. Use Apify Schedules to run this Actor on any cron interval. Every 5 minutes gives you a time-series of air traffic density without any streaming infrastructure.

#### 🔗 What does the `icao24` field represent?

ICAO24 is the unique 24-bit hexadecimal Mode S transponder address assigned to every registered aircraft. It is the primary key for cross-referencing with FAA registry data, Flightradar24, ADS-B Exchange, and aviation databases worldwide.

#### 💼 Can I use this data commercially?

Yes. The OpenSky Network data is published for research and educational use. Review the [OpenSky Network terms of use](https://opensky-network.org/about/terms-of-use) for your specific commercial context before building a production product on top of it.

#### 💳 Do I need a paid Apify plan to use this Actor?

No. The free Apify plan gives you 10 records per run for testing and previewing. A paid plan lifts the limit to 1,000,000 records per run and unlocks scheduling and higher concurrency.

#### 🔁 What happens if a run fails?

The Actor retries the API up to three times with backoff. If all retries fail, a diagnostic record with an error message is pushed to the dataset so you can see what happened without digging through logs.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

OpenSky Network Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe flight data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh flight data into your product backend, or alert your team in Slack when a flight of interest enters a bounding box.

***

### 🔗 Recommended Actors

| Actor | Description |
|---|---|
| [**✈️ OurAirports Global Airport Database Scraper**](https://apify.com/parseforge/ourairports-scraper) | 85,000+ airports, heliports, and airfields worldwide with ICAO/IATA codes |
| [**✈️ FAA Aircraft Registry Scraper**](https://apify.com/parseforge/faa-aircraft-registry-scraper) | U.S. civil aircraft registrations and owners - cross-reference ICAO24 addresses |
| [**🗺️ Nominatim OSM Scraper**](https://apify.com/parseforge/nominatim-osm-scraper) - Geocode coordinates to addresses via OpenStreetMap |
| [**🏢 FDIC Bank Scraper**](https://apify.com/parseforge/fdic-bank-scraper) | U.S. bank locations and financial data for logistics enrichment |
| [**📊 EPA AQS Air Quality Scraper**](https://apify.com/parseforge/epa-aqs-air-quality-scraper) | EPA air quality monitoring data for environmental correlation studies |

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more open-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the OpenSky Network, its contributors, or any aviation authority. All trademarks mentioned are the property of their respective owners. Only publicly available open ADS-B data from the OpenSky Network public API is collected.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `minLatitude` (type: `number`):

Southern boundary of the bounding box (degrees, -90 to 90). Leave empty to get global flights.

## `maxLatitude` (type: `number`):

Northern boundary of the bounding box (degrees, -90 to 90).

## `minLongitude` (type: `number`):

Western boundary of the bounding box (degrees, -180 to 180).

## `maxLongitude` (type: `number`):

Eastern boundary of the bounding box (degrees, -180 to 180).

## `onGroundOnly` (type: `boolean`):

When enabled, returns only aircraft currently on the ground.

## Actor input object example

```json
{
  "maxItems": 10,
  "onGroundOnly": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/opensky-network-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/opensky-network-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/opensky-network-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/opensky-network-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "OpenSky Network - Live Flight Tracker & ADS-B Data",
        "description": "Scrape live global flight positions from OpenSky Network. Export real-time ADS-B data (ICAO24, callsign, country, coordinates, altitude, speed) as CSV, Excel, JSON, or XML.",
        "version": "0.1",
        "x-build-id": "24qvh5VBHFIaTc0OH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~opensky-network-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-opensky-network-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/parseforge~opensky-network-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-opensky-network-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/parseforge~opensky-network-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-opensky-network-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",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "minLatitude": {
                        "title": "Min Latitude",
                        "minimum": -90,
                        "maximum": 90,
                        "type": "number",
                        "description": "Southern boundary of the bounding box (degrees, -90 to 90). Leave empty to get global flights."
                    },
                    "maxLatitude": {
                        "title": "Max Latitude",
                        "minimum": -90,
                        "maximum": 90,
                        "type": "number",
                        "description": "Northern boundary of the bounding box (degrees, -90 to 90)."
                    },
                    "minLongitude": {
                        "title": "Min Longitude",
                        "minimum": -180,
                        "maximum": 180,
                        "type": "number",
                        "description": "Western boundary of the bounding box (degrees, -180 to 180)."
                    },
                    "maxLongitude": {
                        "title": "Max Longitude",
                        "minimum": -180,
                        "maximum": 180,
                        "type": "number",
                        "description": "Eastern boundary of the bounding box (degrees, -180 to 180)."
                    },
                    "onGroundOnly": {
                        "title": "On Ground Only",
                        "type": "boolean",
                        "description": "When enabled, returns only aircraft currently on the ground.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
